diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 053a08da..815e0059 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,16 +1,16 @@
-name: Power Advantage 1.16 CI
+name: basePower 1.17 CI
on:
push:
- branches: [master-1.16.5, 'feature/**']
+ branches: [master-1.17.1, 'feature/**']
pull_request:
- branches: [master-1.16.5]
+ branches: [master-1.17.1]
permissions:
contents: read
concurrency:
- group: poweradvantage-1.16-${{ github.workflow }}-${{ github.ref }}
+ group: poweradvantage-1.17-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
@@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
- ref: a113e5d767169189f0e35ade1e173a12d550b00e
+ ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Use the same source bytes on hosted and local dependency builds.
@@ -34,14 +34,19 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
- ref: 995f6cc4dd2d5eecc628a42e5c43fa5390c24bca
+ ref: 0deeeeecdbbc1fbcdecf910c59477de8efe164d7
path: .ci-dependencies/BaseMetals
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- - name: Install Java 8 toolchain
+ - name: Install Java 16 production toolchain
+ uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
+ with:
+ distribution: temurin
+ java-version: '16.0.2+7'
+ - name: Install Java 8 renamer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
@@ -55,7 +60,7 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
- echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
+ echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
@@ -70,8 +75,8 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
- osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.116051-deobf.jar"
- bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.1.116051-deobf.jar"
+ osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.117011-deobf.jar"
+ bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar"
test -f "$osjar" && test -f "$bmjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
@@ -85,20 +90,20 @@ jobs:
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
- name: PowerAdvantage-1.16.5-${{ github.sha }}
+ name: PowerAdvantage-1.17.1-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
- build/libs/PowerAdvantage-2.4.7.116051.jar
- build/libs/PowerAdvantage-2.4.7.116051-sources.jar
- build/libs/PowerAdvantage-2.4.7.116051-javadoc.jar
+ build/libs/basePower-2.4.9.117011.jar
+ build/libs/basePower-2.4.9.117011-sources.jar
+ build/libs/basePower-2.4.9.117011-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
- name: PowerAdvantage-1.16.5-diagnostics-${{ github.sha }}
+ name: PowerAdvantage-1.17.1-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 8baf3fa0..b8afd74d 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -2,9 +2,9 @@ name: CodeQL
on:
push:
- branches: [master-1.16.5, 'feature/**']
+ branches: [master-1.17.1, 'feature/**']
pull_request:
- branches: [master-1.16.5]
+ branches: [master-1.17.1]
schedule:
- cron: '47 7 * * 4'
@@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
- ref: a113e5d767169189f0e35ade1e173a12d550b00e
+ ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
path: .ci-dependencies/OreSpawn
- name: Use canonical LF dependency inputs
# Use the same source bytes on hosted and local dependency builds.
@@ -34,14 +34,19 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
- ref: 995f6cc4dd2d5eecc628a42e5c43fa5390c24bca
+ ref: 0deeeeecdbbc1fbcdecf910c59477de8efe164d7
path: .ci-dependencies/BaseMetals
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- - name: Install Java 8 toolchain
+ - name: Install Java 16 production toolchain
+ uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
+ with:
+ distribution: temurin
+ java-version: '16.0.2+7'
+ - name: Install Java 8 renamer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
@@ -55,7 +60,7 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
- echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
+ echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
@@ -70,8 +75,8 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
- echo "orespawn=$orespawn/build/libs-dev/OreSpawn-4.1.0.116051-deobf.jar" >> "$GITHUB_OUTPUT"
- echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.1.1.116051-deobf.jar" >> "$GITHUB_OUTPUT"
+ echo "orespawn=$orespawn/build/libs-dev/OreSpawn-4.1.0.117011-deobf.jar" >> "$GITHUB_OUTPUT"
+ echo "basemetals=$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar" >> "$GITHUB_OUTPUT"
- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
diff --git a/.github/workflows/release-on-tag.yml b/.github/workflows/release-on-tag.yml
index af9cd1ab..31febbbd 100644
--- a/.github/workflows/release-on-tag.yml
+++ b/.github/workflows/release-on-tag.yml
@@ -1,4 +1,4 @@
-name: Validate Power Advantage release tag
+name: Validate basePower release tag
on:
push:
@@ -16,7 +16,7 @@ concurrency:
jobs:
validate-release-tag:
name: Validate tag for manual release confirmation
- if: github.repository == 'MinecraftModDevelopmentMods/PowerAdvantage'
+ if: github.repository == 'MinecraftModDevelopmentMods/basePower'
runs-on: ubuntu-latest
timeout-minutes: 10
diff --git a/.github/workflows/validate-gradle-build.yml b/.github/workflows/validate-gradle-build.yml
index fc66575a..0bf04b84 100644
--- a/.github/workflows/validate-gradle-build.yml
+++ b/.github/workflows/validate-gradle-build.yml
@@ -3,11 +3,11 @@ name: Validate Gradle Wrapper
on:
push:
branches:
- - master-1.16.5
+ - master-1.17.1
- 'feature/**'
pull_request:
branches:
- - master-1.16.5
+ - master-1.17.1
permissions:
contents: read
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index cdbac601..463bdc95 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,3 +1,21 @@
+basePower 2.4.9.117011 (Minecraft 1.17.1)
+
+- Bring basePower to Minecraft 1.17.1 with one shared tab for the three mods.
+- Keep existing base* machines and map legacy Advantage blocks, items, fluids and saved state.
+- Carry old Advantage mod and data pack names forward when opening an existing world with the replacement mods installed.
+- Fix Eclipse refreshes when ForgeGradle reuses an existing launch.
+
+Power Advantage 2.4.8.117011 (Minecraft 1.17.1)
+
+- Move to Forge 37.1.1 and Java 16, keeping the existing block, item, fluid and saved-state names.
+- Use native block-entity factories and tickers for machines and conveyors, retaining their saved position and facing.
+- Supply configured rubber and solder aliases through an additive server data pack instead of replacing vanilla tag readers.
+- Preserve legacy entity state in both terrain chunks and the separate 1.17 entity storage.
+- Use the 1.17 ingredient-predicate format so unrelated items do not unlock recipes.
+- Save machine timers, progress and externally supplied energy after an autosave, without sending extra comparator or client updates.
+- Remap old grass-path blocks/items and the berry-picking sound when loading older Forge registry snapshots.
+- Carry forward the finite-input, cold-restart, migration and rendered GUI checks; automated and manual acceptance remain separate.
+
Power Advantage 2.4.7.116051 (Minecraft 1.16.5)
- Charge energy sources only for what consumers accept, retaining rejected energy for the next machine.
diff --git a/README.md b/README.md
index 6d1db450..6f030dd5 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,13 @@
-# PowerAdvantage
+# basePower
-**Minecraft 1.16.5, version 2.4.7.116051. Source port candidate.**
+**Minecraft 1.17.1, version 2.4.9.117011. Local test candidate.**
-See the [1.16 port record](docs/1.16/PORT-STATUS.md) for current checks and remaining
-work. The accepted [1.15 test record](docs/1.15/CURRENT-QUALIFICATION.md) is retained
-as historical evidence, not a pass for this version. Manual 1.16 acceptance is
-still required.
+See the [1.17 port record](docs/1.17/PORT-STATUS.md) for this candidate's
+validation status. The retained 1.16 and earlier reports are historical evidence,
+not passes for 1.17. Manual testing follows the current automated qualification.
-The [test-suite review](docs/1.16/TEST-SUITE-AUDIT.md) separates operating checks
-from saved-state and presence checks. It records the remaining machine coverage
-gaps; a green build does not qualify every machine setup.
-
-The follow-up [machine operating checks](docs/1.16/OPERATING-TESTS.md) use finite
-inputs, real server ticks, blocked and starved controls, and full-process
-restarts. They check useful output and retained resources, not just animation
-or a rising progress counter.
-
-Power Advantage provides shared power, fluids, item transport and compatibility APIs for Steam Advantage and Electric Advantage.
+basePower continues DrCyano's Power Advantage. It provides shared power,
+fluids and item transport for baseSteam and baseElectric.
**Back up the entire world before upgrading. Test only disposable copies.**
The port retains existing registry names and legacy migration code. Upgrade tests
@@ -29,21 +20,20 @@ Recipe-book discovery now follows relevant ingredients. See the [all-Advantage m
The [manufacturing progression audit](docs/1.13/MANUFACTURING-PROGRESSION.md) traces survival parts from raw resources, including configured material aliases, processing, loot-only parts and automated restart checks.
-## Building Minecraft 1.16.5
+## Building Minecraft 1.17.1
-The `master-1.16.5` build uses Forge 36.2.34, official `1.16.5` mappings,
-MCP `20210115.111550`, ForgeGradle 7.0.34 and Gradle 9.6.1.
-Run Gradle with Java 17 and compile production code with Java 8. Mavenizer also
-needs Java 25. CI pins all three JDKs. Pass the installed homes using
-`-Porg.gradle.java.installations.paths=,,` and disable
+The `master-1.17.1` build uses Forge 37.1.1, official `1.17.1` mappings,
+MCP `20210706.113038`, ForgeGradle 7.0.34 and Gradle 9.6.1.
+Run Gradle with Java 17 and compile and run production code with Java 16. Mavenizer also
+needs Java 25. CI pins these JDKs and Java 8 for the legacy renamer. Pass the installed homes using
+`-Porg.gradle.java.installations.paths=,,,` and disable
automatic discovery and downloads for a reproducibility check.
-Build the pinned Base Metals `3.1.1.116051` and OreSpawn `4.1.0.116051` deobf jars first.
-The exact Base Metals source is
-`995f6cc4dd2d5eecc628a42e5c43fa5390c24bca`. CI builds that dependency first;
-the checksums and complete source pins are in `gradle.properties`.
+Build the pinned Base Metals `3.1.1.117011` and OreSpawn `4.1.0.117011` deobf jars first.
+Use Base Metals 3.1.1 for its 1.17.1 startup fix. The build pins the exact
+dependency source and checksums in `gradle.properties`.
-Then run from `D:\PowerAdvantage\PA116\PowerAdvantage`:
+Then run from the repository root:
```text
gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts writeReleaseChecksums verifyEclipseProductionClasspath
@@ -52,8 +42,8 @@ gradlew.bat clean check build javadoc verifyReleaseDependencies verifyReleaseArt
The default dependency jars are:
```text
-D:\BaseMetals\BaseMetals 116\BaseMetals\build\libs-dev\BaseMetals-3.1.1.116051-deobf.jar
-D:\MinecraftMineralogy\OS116\OreSpawn\build\libs-dev\OreSpawn-4.1.0.116051-deobf.jar
+D:\BaseMetals\BaseMetals 117\BaseMetals\build\libs-dev\BaseMetals-3.1.1.117011-deobf.jar
+D:\MinecraftMineralogy\OS117\OreSpawn\build\libs-dev\OreSpawn-4.1.0.117011-deobf.jar
```
Other layouts can pass `-PbaseMetalsDeobfJar=` and `-PoreSpawnDeobfJar=`.
@@ -75,40 +65,35 @@ Refresh the project in Eclipse, allow its Java build to finish, and launch the g
Eclipse copies production resources from `build/resources/main`, not directly from `src/main/resources`. This prevents its builder from overwriting the expanded `mods.toml` with raw `${version}` placeholders. After updating this setup, use **Gradle > Refresh Gradle Project**, then **Project > Clean** before relaunching. After editing resources or version properties, run `processResources` or refresh the Gradle project before the Eclipse build. See the [metadata regression notes](docs/1.13/ECLIPSE-METADATA.md).
-To prepare a combined client, build the Steam/Electric `2.2.8.116051` deobf jars,
+To prepare a combined client, build the baseSteam and baseElectric `2.2.10.117011` deobf jars,
run `gradlew.bat prepareCombinedEclipseLaunch`, refresh Eclipse, then launch
`runClientAllAdvantage.launch`. Inputs must match
-`test-rig/profiles/native116/dev-core.json`; alternative layouts can pass
+`test-rig/profiles/native117/dev-core.json`; alternative layouts can pass
`-PsteamAdvantageDeobfJar=` and `-PelectricAdvantageDeobfJar=`.
The ordinary `runClient.launch` remains Power-only. Both use the `run` directory;
preparing a launch does not copy, open or qualify a save.
-The local GUI corrections have separate input hashes, keeping the earlier machine
-test profiles unchanged. To prepare that combined preview, run
-`gradlew.bat prepareCombinedEclipseLaunch -PadvantageDevelopmentProfile=docs/1.16/gui-development-inputs.json`.
-See the [GUI checks](docs/1.16/GUI-CHECKS.md) for coverage and the repeatable command.
-
`check` and Eclipse preparation also run `verifyDevelopmentRuntimeArchives`,
which reads every development runtime jar entry and checks its size and CRC.
This catches damaged cached dependencies before the next test launch.
-Client-resource and recipe-book checks must use the exact 1.16 candidate. Manual
-visual and interaction acceptance remains separate.
-
-The migration test fixtures do not import restricted JDK internals. A plain ECJ
-batch compile does not apply Eclipse's JRE access rules automatically. After
-`eclipseClasspath` and `test`, run `tools/verification/Verify-EclipseCompilation.ps1`
-with `-Compiler `, `-Java17Home `, `-Java8Home ` and
-`-Evidence ` to compile fresh main/test classes with restricted
-references treated as errors, then run the tests on Java 8. Keep Eclipse's
-access-restriction checks enabled.
+Client-resource and recipe-book checks must use the exact 1.17 candidate.
+See the [client test instructions](test-rig/client-resources/README.md).
+Manual visual and interaction acceptance remains separate. The retained Java 8
+Eclipse compiler script is historical tooling, not a 1.17 verification command.
+Keep Eclipse's access-restriction checks enabled and use Java 16 for its project
+JRE and Minecraft launches.
+The [native Eclipse compiler check](tools/verification/native117/README.md)
+compiles fresh production and test outputs, then runs the complete unit-test
+inventory on Java 16 without replacing the built mod jars.
## Compatibility
-The implementation namespace remains `zone.moddev.mc.poweradvantage`, with the
-historical `cyano.poweradvantage.api` package retained. The port keeps registry,
-fluid, tile, NBT and provider identities. The current test record distinguishes
-machine preservation, actual operation and vanilla migration differences.
+The implementation namespace is `zone.moddev.mc.basepower`. The historical
+`cyano.poweradvantage.api` package remains available. The port keeps basePower's
+registry names and saved machine data and maps the older Power Advantage names.
+The test record distinguishes state preservation, real operation and changes
+made by Minecraft itself.
The upgrade path prepares stored items before vanilla flattening and converts
entities individually, so a mod entity cannot prevent a nearby pet's UUID and
@@ -118,13 +103,13 @@ silently discarded.
Legacy Forge swimming speed, name-tag distance, gravity and player reach use
their native registry names without discarding saved values or modifiers.
-The 1.16 port uses native dimension registry keys, tile save/load methods and
-matrix-based menus. Config-dependent material aliases are resolved during the
-server's native tag load and synchronized to clients. The shared pre-flattening
-migration hook remains necessary; its presence is not proof that an upgrade is safe.
+The port uses native dimension registry keys, block-entity factories and tickers,
+capabilities and menus. Config-dependent material aliases are additive server
+data-pack tags. The shared pre-flattening migration hook remains necessary;
+its presence is not proof that an upgrade is safe.
-The [legacy migration guide](docs/1.13/MIGRATION.md) and
-[Advantage Works rig](test-rig/README.md) describe the earlier protocols.
-The [1.16 status](docs/1.16/PORT-STATUS.md) tracks this port's qualification.
+The [legacy migration guide](docs/1.13/MIGRATION.md) describes the earlier protocols.
+Use the [native Advantage Works guide](test-rig/NATIVE117.md) for this checkout.
+The [1.17 status](docs/1.17/PORT-STATUS.md) tracks this port's qualification.
The historical 1.10 handbook remains on the [1.10.2 branch](https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/blob/master-1.10.2/docs/1.10/README.md).
diff --git a/build.gradle b/build.gradle
index 8447ced1..7633a2d9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,7 +17,7 @@ plugins {
group = project.mod_group
version = project.mod_version
-base.archivesName = 'PowerAdvantage'
+base.archivesName = 'basePower'
def versionParts = project.mod_version.toString().tokenize('.')
if (versionParts.size() != 4 || !versionParts.every { it ==~ /\d+/ }) {
@@ -45,7 +45,7 @@ ext.release_tag = project.mod_version
java {
toolchain {
- languageVersion = JavaLanguageVersion.of(8)
+ languageVersion = JavaLanguageVersion.of(16)
vendor = JvmVendorSpec.ADOPTIUM
}
withSourcesJar()
@@ -54,11 +54,11 @@ java {
tasks.withType(JavaCompile).configureEach {
javaCompiler = javaToolchains.compilerFor {
- languageVersion = JavaLanguageVersion.of(8)
+ languageVersion = JavaLanguageVersion.of(16)
vendor = JvmVendorSpec.ADOPTIUM
}
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_16
+ targetCompatibility = JavaVersion.VERSION_16
options.encoding = 'UTF-8'
options.compilerArgs.addAll(['-Xmaxerrs', '1000'])
}
@@ -96,15 +96,15 @@ minecraft {
def forgeRunModClassesDirectory = layout.buildDirectory.dir('forge-run-mod-classes/main')
def forgeMainOutputPath = forgeRunModClassesDirectory.get().asFile.absolutePath
def mainModClasses = "${mod_id}%%${forgeMainOutputPath}${File.pathSeparator}${mod_id}%%${forgeMainOutputPath}"
- def forge36RunTargets = [client: 'fmluserdevclient', server: 'fmluserdevserver', data: 'fmluserdevdata']
+ def forge37RunTargets = [client: 'fmluserdevclient', server: 'fmluserdevserver', data: 'fmluserdevdata']
runs {
configureEach {
- mainClass = 'net.minecraftforge.userdev.LaunchTesting'
+ jvmArgs '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED'
workingDir.convention layout.projectDirectory.dir(configuredRunDirectory)
systemProperty 'forge.logging.markers', 'REGISTRIES'
systemProperty 'forge.logging.console.level', 'info'
- mods { poweradvantage { source sourceSets.main } }
- environment 'target', forge36RunTargets[name]
+ mods { basepower { source sourceSets.main } }
+ environment 'target', forge37RunTargets[name]
environment 'MCP_MAPPINGS', "${mapping_channel}_${mapping_version}"
environment 'MCP_VERSION', mcp_version
environment 'FORGE_VERSION', forge_version
@@ -132,7 +132,7 @@ sourceSets.main.resources {
def forgeRunModClassesDirectory = layout.buildDirectory.dir('forge-run-mod-classes/main')
def prepareForgeRunModClasses = tasks.register('prepareForgeRunModClasses', Sync) {
group = 'ide'
- description = 'Merges classes and processed resources for Forge 1.16 launches.'
+ description = 'Merges classes and processed resources for Forge 1.17 launches.'
dependsOn tasks.named('classes')
from sourceSets.main.output
into forgeRunModClassesDirectory
@@ -167,11 +167,11 @@ repositories {
// The default paths mirror the local MMD checkout layout without tying the
// build to a drive letter. CI and other layouts can override either path.
def baseMetalsDeobfJar = file(providers.gradleProperty('baseMetalsDeobfJar')
- .getOrElse('../../../BaseMetals/BaseMetals 116/BaseMetals/build/libs-dev/'
- + 'BaseMetals-3.1.1.116051-deobf.jar'))
+ .getOrElse('../../../BaseMetals/BaseMetals 117/BaseMetals/build/libs-dev/'
+ + "BaseMetals-${project.basemetals_version}-deobf.jar"))
def oreSpawnDeobfJar = file(providers.gradleProperty('oreSpawnDeobfJar')
- .getOrElse('../../../MinecraftMineralogy/OS116/OreSpawn/build/libs-dev/'
- + 'OreSpawn-4.1.0.116051-deobf.jar'))
+ .getOrElse('../../../MinecraftMineralogy/OS117/OreSpawn/build/libs-dev/'
+ + 'OreSpawn-4.1.0.117011-deobf.jar'))
dependencies {
implementation minecraft.dependency(
@@ -182,6 +182,23 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
}
+def compileUnitBootstrap = tasks.register('compileUnitBootstrap', JavaCompile) {
+ source fileTree('test-rig/unit-bootstrap')
+ classpath = files()
+ destinationDirectory = layout.buildDirectory.dir('unit-bootstrap/classes')
+}
+def unitBootstrapJar = tasks.register('unitBootstrapJar', Jar) {
+ dependsOn compileUnitBootstrap
+ archiveFileName = 'forge-native-unit-bootstrap.jar'
+ destinationDirectory = layout.buildDirectory.dir('unit-bootstrap')
+ from compileUnitBootstrap.flatMap { it.destinationDirectory }
+ manifest.attributes('Premain-Class': 'zone.moddev.mc.advantageworks.unit.ForgeCapabilityBootstrap')
+}
+tasks.withType(Test).configureEach {
+ dependsOn unitBootstrapJar
+ doFirst { jvmArgs "-javaagent:${unitBootstrapJar.get().archiveFile.get().asFile}" }
+}
+
tasks.named('processResources', ProcessResources) {
filteringCharset = 'UTF-8'
inputs.properties([
@@ -316,46 +333,46 @@ tasks.register('verifyReleaseConfiguration') {
group = 'verification'
description = 'Validates release identity, target metadata, and optional integration policy.'
doLast {
- if (new JsonSlurper().parse(file('src/main/resources/pack.mcmeta')).pack.pack_format != 6) {
- throw new GradleException('Minecraft 1.16.5 resources must use pack format 6')
+ if (new JsonSlurper().parse(file('src/main/resources/pack.mcmeta')).pack.pack_format != 7) {
+ throw new GradleException('Minecraft 1.17.1 resources must use pack format 7')
}
- if (project.mod_version != '2.4.7.116051') {
+ if (project.mod_version != '2.4.9.117011') {
throw new GradleException("Unexpected PowerAdvantage release version: ${project.mod_version}")
}
- if (project.minecraft_version != '1.16.5'
- || project.forge_version != '36.2.34'
+ if (project.minecraft_version != '1.17.1'
+ || project.forge_version != '37.1.1'
|| project.mapping_channel != 'official'
- || project.mapping_version != '1.16.5'
- || project.mcp_version != '20210115.111550') {
+ || project.mapping_version != '1.17.1'
+ || project.mcp_version != '20210706.113038') {
throw new GradleException('Unexpected Minecraft, Forge, or mappings target')
}
if (project.loader_name != 'forge' || project.loader_code != '1'
- || project.java_version != '8'
- || project.java_toolchain_version != '8.0.502+7'
+ || project.java_version != '16'
+ || project.java_toolchain_version != '16.0.2+7'
|| project.gradle_java_version != '17') {
throw new GradleException('Unexpected release dispatcher target metadata')
}
- if (project.mod_id != 'poweradvantage'
- || project.group.toString() != 'zone.moddev.mc.poweradvantage'
- || base.archivesName.get() != 'PowerAdvantage'
- || project.curseforge_project_id != '240982') {
+ if (project.mod_id != 'basepower'
+ || project.group.toString() != 'zone.moddev.mc.basepower'
+ || base.archivesName.get() != 'basePower'
+ || project.curseforge_project_id != '1780140') {
throw new GradleException('Unexpected Forge, Maven, archive, or CurseForge identity')
}
if (project.cf_requirements != 'base-metals,mmd-orespawn'
|| project.cf_optionals != 'additional-loot-tables'
- || project.cf_versions != '1.16.5') {
+ || project.cf_versions != '1.17.1') {
throw new GradleException('Unexpected CurseForge dependency or game-version metadata')
}
- if (project.basemetals_version != '3.1.1.116051'
- || project.orespawn_version != '4.1.0.116051'
- || project.basemetals_source_commit != '995f6cc4dd2d5eecc628a42e5c43fa5390c24bca'
- || project.orespawn_source_commit != 'a113e5d767169189f0e35ade1e173a12d550b00e') {
+ if (project.basemetals_version != '3.1.1.117011'
+ || project.orespawn_version != '4.1.0.117011'
+ || project.basemetals_source_commit != '0deeeeecdbbc1fbcdecf910c59477de8efe164d7'
+ || project.orespawn_source_commit != 'b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf') {
throw new GradleException('Unexpected Base Metals or OreSpawn dependency identity')
}
String mainSource = file(
- 'src/main/java/zone/moddev/mc/poweradvantage/PowerAdvantage.java').getText('UTF-8')
- if (!mainSource.contains('MODID = "poweradvantage"')
- || !mainSource.contains('VERSION = "2.4.7.116051"')
+ 'src/main/java/zone/moddev/mc/basepower/PowerAdvantage.java').getText('UTF-8')
+ if (!mainSource.contains('MODID = "basepower"')
+ || !mainSource.contains('VERSION = "2.4.9.117011"')
|| !mainSource.contains('@Mod(PowerAdvantage.MODID)')) {
throw new GradleException('PowerAdvantage source identity changed')
}
@@ -363,7 +380,7 @@ tasks.register('verifyReleaseConfiguration') {
throw new GradleException('Legacy cyano.poweradvantage.api compatibility surface is missing')
}
String entitySource = file(
- 'src/main/java/zone/moddev/mc/poweradvantage/init/Entities.java').getText('UTF-8')
+ 'src/main/java/zone/moddev/mc/basepower/init/Entities.java').getText('UTF-8')
[
'tileentity.pipe_terminal', 'tileentity.fluid_drain',
'tileentity.fluid_discharge', 'tileentity.fluid_storage_tank',
@@ -377,7 +394,7 @@ tasks.register('verifyReleaseConfiguration') {
}
}
String modsToml = file('src/main/resources/META-INF/mods.toml').getText('UTF-8').replace('\r\n', '\n')
- ['modId="poweradvantage"', 'modId="basemetals"', 'modId="orespawn"',
+ ['modId="basepower"', 'modId="basemetals"', 'modId="orespawn"',
'mandatory=true'].each { required ->
if (!modsToml.contains(required)) {
throw new GradleException("Source mods.toml is missing ${required}")
@@ -407,9 +424,9 @@ tasks.register('verifyReleaseConfiguration') {
}
}
Map provider = new JsonSlurper().parse(file(
- 'src/main/resources/data/poweradvantage/orespawn/provider.json')) as Map
+ 'src/main/resources/data/basepower/orespawn/provider.json')) as Map
Map desertOil = provider.fluid_deposits[
- 'poweradvantage:fluid_deposit/desert_crude_oil'].dimensions['minecraft:overworld'] as Map
+ 'basepower:fluid_deposit/desert_crude_oil'].dimensions['minecraft:overworld'] as Map
if (desertOil.biome_dictionary != ['SANDY']
|| (desertOil.excluded_biome_dictionary as Set) != (['BEACH', 'MESA'] as Set)) {
throw new GradleException(
@@ -544,12 +561,12 @@ tasks.register('verifyReleaseArtifacts') {
List names = zip.entries().collect { it.name }
['META-INF/mods.toml', 'META-INF/accesstransformer.cfg', 'pack.mcmeta',
'coremods/poweradvantage_116_migration.js',
- 'zone/moddev/mc/poweradvantage/PowerAdvantage.class',
+ 'zone/moddev/mc/basepower/PowerAdvantage.class',
'cyano/poweradvantage/api/PoweredEntity.class',
'cyano/poweradvantage/api/fluid/FluidNetworkApi.class',
- 'assets/poweradvantage/lang/en_us.json',
- 'data/poweradvantage/recipes/fluid_drain.json',
- 'data/poweradvantage/advancements/recipes/sprocket_rod_normal.json'].each { required ->
+ 'assets/basepower/lang/en_us.json',
+ 'data/basepower/recipes/fluid_drain.json',
+ 'data/basepower/advancements/recipes/sprocket_rod_normal.json'].each { required ->
if (!names.contains(required)) {
throw new GradleException("Release jar is missing ${required}")
}
@@ -566,14 +583,12 @@ tasks.register('verifyReleaseArtifacts') {
List accessRules = zip.getInputStream(zip.getEntry('META-INF/accesstransformer.cfg'))
.getText('UTF-8').readLines().collect { it.trim() }
.findAll { it && !it.startsWith('#') }
- if (accessRules != [
- 'public net.minecraft.resources.DataPackRegistries field_240955_e_',
- 'public net.minecraft.tags.NetworkTagManager field_199720_b']) {
- throw new GradleException('Packaged native tag-reader access rules were not reobfuscated correctly')
+ if (accessRules != ['public-f net.minecraft.util.datafix.fixes.BlockStateData f_14934_']) {
+ throw new GradleException('Packaged pre-flattening table access rule is incorrect')
}
String modsToml = zip.getInputStream(zip.getEntry('META-INF/mods.toml'))
.getText(StandardCharsets.UTF_8.name())
- if (!modsToml.contains('modId="poweradvantage"')
+ if (!modsToml.contains('modId="basepower"')
|| !modsToml.contains("version=\"${project.mod_version}\"")
|| !modsToml.contains('modId="basemetals"')
|| !modsToml.contains('modId="orespawn"')) {
@@ -594,14 +609,14 @@ tasks.register('verifyReleaseArtifacts') {
}
}
int major = ((header[6] & 0xff) << 8) | (header[7] & 0xff)
- if (major != 52) {
- throw new GradleException("${entry.name} uses Java class major ${major}, expected 52")
+ if (major != 60) {
+ throw new GradleException("${entry.name} uses Java class major ${major}, expected 60")
}
}
}
new ZipFile(new File(libs, expectedReleaseFiles.get()[1])).withCloseable { sourceZip ->
- if (sourceZip.getEntry('zone/moddev/mc/poweradvantage/PowerAdvantage.java') == null
+ if (sourceZip.getEntry('zone/moddev/mc/basepower/PowerAdvantage.java') == null
|| sourceZip.getEntry('cyano/poweradvantage/api/PoweredEntity.java') == null) {
throw new GradleException('Sources jar is missing implementation or legacy API sources')
}
@@ -699,9 +714,9 @@ publishing {
artifact(tasks.named('javadocJar'))
}
pom {
- name = 'Power Advantage'
+ name = 'basePower'
description = project.mod_description
- url = 'https://github.com/MinecraftModDevelopmentMods/PowerAdvantage'
+ url = 'https://github.com/MinecraftModDevelopmentMods/basePower'
licenses {
license {
name = 'GNU Lesser General Public License, Version 3'
@@ -709,9 +724,9 @@ publishing {
}
}
scm {
- connection = 'scm:git:https://github.com/MinecraftModDevelopmentMods/PowerAdvantage.git'
- developerConnection = 'scm:git:ssh://git@github.com/MinecraftModDevelopmentMods/PowerAdvantage.git'
- url = 'https://github.com/MinecraftModDevelopmentMods/PowerAdvantage'
+ connection = 'scm:git:https://github.com/MinecraftModDevelopmentMods/basePower.git'
+ developerConnection = 'scm:git:ssh://git@github.com/MinecraftModDevelopmentMods/basePower.git'
+ url = 'https://github.com/MinecraftModDevelopmentMods/basePower'
}
}
}
@@ -839,10 +854,10 @@ tasks.register('isolateEclipseProductionRuns') {
"key=\"MC_VERSION\" value=\"${project.minecraft_version}\"")
if (launch.name in ['runClient.launch', 'runServer.launch', 'runData.launch']) {
// Eclipse compiles into bin/main, not Gradle's merged run output.
- def launchXml = new groovy.xml.XmlSlurper().parseText(contents)
+ def launchXml = new groovy.xml.XmlParser().parseText(contents)
def modClasses = launchXml.mapAttribute.find {
- it.@key.text() == 'org.eclipse.debug.core.environmentVariables'
- }.mapEntry.findAll { it.@key.text() == 'MOD_CLASSES' }
+ it.@key == 'org.eclipse.debug.core.environmentVariables'
+ }.mapEntry.findAll { it.@key == 'MOD_CLASSES' }
if (modClasses.size() != 1) {
throw new GradleException("${launch.name} must define one MOD_CLASSES entry")
}
@@ -879,26 +894,32 @@ tasks.register('isolateEclipseProductionRuns') {
}.findAll { File runtimeFile ->
!mainOutputs.contains(runtimeFile)
}
- List launchLines = contents.readLines()
- int buildshipContainerLine = launchLines.findIndexOf {
- it.contains('org.eclipse.buildship.core.gradleclasspathcontainer')
+ def parser = new groovy.xml.XmlParser()
+ def launchXml = parser.parseText(contents)
+ def classpath = launchXml.listAttribute.find { it.@key == 'org.eclipse.jdt.launching.CLASSPATH' }
+ if (classpath == null) {
+ throw new GradleException("${name} is missing its explicit classpath")
+ }
+ // A refresh can reuse an already isolated launch. Replace its old runtime
+ // archives too, but keep ForgeGradle's separate Slime Launcher entry.
+ def previousRuntime = classpath.listEntry.findAll { entry ->
+ def runtime = parser.parseText(entry.@value)
+ String archive = runtime.@externalArchive
+ runtime.@containerPath == 'org.eclipse.buildship.core.gradleclasspathcontainer'
+ || (archive && !file(archive).name.startsWith('slime-launcher-'))
}
- if (buildshipContainerLine < 0) {
- throw new GradleException("${name} is missing the Buildship classpath container")
+ if (previousRuntime.isEmpty()) {
+ throw new GradleException("${name} is missing its production runtime entries")
}
- List runtimeEntries = productionRuntime.collect { File runtimeFile ->
- String escapedPath = runtimeFile.canonicalPath
- .replace('&', '&')
- .replace('<', '<')
- .replace('>', '>')
- (' ')
+ int runtimeIndex = classpath.children().indexOf(previousRuntime.first())
+ previousRuntime.each { classpath.remove(it) }
+ def runtimeEntries = productionRuntime.collect { File runtimeFile ->
+ def archive = new Node(null, 'runtimeClasspathEntry',
+ [externalArchive: runtimeFile.path, type: '2', path: '5'])
+ new Node(null, 'listEntry', [value: groovy.xml.XmlUtil.serialize(archive)])
}
- launchLines.remove(buildshipContainerLine)
- launchLines.addAll(buildshipContainerLine, runtimeEntries)
- contents = launchLines.join('\n') + '\n'
+ classpath.children().addAll(runtimeIndex, runtimeEntries)
+ contents = groovy.xml.XmlUtil.serialize(launchXml)
['--cache', '--metadata', '--to-srg', '--to-obf'].each { option ->
String prefix = option + ' '
@@ -1135,9 +1156,9 @@ tasks.register('verifyRecipeTagGuards') {
throw new GradleException("${recipeFile.path} contains a non-object recipe condition")
}
Set guards = conditions
- .findAll { it instanceof Map && it.type == 'poweradvantage:tag_not_empty' }
+ .findAll { it instanceof Map && it.type == 'basepower:tag_not_empty' }
.collect { it.tag as String } as Set
- Set emptyGuards = conditions.findAll { it.type == 'poweradvantage:tag_empty' }
+ Set emptyGuards = conditions.findAll { it.type == 'basepower:tag_empty' }
.collect { it.tag as String } as Set
if (!(emptyGuards.intersect(guards)).isEmpty()) {
throw new GradleException("${recipeFile.path} requires the same tag to be empty and nonempty")
@@ -1179,10 +1200,10 @@ tasks.register('clientResourceProbeJar', Jar) {
// Optional coordinated play-test launch. The ordinary launch stays Power-only;
// these deobf jars are runtime inputs, never release contents or compile dependencies.
def advantageExtensionJars = [
- steamadvantage: file(providers.gradleProperty('steamAdvantageDeobfJar').getOrElse(
- '../SteamAdvantage/SteamAdvantage/build/libs-dev/SteamAdvantage-2.2.8.116051-deobf.jar')),
- electricadvantage: file(providers.gradleProperty('electricAdvantageDeobfJar').getOrElse(
- '../ElectricAdvantage/ElectricAdvantage/build/libs-dev/ElectricAdvantage-2.2.8.116051-deobf.jar'))
+ basesteam: file(providers.gradleProperty('steamAdvantageDeobfJar').getOrElse(
+ '../SteamAdvantage/SteamAdvantage/build/libs-dev/baseSteam-2.2.10.117011-deobf.jar')),
+ baseelectric: file(providers.gradleProperty('electricAdvantageDeobfJar').getOrElse(
+ '../ElectricAdvantage/ElectricAdvantage/build/libs-dev/baseElectric-2.2.10.117011-deobf.jar'))
]
tasks.register('prepareCombinedEclipseLaunch') {
@@ -1192,7 +1213,7 @@ tasks.register('prepareCombinedEclipseLaunch') {
dependsOn tasks.named('deobfJar')
doLast {
File inputProfile = file(providers.gradleProperty('advantageDevelopmentProfile').getOrElse(
- 'test-rig/profiles/native116/dev-core.json'))
+ 'test-rig/profiles/native117/dev-core.json'))
def profile = new JsonSlurper().parse(inputProfile)
if (profile.powerDeobfSha256) {
File powerJar = tasks.named('jar', Jar).get().archiveFile.get().asFile
diff --git a/docs/1.17/BASE-CANDIDATE.md b/docs/1.17/BASE-CANDIDATE.md
new file mode 100644
index 00000000..a5628d6c
--- /dev/null
+++ b/docs/1.17/BASE-CANDIDATE.md
@@ -0,0 +1,140 @@
+# Minecraft 1.17.1 Base Mods
+
+These are local builds, not releases. The gameplay tests below use the exact
+player jars listed here. The combined Eclipse client tests use the corresponding
+development build. Back up the entire world and only open copies when testing
+an upgrade.
+
+| Mod | Version | Player jar SHA-256 |
+| --- | --- | --- |
+| basePower | 2.4.9.117011 | `A788C08163CECE1C6D33FBDC295BE6EC272DE9AF7911BE74E707D0EE9121DF73` |
+| baseSteam | 2.2.10.117011 | `8A9207A89C0971501BB649FC47F0FF3CF6132FCE3EB2AE651CD8437406BA191B` |
+| baseElectric | 2.2.10.117011 | `9788E9DA4DD7698D0D53FC66246ED0637FC6EB89A855B7CFCC4AFFC6EFF7559F` |
+| Base Metals (local) | 3.1.1.117011 | `F3053F23D2415476FC52426A24E3B0B828198A678FBD5DD789923DB2063E0FEB` |
+
+The local Base Metals patch moves common setup work to Forge's queued setup
+thread. It fixes a startup deadlock seen when both projects initialized the
+Forge handshake together. The packaged checks covered ten client/server login
+and reload scenarios, including settings mismatches. OreSpawn is the public
+4.1.0.117011 release.
+
+## November 8 Baseline
+
+These results used the previous Power jar, SHA-256
+`C55782CA1B0F3B8F7B358BE3150229F5AD92F8C8CE15E3989AAAD1B4F182886F`.
+
+- The three reproducible release builds, including clean caches and checkout
+ paths containing spaces. Dependency, archive and Eclipse classpath audits
+ passed. The combined client launch is `runClientAllAdvantage.launch`.
+- Independent Eclipse compiler checks. basePower passed all 201 tests against
+ freshly compiled Java 16 output with access restrictions still enabled.
+- All 21 walkable works stations with and without Base Metals, before and after
+ a full restart, including an independent audit of the assertions.
+- 132 finite machine jobs and their cold-restart checks. A second campaign
+ imported the 132 existing setups from 1.16.5 without reconstructing them.
+- Original Advantage 1.10.2 and released base* 1.10.2 and 1.12.2 saves kept
+ their machine state and turbine UUIDs, and resumed conveying, crushing and
+ smelting. Chained base* fixtures from 1.13.2 through 1.16.5 kept their
+ machine state across both boots. The direct 1.15.2 check compared 14 blocks,
+ 12 tile entities and 21 item stacks after conversion and restart.
+ The original 1.10.2 and legacy 1.12.2 player books kept their enchantments
+ and player UUIDs in the saved files after both boots.
+- Both live Base Metals/basePower transformer orders on the original 1.10.2
+ fixture. Bytecode inspection confirmed both hooks ran in the requested order;
+ both resulting saves agreed after restart.
+- Both 30-minute load runs (fresh and upgraded), the full server restart, and
+ processing after restart. The independent audit checked raw checkpoints,
+ inventory acknowledgements and unchanged inputs.
+- Recipe unlocks and natural progression in all three recipe modes. The
+ combined client checked recipe-book grouping, creative entries, models,
+ GUI layout and required labels, including intentionally broken controls.
+- Mining and drops, Forge capabilities, native tank reload, both energy
+ converter directions, and all six crude/refined oil lanes including Mineralogy.
+- Partial networks with the supply, machine or bridge genuinely unloaded.
+ Extended drill runs covered four moves per drill, blocked output across a
+ restart, then resumed work and redstone controls in fresh and upgraded worlds.
+ The separate saved-progress run checked 18 drill routes per world, including
+ 72 observed moves and the first natural tick after each saved-state read.
+- Worldgen and restart checks for the standalone, Mineralogy and legacy OreSpawn
+ profiles, including preservation of user changes to generation rules.
+
+The November 8 rerun passed all 2,186 offline checks and 826 Java tests across
+the three release builds and test harness. The three rebuilt player jars and the
+harness matched their pinned SHA-256 values. The combined client passed 351
+caption checks and rejected all 355 deliberately broken caption controls. The
+two direct respawn routes passed 24 server-side cases; no real client death
+screen was part of that check.
+
+## November 9 Metadata Fix
+
+When a save still lists an old Advantage mod, the world reader now translates
+its Forge mod-list entry and data pack selection to the installed replacement.
+It does not rewrite registry snapshots, hide other missing mods, or override a
+pack choice already saved under the new name. The remap runs in memory; the
+next normal save records the current IDs. The artifact diff is one new metadata
+class and the world-reader transformer.
+
+The original 1.13-chained regression fixture now boots and restarts without
+the old missing-mod or missing-pack messages. Its saved pack list contains
+the three current IDs and retains the unrelated entries. The original 1.10.2
+fixture also passes with both Base Metals/basePower transformer orders.
+
+The new exact target manifest is `test-rig/build/base117-20261109-a-inputs/inputs.json`,
+SHA-256 `F1C023D8F4784D60C2416818BE43A2A8349A422E7E90AFF5D35CA68D1DB3DD05`.
+Two clean builds reproduced the Power package and development jar hashes.
+Steam, Electric and the harness rebuilt to their unchanged hashes. All 2,187
+offline checks and 830 Java tests passed.
+
+- Both 30-minute endurance worlds passed 30 load batches, a full restart and
+ resumed processing. The fresh world measured 37,489 ticks and the upgraded
+ world 36,048. The independent replay checked 33 checkpoints per world.
+- The original 1.10.2 and released base* 1.10.2 and 1.12.2 worlds converted,
+ restarted and resumed machine operation. Two newly serialized Overworld
+ fixtures passed strict player and entity checks. The 16 Nether and End
+ routes passed the independent platform assessment with only the vanilla wolf
+ difference below; all six 1.13-derived saves passed raw metadata checks.
+ All 36 respawn cases passed, including the previously blocked chained route.
+- Both 21-station Works profiles, the 132 fresh machine cases, and the 132
+ imported machine states passed their restart checks. The drill and redstone
+ reloads, harvest, Forge interoperability, six oil lanes and all three
+ world-generation profiles passed.
+- Recipe unlocks and all 18 progression cases passed, with 36 independently
+ replayed hammer invocations. The combined client passed 351 GUI caption
+ checks and rejected 355 deliberately broken controls.
+
+To regenerate the combined Eclipse launch for this local rebuild without
+changing the earlier pinned profiles:
+
+```powershell
+.\gradlew.bat prepareCombinedEclipseLaunch -PadvantageDevelopmentProfile=test-rig/build/base117-20261109-a-inputs/dev-core.json
+```
+
+## Still Open
+
+The earlier full Python run had 120 failures and 44 errors. The offline checks
+now read the original Git blobs for historical oracles and check the active
+base* adapters separately. The archived checksums and failure reports are
+unchanged. The checks require the pinned Git history and the three sibling 1.13
+repositories for the historical recipe inventory.
+
+The older 30-route upgrade plan and the eight original Overworld actor routes
+still lack their exact source worlds. A search of 1,374 accessible saves did
+not find them. All 16 Nether and End source fixtures matched their original
+file inventories. Newly generated Overworld fixtures are separate coverage,
+not a replacement for the missing originals.
+
+Forge/Minecraft 1.17.1 restores a legacy tamed wolf from 8 to 20 health even
+without Advantage installed. The strict comparisons retain that difference;
+the separate platform assessment checks every other field without an exception.
+The old failing campaign and its logs are kept. The manual walkthrough is
+separate, including live turbine orientation, sounds and player controls.
+
+Raw reports and the frozen manifest are in the ignored `test-rig/build/`
+directories for the `base117-20261107` and `base117-20261108-qual` campaigns.
+The November 8 reruns used the manifest with SHA-256
+`1CCC81CAAA597EE2EC2AD7CC134730F1E4A582DB2A79817A07FC6E5005F7C1AB`
+unless a profile explicitly adds Mineralogy or omits Base Metals.
+The two 30-minute reruns measured 38,346 fresh and 36,038 upgraded game ticks.
+Both passed 30 input batches, full restarts and an independent replay of
+33 checkpoints each. The earlier Advantage runs and failed attempts are
+retained separately. None of those files are release content.
diff --git a/docs/1.17/CURRENT-QUALIFICATION.md b/docs/1.17/CURRENT-QUALIFICATION.md
new file mode 100644
index 00000000..8bdcd17c
--- /dev/null
+++ b/docs/1.17/CURRENT-QUALIFICATION.md
@@ -0,0 +1,158 @@
+# Minecraft 1.17.1 Pre-Rename Test Record
+
+This record is for the earlier Advantage-named jars. See the
+[base* candidate record](BASE-CANDIDATE.md) for the current jars.
+
+This is a local candidate, not a published release. **Qualification is incomplete
+and it is not yet ready for manual acceptance.** A passing older jar, an isolated
+successful rerun or a completed subset does not close a failed campaign.
+
+## Candidate
+
+| Mod | Version | Release SHA-256 |
+| --- | --- | --- |
+| Power Advantage | 2.4.8.117011 | `336D9A11F5488EBD63F208554A039A53A398ABC58F632880B8420AF10F5AFBF0` |
+| Steam Advantage | 2.2.9.117011 | `BA3488817313101329AC6FE6D371514E8697FFFBD490B7E2C98B4CA705290569` |
+| Electric Advantage | 2.2.9.117011 | `E1B4A7C65E09B6EE218F52328F0CD569A61B37E8646A46AC6D17EB3948D60EE4` |
+
+Production source checkpoints are Power `5b9abe5`, Steam `3348ebf` and Electric
+`9e6be35`. Packaged tests use published Base Metals `3.1.0.117011` and OreSpawn
+`4.1.0.117011`; oil tests also use published Mineralogy `6.1.4.117011`.
+Minecraft runs on Java 16; Gradle runs on Java 17.
+
+Evidence is retained locally under
+`D:/PowerAdvantage/_verification/advantage-117-port-20261031/` and
+`test-rig/build/`. Generated worlds, dependency jars and reports are not release
+content or intended for Git. Frozen manifests and failed reports are never
+overwritten by a later test-harness revision.
+
+## Completed Scope
+
+These results use the production jars above. Most use the frozen O harness;
+the separately frozen P harness changes test observation, not production jars.
+
+| Check | Result and boundary |
+| --- | --- |
+| Release audits | Power 201, Steam 199 and Electric 96 tests pass, with dependency, archive, bytecode, resource and Eclipse checks |
+| Independent compiler and reproducibility | ECJ checks and two independent source exports per mod; all four artifacts match, including fresh-cache and spaced-path builds |
+| O machine operation | 132 measured setups pass, with exact cold inspection and independent raw-save replay |
+| Imported 1.16 operating setup | 132 layouts preserved across conversion and full restart without reconstruction; final stopped terrain also matches independent raw replay |
+| O connected upgrades | 20 operating routes pass at a fixed 1,024-tick interval; 40 raw-save windows have no differences |
+| Fluid interoperability | 22 operating and two restored cases pass |
+| Oil | Six lanes, three boots and two full restarts pass; correct identities and amounts for Advantage and Mineralogy oils |
+| Harvesting | 271 actual tool/tier/drop cases pass on each boot |
+| Actors and player storage | Eight actor routes and six player-layout routes pass, with independent saved-data checks |
+| P respawn | All 72 Nether/End server-handler cases and independent audits pass using immutable per-case requests; startup reliability and recipe qualification remain separate |
+| P world generation | Six profiles, twelve boots and 20,004 sampled chunks pass independent owner, biome, dimension, duplicate and ticket-cleanup audits; 36 clean logs retained |
+| Q instrumented recipes | Five discovery boots and eighteen manufacturing checks pass, with 36 single hammer invocations independently replayed from exact native query, selector, action, debit and output telemetry |
+| Transformer order | Six worlds and 12 launches pass semantics; individual automatic backups depend on callback order, so an independent whole-world backup is required |
+| Partial-network unloading | Wide bridge and extended-drill layouts pass in both worlds, with actual unload events, both load orders, finite work, restart and independent raw replay |
+| P drill lifecycle | Seven groups of twelve cases pass in each world; independent audits corroborate 48 actual native callbacks across seven boots, without manually ticking machines |
+| Endurance | Two worlds complete thirty one-minute batches, full process restart and resumed processing; independently replayed raw checkpoints |
+| Redstone-held drills | Nine cases pass; eight held drills do no work or energy debit and one unheld control advances for sixteen native ticks; both stopped terrain boundaries match |
+| Combined client | Current jars pass 94 items, 905 block states, 351 caption cases and 355 broken controls; independent comparison binds all 542 loose Power entries and four runtime dependencies to their pins |
+| Walkable Works | All 21 stations exercised in current and no-Base-Metals profiles before and after restart; 21 manual checklists per phase remain open |
+| Harness controls | The P checkpoint passes 315 Java and 871 native-adapter Python controls; the instrumented Q source passes 327 Java and 876 native-adapter Python controls. Fourteen shared controls also pass. Native scope is recorded separately |
+
+The no-Base-Metals profile still includes required OreSpawn. It is not an
+absent-OreSpawn startup test. Endurance uses fresh equipment and rebuilt Works
+inside a disposable migrated world, not thirty minutes of every original legacy
+machine. Imported-layout preservation is not credited as another operating test.
+
+## Open Failures
+
+- **Startup deadlock:** the O End-dimension run captured two thread dumps showing
+ Base Metals' `ContentModeNetwork.register` initializing `FMLHandshakeHandler`
+ while Forge initializes `FMLNetworkConstants` on another loading thread. Each
+ waits for the other's class initialization. That route remains failed.
+ Three other O loading stalls have no thread dumps and are not automatically
+ assigned the same cause. Forty-eight startup-control boots and a later
+ instrumented import passed, but do not repair or explain those failures.
+- **Frozen migration coverage:** O completed 14 of 16 routes. Two routes failed
+ during mod loading. Available raw windows match, but missing windows are not
+ passes.
+- **Dimension coverage:** O completed all eight Nether routes. The End campaign
+ stopped during its first route's restart; only 25 of the required 48 boots
+ completed across both dimensions. Earlier complete matrices used a different
+ Steam jar and do not close this gap.
+- **Recipes:** five discovery boots passed, but the operating recipe campaign
+ failed its live hammer check after resource reload in APOCALYPTIC mode.
+ Thirteen of eighteen manufacturing checks completed. Native item-query
+ visibility is a hypothesis, not an established gameplay diagnosis. A finite
+ P control subsequently passed all five discovery boots and eighteen
+ manufacturing checks without changing the hammer protocol. Q then added
+ exact native query/selector observation and fail-closed setup gates. All
+ original action and output assertions remain; its 36 invocations pass
+ independent replay. This proves the new run's conditions and bounded
+ behaviour, not the cause of the earlier uninstrumented failure. The historical
+ investigation remains open; no production repair is claimed.
+
+The earlier world-generation sampler blocked on synchronous FULL-chunk loading
+and hit the native watchdog. P uses asynchronous native requests with the same
+sample counts, biome checks and deadlines. All six profiles now pass, including
+Mineralogy, legacy import and the combined Base Metals installation. All 47,016
+requests completed and their tickets were released. The original failure remains.
+
+O's changed-target guard failed on seven Steam drill rows without proving the
+first eligible callback. P now records that actual native callback and passes
+both worlds with the original state, quantity and work assertions unchanged.
+Its general raw-evidence audit and separate callback audit pass; all 1,043
+guarded files remained unchanged. The original O failure is retained. This is
+an observer repair, not a new Steam production fix or a startup-deadlock fix.
+
+O's End respawn attempt failed while replacing a live fixture file. P avoids
+that replacement with immutable requests; all 72 cases and independent audits
+now pass. The original failed attempt remains retained. Server adapters do not
+prove real-client death screens or resolve the separate startup deadlock.
+
+The O dimension handoff is
+`dimensions-native117-o-failed-handoff.json` in the local evidence root.
+Machine, recipe, harvest and interoperability receipts are indexed by
+`final-o/handoff.json`; its overall recipe failure must not be overlooked.
+The frozen P input is `test-rig/build/native117-target-p.json`. A frozen input
+is not a qualification certificate.
+
+The Q hammer input and its independent invocation replay are retained under
+`hammer-observer-q/` in the local evidence root. The same instrumented Java
+source rebuilt in the main checkout produces byte-identical harness jars.
+The source profiles use the new pins, with no machine-specific provenance paths;
+they remain explicitly unqualified.
+
+Resolve the dependency startup deadlock and complete the missing frozen/End
+routes before manual acceptance. A successful boot of another fixture does not
+fill a missing route or prove startup reliability.
+
+## Repairs And Evidence Rules
+
+Production repairs during this port cover native ingredient predicates, dirty
+machine state after autosave, exact vanilla path/sound aliases and nine Steam
+recycling recipes whose external serializer needs a Base Metals presence guard.
+No recipe ratio or gameplay balance change is intended.
+
+Test repairs remain separate. The connected observation window was fixed at
+1,024 ticks because some drills require 576 powered steps. Non-mutating entity
+observers avoid allocating empty `ForgeData`. Empty NBT is not broadly ignored.
+The natural-tick observer transparently wraps the native delegate, forwards it
+once and records its first callback; it never manually ticks a machine.
+
+Strict tamed-wolf health comparison reports 8 becoming 20. A separate native
+control proves that exact platform difference; no other entity change is allowed.
+Non-persistent leash helpers receive lifecycle evidence, not raw-storage UUID
+persistence credit. Incomplete or invalid short bridge layouts remain failed.
+
+## Manual Boundary
+
+The current combined-client evidence is
+`run-client-resource-runs/20261031-101716-9e75e592/`, with the independent
+`client-final-production-o-binding.json` receipt in the local evidence root.
+This is a worldless resource, caption and geometry check, not live-world or
+manual visual acceptance.
+
+Manual checks still include normal Eclipse startup, visual appearance, recipe
+book interaction, live turbine/drill animation, elevator rides, turret display
+and multiplayer interaction. All three mods share Power Advantage's creative
+tab. See the [manual checklist](MANUAL-TESTING.md).
+
+Use disposable copies. These fixtures do not qualify the entire Sylvester
+modpack or unrelated mods without target-version releases. No 1.17 port code
+has been pushed, merged, tagged or published.
diff --git a/docs/1.17/MANUAL-TESTING.md b/docs/1.17/MANUAL-TESTING.md
new file mode 100644
index 00000000..dfa0f2f2
--- /dev/null
+++ b/docs/1.17/MANUAL-TESTING.md
@@ -0,0 +1,70 @@
+# Minecraft 1.17.1 Manual Check
+
+Use the [test record](CURRENT-QUALIFICATION.md) for the exact candidate and the
+limits of the automated checks. Manual acceptance is still open. Do not use the
+only copy of an existing world.
+
+## Open The Projects
+
+Import these directories as existing Gradle projects in Eclipse:
+
+```text
+D:\PowerAdvantage\PA117\PowerAdvantage
+D:\PowerAdvantage\PA117\SteamAdvantage\SteamAdvantage
+D:\PowerAdvantage\PA117\ElectricAdvantage\ElectricAdvantage
+```
+
+Use a separate Eclipse workspace if an older port already uses these project
+names. These are project directories, not pre-existing Eclipse workspaces.
+
+Use Java 17 for Gradle and Java 16 for the project JRE and Minecraft launches.
+After refreshing the Gradle projects, clean the Eclipse projects so their Java
+and processed-resource output is current.
+
+Power's `runClient.launch` loads Power alone. Its
+`runClientAllAdvantage.launch` also loads the pinned Steam and Electric builds.
+Prepare the latter with `gradlew.bat prepareCombinedEclipseLaunch` if needed.
+Both use Power's `run` directory. Neither launch includes Advantage Works or
+automatically opens a test world.
+
+## Look And Interact
+
+- Check the shared Power Advantage creative tab, names, tooltips and recipe-book
+ pages for all three mods. Unlock
+ recipes by collecting ingredients, not by granting every recipe at once.
+- Open the machine menus at the GUI scales you normally use. Check titles,
+ inventory labels, slot alignment, gauges, hover text and filled-fluid colours.
+ Put items and fluids in the machine; an empty drawing is not a useful test of
+ every gauge state.
+- Place horizontal and vertical drills. Watch their moving parts and output,
+ then save, close Minecraft completely and reopen the copied world. Check
+ facing, pressure or power, inventory and continued work together.
+- Inspect live turbines, elevator travel, lighting and turret presentation.
+ Automated state and renderer checks do not replace watching these in a world.
+- Try ordinary multiplayer interaction if that is part of the intended pack.
+ Server-side player adapters do not prove a real client's death screen,
+ reconnect experience or network presentation.
+
+## Try An Existing World Copy
+
+Keep an independent backup of the entire world, including player and dimension
+data. Per-mod migration backups can contain intermediate data from another mod's
+hook; they are not a substitute for that backup.
+
+Only load a copy whose other mods have compatible target versions. Missing
+unrelated mods are not an acceptable reason to lose their blocks or inventories.
+This port's tests do not qualify the complete Sylvester modpack.
+
+Before opening the copy, note a few working machines, their contents, tank
+levels, battery charge and drill directions. Check them immediately after the
+upgrade, let them work, then save and close the entire game before checking
+again. Do not repair pipes or replace machines before recording a fault: that
+would hide a restoration problem.
+
+The strict dimension fixtures record one independently reproduced native change:
+tamed-wolf health can become 20 instead of 8. That does not excuse any other
+entity, inventory or machine-state change.
+
+For a problem report, keep the log, screenshot, candidate versions and untouched
+source copy. Note whether it happened on first import, during operation or only
+after restarting. Do not save over the original world while investigating.
diff --git a/docs/1.17/PORT-STATUS.md b/docs/1.17/PORT-STATUS.md
new file mode 100644
index 00000000..0c154f85
--- /dev/null
+++ b/docs/1.17/PORT-STATUS.md
@@ -0,0 +1,28 @@
+# Minecraft 1.17.1 Port
+
+This is a local port candidate. It has not been approved for normal worlds or
+published. Earlier-version results do not qualify this version.
+
+basePower targets Forge 37.1.1 with Java 16 production bytecode. Gradle
+runs on Java 17; Mavenizer needs Java 25 and the legacy renamer uses Java 8.
+The dependency source commits and development-jar checksums are pinned in
+`gradle.properties`. Packaged tests use the local Base Metals 3.1.1.117011
+startup fix and the published OreSpawn 4.1.0.117011 jar.
+
+The port keeps registry and saved-state identities. Native block-entity factories
+now receive their real position and block state, and native tickers dispatch
+the existing machine update logic. Configured material aliases are additive
+server data-pack tags. Legacy migration also covers separate entity chunks.
+
+Qualification is in progress; see the [base* test record](BASE-CANDIDATE.md).
+The [pre-rename test record](CURRENT-QUALIFICATION.md) is historical evidence.
+The handover will list the tested artifact hashes,
+completed checks, failures and remaining manual checks. Compilation, saved-state
+presence, animation or a green result from an older port is not evidence that a
+machine has done useful work in 1.17.
+
+Use disposable copies for every upgrade test. Never open the only copy of a
+valuable world with a port candidate.
+
+The [manual checklist](MANUAL-TESTING.md) gives the Eclipse project paths and
+the remaining visual, interaction and copied-world checks.
diff --git a/gradle.properties b/gradle.properties
index 72de79b5..98fc9cc1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,42 +5,42 @@ org.gradle.caching=true
org.gradle.parallel=false
net.minecraftforge.gradle.merge-source-sets=false
-minecraft_version=1.16.5
-minecraft_version_range=[1.16.5]
-forge_version=36.2.34
-forge_installer_sha256=53B73DBBCC486F38726E76CE923B13381044984C83C762847C7193340F97130F
-forge_version_range=[36.2.34,37)
-loader_version_range=[36,)
+minecraft_version=1.17.1
+minecraft_version_range=[1.17.1]
+forge_version=37.1.1
+forge_installer_sha256=31F2319B1B9CA491AACCC020887240F8524A4FF2A8E0F8B795E17E889CBC043B
+forge_version_range=[37.1.1,38)
+loader_version_range=[37,)
mapping_channel=official
-mapping_version=1.16.5
-mcp_version=20210115.111550
+mapping_version=1.17.1
+mcp_version=20210706.113038
loader_name=forge
loader_code=1
-java_version=8
-java_toolchain_version=8.0.502+7
-java_setup_version=8.0.502+7
+java_version=16
+java_toolchain_version=16.0.2+7
+java_setup_version=16.0.2+7
gradle_java_version=17
-curseforge_project_id=240982
+curseforge_project_id=1780140
-mod_id=poweradvantage
-mod_name=Power Advantage
+mod_id=basepower
+mod_name=basePower
mod_license=LGPL-3.0-only
-mod_version=2.4.7.116051
-mod_group=zone.moddev.mc.poweradvantage
+mod_version=2.4.9.117011
+mod_group=zone.moddev.mc.basepower
mod_authors=DrCyano (aka Cyanobacterium)
mod_description=API and shared machines for pressure, electricity, quantum power, fluids, and item transport.
cf_requirements=base-metals,mmd-orespawn
cf_optionals=additional-loot-tables
-cf_versions=1.16.5
+cf_versions=1.17.1
-basemetals_version=3.1.1.116051
-basemetals_source_commit=995f6cc4dd2d5eecc628a42e5c43fa5390c24bca
+basemetals_version=3.1.1.117011
+basemetals_source_commit=0deeeeecdbbc1fbcdecf910c59477de8efe164d7
basemetals_curse_project_id=240967
-basemetals_deobf_sha256=A7B0C4F394DFAF4E11E0275B1A86CB1D47C7AF8E175759D9BB84F965C684466D
+basemetals_deobf_sha256=83A8C32C633B56BB7E4405E8B3B24A4DEA32B9119216E5097B884056D679CAD1
-orespawn_version=4.1.0.116051
-orespawn_source_commit=a113e5d767169189f0e35ade1e173a12d550b00e
+orespawn_version=4.1.0.117011
+orespawn_source_commit=b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
orespawn_curse_project_id=245586
-orespawn_deobf_sha256=DCEE75480C9DD70EE58B218AAE799C5FAB0525DAF9A05455270F1570C24F7F8F
+orespawn_deobf_sha256=CB7A736314842B110B2E4788FBD5E21D4AE8803C5ED34A49199B034BE572DA39
diff --git a/src/main/java/cyano/poweradvantage/api/ConduitBlock.java b/src/main/java/cyano/poweradvantage/api/ConduitBlock.java
index 156f84bf..f06b6433 100644
--- a/src/main/java/cyano/poweradvantage/api/ConduitBlock.java
+++ b/src/main/java/cyano/poweradvantage/api/ConduitBlock.java
@@ -1,11 +1,11 @@
package cyano.poweradvantage.api;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.Explosion;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Explosion;
+import net.minecraft.world.level.Level;
/**
*
@@ -23,7 +23,7 @@
* @author DrCyano
*
*/
-public abstract class ConduitBlock extends net.minecraft.block.Block implements ITypedConduit {
+public abstract class ConduitBlock extends net.minecraft.world.level.block.Block implements ITypedConduit {
/**
* Block constructor
*
@@ -45,7 +45,7 @@ protected ConduitBlock(Properties properties) {
* This method is called whenever the block is placed into the world
*/
@Override
- public void onPlace(BlockState state, World w, BlockPos coord, BlockState oldState, boolean isMoving) {
+ public void onPlace(BlockState state, Level w, BlockPos coord, BlockState oldState, boolean isMoving) {
super.onPlace(state, w, coord, oldState, isMoving);
ConduitRegistry.getInstance().conduitBlockPlacedEvent(w, coord, getTypes());
}
@@ -54,7 +54,7 @@ public void onPlace(BlockState state, World w, BlockPos coord, BlockState oldSta
* This method is called when the block is removed from the world by an entity.
*/
@Override
- public void onRemove(BlockState state, World w, BlockPos coord, BlockState newState, boolean isMoving) {
+ public void onRemove(BlockState state, Level w, BlockPos coord, BlockState newState, boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
}
@@ -65,7 +65,7 @@ public void onRemove(BlockState state, World w, BlockPos coord, BlockState newSt
* This method is called when the block is destroyed by an explosion.
*/
@Override
- public void wasExploded(World w, BlockPos coord, Explosion boom) {
+ public void wasExploded(Level w, BlockPos coord, Explosion boom) {
super.wasExploded(w, coord, boom);
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
}
diff --git a/src/main/java/cyano/poweradvantage/api/ConduitType.java b/src/main/java/cyano/poweradvantage/api/ConduitType.java
index f782afc5..8ed905a9 100644
--- a/src/main/java/cyano/poweradvantage/api/ConduitType.java
+++ b/src/main/java/cyano/poweradvantage/api/ConduitType.java
@@ -1,6 +1,6 @@
package cyano.poweradvantage.api;
-import zone.moddev.mc.poweradvantage.util.HashCodeHelper;
+import zone.moddev.mc.basepower.util.HashCodeHelper;
import java.util.Locale;
diff --git a/src/main/java/cyano/poweradvantage/api/FluidCategoryRegistry.java b/src/main/java/cyano/poweradvantage/api/FluidCategoryRegistry.java
index 12c3a2c6..333fb963 100644
--- a/src/main/java/cyano/poweradvantage/api/FluidCategoryRegistry.java
+++ b/src/main/java/cyano/poweradvantage/api/FluidCategoryRegistry.java
@@ -7,9 +7,9 @@
import java.util.Map;
import java.util.Set;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
/**
* Registry of semantic fluid categories shared by Advantage mods.
@@ -26,6 +26,7 @@ public final class FluidCategoryRegistry {
static {
registerAlias(CRUDE_OIL, "crude_oil");
+ registerAlias(CRUDE_OIL, "basepower:crude_oil");
registerAlias(CRUDE_OIL, "poweradvantage:crude_oil");
registerAlias(CRUDE_OIL, "mineralogy_crude_oil");
registerAlias(CRUDE_OIL, "mineralogy:crude_oil");
diff --git a/src/main/java/cyano/poweradvantage/api/GUIBlock.java b/src/main/java/cyano/poweradvantage/api/GUIBlock.java
index 653a0239..b7f828db 100644
--- a/src/main/java/cyano/poweradvantage/api/GUIBlock.java
+++ b/src/main/java/cyano/poweradvantage/api/GUIBlock.java
@@ -1,24 +1,26 @@
package cyano.poweradvantage.api;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.Block;
-import net.minecraft.block.SoundType;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.InventoryHelper;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.block.BlockRenderType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Hand;
-import net.minecraft.util.ActionResultType;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.world.IBlockReader;
-import zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.Container;
+import net.minecraft.world.Containers;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.entity.BlockEntityTicker;
+import net.minecraft.world.level.block.RenderShape;
+import net.minecraft.core.Direction;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import zone.moddev.mc.basepower.registry.MachineGUIRegistry;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import zone.moddev.mc.poweradvantage.util.FluidContainerHelper;
+import zone.moddev.mc.basepower.util.FluidContainerHelper;
/**
*
@@ -33,7 +35,7 @@
* @author DrCyano
*
*/
-public abstract class GUIBlock extends net.minecraft.block.ContainerBlock{
+public abstract class GUIBlock extends net.minecraft.world.level.block.BaseEntityBlock{
/**
* Constructor for GUI block
@@ -52,6 +54,20 @@ protected GUIBlock(Block.Properties properties) {
super(properties);
}
+ @Override
+ public BlockEntityTicker getTicker(Level level, BlockState state,
+ BlockEntityType type) {
+ if (!type.isValid(state)) return null;
+ return (world, pos, currentState, tile) -> {
+ if (tile.isRemoved() || tile.getType() != type || tile.getLevel() != world) return;
+ if (tile instanceof PoweredEntity) {
+ ((PoweredEntity) tile).tick();
+ } else if (tile instanceof zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor) {
+ ((zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor) tile).tick();
+ }
+ };
+ }
+
@Deprecated
protected void setPowerAdvantageHardness(float hardness) {
// Block properties are immutable after construction in 1.13.
@@ -114,8 +130,8 @@ public boolean isOpaqueCube(BlockState bs) {
* -1 = special renderer
*/
@Override
- public BlockRenderType getRenderShape(BlockState bs) {
- return BlockRenderType.MODEL;
+ public RenderShape getRenderShape(BlockState bs) {
+ return RenderShape.MODEL;
}
/**
@@ -127,43 +143,43 @@ public BlockRenderType getRenderShape(BlockState bs) {
*/
@SuppressWarnings("deprecation")
@Override
- public ActionResultType use(BlockState bs, World w, BlockPos coord,
- PlayerEntity player, Hand hand, net.minecraft.util.math.BlockRayTraceResult hit) {
+ public InteractionResult use(BlockState bs, Level w, BlockPos coord,
+ Player player, InteractionHand hand, net.minecraft.world.phys.BlockHitResult hit) {
Direction facing = hit.getDirection();
if (w.isClientSide) {
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
}
- final TileEntity tileEntity = w.getBlockEntity(coord);
+ final BlockEntity tileEntity = w.getBlockEntity(coord);
if (tileEntity == null || player.isShiftKeyDown()) {
- return ActionResultType.PASS;
+ return InteractionResult.PASS;
}
// handle buckets and fluid containers
- net.minecraft.item.ItemStack item = player.getItemInHand(hand);
+ net.minecraft.world.item.ItemStack item = player.getItemInHand(hand);
if(item != null && !item.isEmpty() && tileEntity instanceof IAdvantageFluidHandler
&& FluidContainerHelper.interact(player, hand, (IAdvantageFluidHandler) tileEntity, facing)) {
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
}
// open GUI
- if(this.getGuiOwner() == null) return ActionResultType.PASS;
- if(tileEntity instanceof PoweredEntity && player instanceof ServerPlayerEntity){
- ((PoweredEntity)tileEntity).syncPowerAdvantageDataTo((ServerPlayerEntity)player);
+ if(this.getGuiOwner() == null) return InteractionResult.PASS;
+ if(tileEntity instanceof PoweredEntity && player instanceof ServerPlayer){
+ ((PoweredEntity)tileEntity).syncPowerAdvantageDataTo((ServerPlayer)player);
}
- if (!(player instanceof ServerPlayerEntity)) return ActionResultType.PASS;
- MachineGUIRegistry.open((ServerPlayerEntity) player, w, coord, this.getGuiID());
- return ActionResultType.SUCCESS;
+ if (!(player instanceof ServerPlayer)) return InteractionResult.PASS;
+ MachineGUIRegistry.open((ServerPlayer) player, w, coord, this.getGuiID());
+ return InteractionResult.SUCCESS;
}
@Override
- public void onRemove(BlockState state, World world, BlockPos pos, BlockState newState,
+ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState,
boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
- TileEntity te = world.getBlockEntity(pos);
- if (te instanceof IInventory) {
- InventoryHelper.dropContents(world, pos, (IInventory) te);
- ((IInventory) te).clearContent();
+ BlockEntity te = world.getBlockEntity(pos);
+ if (te instanceof Container) {
+ Containers.dropContents(world, pos, (Container) te);
+ ((Container) te).clearContent();
world .updateNeighbourForOutputSignal(pos, this);
}
super.onRemove(state, world, pos, newState, isMoving);
diff --git a/src/main/java/cyano/poweradvantage/api/PowerConnectorContext.java b/src/main/java/cyano/poweradvantage/api/PowerConnectorContext.java
index ab97553e..d3d989e1 100644
--- a/src/main/java/cyano/poweradvantage/api/PowerConnectorContext.java
+++ b/src/main/java/cyano/poweradvantage/api/PowerConnectorContext.java
@@ -1,9 +1,9 @@
package cyano.poweradvantage.api;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
/**
* This data structure class is used to reduce the parameter list of the ITypedConduit methods to a single pointer.
@@ -14,7 +14,7 @@ public class PowerConnectorContext {
/**
* World instance
*/
- public final IBlockReader world;
+ public final BlockGetter world;
/**
* Type of power
*/
@@ -58,7 +58,7 @@ public class PowerConnectorContext {
*/
public PowerConnectorContext(
final ConduitType powerType,
- final IBlockReader world,
+ final BlockGetter world,
final BlockState connectorBlock,
final BlockPos connectorPosition,
final Direction connectorSide,
@@ -78,7 +78,7 @@ public PowerConnectorContext(
public PowerConnectorContext(
final ConduitType powerType,
- final IBlockReader world,
+ final BlockGetter world,
final BlockState connectorBlock,
final BlockPos connectorPosition,
final Direction connectorSide
diff --git a/src/main/java/cyano/poweradvantage/api/PoweredEntity.java b/src/main/java/cyano/poweradvantage/api/PoweredEntity.java
index f3680fb3..d886d570 100644
--- a/src/main/java/cyano/poweradvantage/api/PoweredEntity.java
+++ b/src/main/java/cyano/poweradvantage/api/PoweredEntity.java
@@ -1,15 +1,14 @@
package cyano.poweradvantage.api;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.network.IPacket;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.tileentity.ITickableTileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
import java.util.List;
@@ -25,28 +24,28 @@
* @author DrCyano
*
*/
-public abstract class PoweredEntity extends TileEntity implements ITickableTileEntity, IPowerMachine {
+public abstract class PoweredEntity extends BlockEntity implements IPowerMachine {
private final int powerUpdateInterval = 8;
private int conduitRefreshDelay = 2;
- private final zone.moddev.mc.poweradvantage.util.MachineCapabilities machineCapabilities =
- new zone.moddev.mc.poweradvantage.util.MachineCapabilities(this);
+ private final zone.moddev.mc.basepower.util.MachineCapabilities machineCapabilities =
+ new zone.moddev.mc.basepower.util.MachineCapabilities(this);
@Override
public net.minecraftforge.common.util.LazyOptional getCapability(
- net.minecraftforge.common.capabilities.Capability capability, net.minecraft.util.Direction face) {
+ net.minecraftforge.common.capabilities.Capability capability, net.minecraft.core.Direction face) {
if (!areCapabilitiesValid()) return net.minecraftforge.common.util.LazyOptional.empty();
if (machineCapabilities == null) return super.getCapability(capability, face);
net.minecraftforge.common.util.LazyOptional local = machineCapabilities.get(capability, face);
return local.isPresent() ? local : super.getCapability(capability, face);
}
- @Override protected void invalidateCaps() {
+ @Override public void invalidateCaps() {
if (machineCapabilities != null) machineCapabilities.invalidate();
super.invalidateCaps();
}
- @Override protected void reviveCaps() {
+ @Override public void reviveCaps() {
super.reviveCaps();
if (machineCapabilities != null) machineCapabilities.revive();
}
@@ -60,8 +59,8 @@ protected boolean areCapabilitiesValid() {
reviveCaps();
}
- protected PoweredEntity(TileEntityType> type) {
- super(type);
+ protected PoweredEntity(BlockEntityType> type, BlockPos pos, BlockState state) {
+ super(type, pos, state);
}
/**
@@ -110,13 +109,16 @@ public float addEnergy(float energy, ConduitType type) {
if (newValue < 0) {
float delta = -1 * this.getEnergy(type);
this.setEnergy(0, type);
+ if (delta != 0) markMachineStateUnsaved();
return delta;
} else if (newValue > this.getEnergyCapacity(type)) {
float delta = this.getEnergyCapacity(type) - this.getEnergy(type);
this.setEnergy(this.getEnergyCapacity(type), type);
+ if (delta != 0) markMachineStateUnsaved();
return delta;
}
this.setEnergy(newValue, type);
+ if (energy != 0) markMachineStateUnsaved();
return energy;
}
@@ -154,11 +156,11 @@ protected final void sync() {
* @param newSate State after change
* @return true if this TileEntity should be invalidated (deleted and recreated), false otherwise
*/
- public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newSate) {
+ public boolean shouldRefresh(Level world, BlockPos pos, BlockState oldState, BlockState newSate) {
return oldState.getBlock() != newSate.getBlock();
}
- protected final World powerAdvantageWorld() {
+ protected final Level powerAdvantageWorld() {
return super.getLevel();
}
@@ -182,9 +184,9 @@ public void onLoad() {
*
* @param player player receiving the current machine state
*/
- public final void syncPowerAdvantageDataTo(ServerPlayerEntity player) {
+ public final void syncPowerAdvantageDataTo(ServerPlayer player) {
this.setChanged();
- IPacket> packet = this.getUpdatePacket();
+ Packet> packet = this.getUpdatePacket();
if (packet != null) {
player.connection .send(packet);
}
@@ -194,7 +196,6 @@ public final void syncPowerAdvantageDataTo(ServerPlayerEntity player) {
* Method net.minecraft.server.gui.IUpdatePlayerListBox.update() is invoked
* to do tick updates
*/
- @Override
public final void tick() {
// this method was moved from TileEntity to IUpdatePlayerListBox
if (this.isServer()) {
@@ -204,6 +205,17 @@ public final void tick() {
if (this.isServer() && ((this.getLevel().getGameTime() + this.getTickOffset()) % powerUpdateInterval == 0)) {
this.powerUpdate();
}
+ markMachineStateUnsaved();
+ }
+
+ private void markMachineStateUnsaved() {
+ if (!(this.level instanceof net.minecraft.server.level.ServerLevel) || isRemoved()) return;
+ BlockPos pos = getBlockPos();
+ net.minecraft.world.level.chunk.LevelChunk chunk = ((net.minecraft.server.level.ServerLevel) this.level)
+ .getChunkSource().getChunkNow(pos.getX() >> 4, pos.getZ() >> 4);
+ // Timers and externally supplied energy can change without a GUI sync.
+ // Mark the loaded chunk only; do not load neighbours or notify comparators.
+ if (chunk != null) chunk.setUnsaved(true);
}
private void refreshConduitNetworkAfterLoad() {
@@ -267,8 +279,8 @@ private final int getTickOffset() {
* packet.
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
this.conduitRefreshDelay = 2;
if (tagRoot.contains("Energy", 11)) {
int[] data = tagRoot.getIntArray("Energy");
@@ -284,7 +296,7 @@ public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot
* the network.
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super.save(tagRoot);
int[] data = new int[this.getTypes().length];
for (int i = 0; i < data.length; i++) {
@@ -294,11 +306,11 @@ public CompoundNBT save(final CompoundNBT tagRoot) {
return tagRoot;
}
- /** @deprecated Minecraft now calls {@link #load(BlockState, CompoundNBT)}. */
- @Deprecated public void read(CompoundNBT tag) { load(getBlockState(), tag); }
+ /** @deprecated Minecraft now calls {@link #load(CompoundTag)}. */
+ @Deprecated public void read(CompoundTag tag) { load(tag); }
- /** @deprecated Minecraft now calls {@link #save(CompoundNBT)}. */
- @Deprecated public CompoundNBT write(CompoundNBT tag) { return save(tag); }
+ /** @deprecated Minecraft now calls {@link #save(CompoundTag)}. */
+ @Deprecated public CompoundTag write(CompoundTag tag) { return save(tag); }
/**
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/ColoredFluid.java b/src/main/java/cyano/poweradvantage/api/fluid/ColoredFluid.java
index 292d7e68..70f16cf7 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/ColoredFluid.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/ColoredFluid.java
@@ -1,6 +1,6 @@
package cyano.poweradvantage.api.fluid;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
/**
* Legacy description of a colored fluid.
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/FluidConduitBlock.java b/src/main/java/cyano/poweradvantage/api/fluid/FluidConduitBlock.java
index bbec92ef..9e02292a 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/FluidConduitBlock.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/FluidConduitBlock.java
@@ -3,8 +3,8 @@
import cyano.poweradvantage.api.ConduitBlock;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerConnectorContext;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import net.minecraft.block.material.Material;
+import zone.moddev.mc.basepower.init.Fluids;
+import net.minecraft.world.level.material.Material;
/**
*
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/FluidNetworkApi.java b/src/main/java/cyano/poweradvantage/api/fluid/FluidNetworkApi.java
index cebc5d6f..14eb54bd 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/FluidNetworkApi.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/FluidNetworkApi.java
@@ -6,11 +6,11 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerRequest;
-import net.minecraft.block.Block;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import zone.moddev.mc.poweradvantage.init.Fluids;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import zone.moddev.mc.basepower.init.Fluids;
/**
* Stable entry point for offering fluid from another mod to a PowerAdvantage
@@ -27,7 +27,7 @@ private FluidNetworkApi() {
*
* @return the exact number of millibuckets accepted by the network
*/
- public static int offerFluid(World world, BlockPos conduitPosition, FluidStack offered, int maxTransfer) {
+ public static int offerFluid(Level world, BlockPos conduitPosition, FluidStack offered, int maxTransfer) {
return offerFluid(world, conduitPosition, offered, maxTransfer, PowerRequest.LAST_PRIORITY, null);
}
@@ -39,7 +39,7 @@ public static int offerFluid(World world, BlockPos conduitPosition, FluidStack o
* @param source optional source object to exclude from receiving its own offer
* @return the exact number of millibuckets accepted by consumers
*/
- public static int offerFluid(World world, BlockPos conduitPosition, FluidStack offered, int maxTransfer,
+ public static int offerFluid(Level world, BlockPos conduitPosition, FluidStack offered, int maxTransfer,
byte minimumPriority, @Nullable Object source) {
if (world == null || world.isClientSide || conduitPosition == null || offered == null
|| offered.getFluid() == null || offered.amount <= 0 || maxTransfer <= 0
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/FluidPoweredEntity.java b/src/main/java/cyano/poweradvantage/api/fluid/FluidPoweredEntity.java
index 6185d00f..600c0574 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/FluidPoweredEntity.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/FluidPoweredEntity.java
@@ -3,12 +3,14 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.PoweredEntity;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import zone.moddev.mc.basepower.init.Fluids;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.state.BlockState;
import java.util.List;
@@ -30,8 +32,8 @@
*/
public abstract class FluidPoweredEntity extends PoweredEntity implements IAdvantageFluidHandler {
- protected FluidPoweredEntity(TileEntityType> type) {
- super(type);
+ protected FluidPoweredEntity(BlockEntityType> type, BlockPos pos, BlockState state) {
+ super(type, pos, state);
}
@@ -79,9 +81,9 @@ protected List getRequestsForFluid(ConduitType powerType) {
* @param tagRoot An NBT tag
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super.save(tagRoot);
- CompoundNBT tankTag = new CompoundNBT();
+ CompoundTag tankTag = new CompoundTag();
this.getTank().writeToNBT(tankTag);
tagRoot.put("Tank", tankTag);
return tagRoot;
@@ -93,10 +95,10 @@ public CompoundNBT save(final CompoundNBT tagRoot) {
* @param tagRoot An NBT tag
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
if (tagRoot.contains("Tank", 10)) {
- CompoundNBT tankTag = tagRoot .getCompound("Tank");
+ CompoundTag tankTag = tagRoot .getCompound("Tank");
getTank().readFromNBT(tankTag);
if (tankTag.contains("Empty", 1)) {
// empty the tank if NBT says its empty (not default behavior of Tank.readFromNBT(...) )
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/FluidStack.java b/src/main/java/cyano/poweradvantage/api/fluid/FluidStack.java
index 83b78291..f24dc411 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/FluidStack.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/FluidStack.java
@@ -2,11 +2,11 @@
import javax.annotation.Nullable;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import zone.moddev.mc.poweradvantage.init.Fluids;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import zone.moddev.mc.basepower.init.Fluids;
/**
* Stable Advantage millibucket value object. Native Forge fluid capabilities
@@ -15,7 +15,7 @@
public final class FluidStack {
private final Fluid fluid;
public int amount;
- @Nullable public CompoundNBT tag;
+ @Nullable public CompoundTag tag;
public FluidStack(Fluid fluid, int amount) {
if (fluid == null) throw new IllegalArgumentException("fluid");
@@ -36,7 +36,7 @@ public boolean isFluidEqual(@Nullable FluidStack other) {
&& (tag == null ? other.tag == null : tag.equals(other.tag));
}
- public CompoundNBT writeToNBT(CompoundNBT nbt) {
+ public CompoundTag writeToNBT(CompoundTag nbt) {
ResourceLocation id = net.minecraftforge.registries.ForgeRegistries.FLUIDS.getKey(fluid);
if (id != null) nbt.putString("FluidName", id.toString());
nbt.putInt("Amount", amount);
@@ -45,7 +45,7 @@ public CompoundNBT writeToNBT(CompoundNBT nbt) {
}
@Nullable
- public static FluidStack loadFluidStackFromNBT(CompoundNBT nbt) {
+ public static FluidStack loadFluidStackFromNBT(CompoundTag nbt) {
if (nbt == null || !nbt.contains("FluidName", 8)) return null;
Fluid fluid = Fluids.byName(nbt.getString("FluidName"));
if (fluid == null) return null;
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/FluidTank.java b/src/main/java/cyano/poweradvantage/api/fluid/FluidTank.java
index 8d18bf42..69d45666 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/FluidTank.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/FluidTank.java
@@ -2,8 +2,8 @@
import javax.annotation.Nullable;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.nbt.CompoundNBT;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.nbt.CompoundTag;
/** Millibucket tank retaining the Advantage fluid API and saved NBT format. */
public class FluidTank {
@@ -71,13 +71,13 @@ protected void onContentsChanged() {}
public FluidTankInfo getInfo() { return new FluidTankInfo(fluid, capacity); }
- public CompoundNBT writeToNBT(CompoundNBT nbt) {
+ public CompoundTag writeToNBT(CompoundTag nbt) {
if (fluid == null) nbt.putBoolean("Empty", true);
else fluid.writeToNBT(nbt);
return nbt;
}
- public FluidTank readFromNBT(CompoundNBT nbt) {
+ public FluidTank readFromNBT(CompoundTag nbt) {
setFluid(nbt.contains("Empty", 1) ? null : FluidStack.loadFluidStackFromNBT(nbt));
return this;
}
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/IAdvantageFluidHandler.java b/src/main/java/cyano/poweradvantage/api/fluid/IAdvantageFluidHandler.java
index 54352dff..a463c880 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/IAdvantageFluidHandler.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/IAdvantageFluidHandler.java
@@ -2,8 +2,8 @@
import javax.annotation.Nullable;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.core.Direction;
/**
* Stable millibucket fluid contract used by Advantage machines. On Forge 1.14
diff --git a/src/main/java/cyano/poweradvantage/api/fluid/InteractiveFluidBlock.java b/src/main/java/cyano/poweradvantage/api/fluid/InteractiveFluidBlock.java
index a81598b8..0d160ac8 100644
--- a/src/main/java/cyano/poweradvantage/api/fluid/InteractiveFluidBlock.java
+++ b/src/main/java/cyano/poweradvantage/api/fluid/InteractiveFluidBlock.java
@@ -2,43 +2,43 @@
import java.util.function.BiConsumer;
-import net.minecraft.block.Block;
-import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.fluid.FlowingFluid;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.level.material.FlowingFluid;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
/** A native 1.13 fluid block which can affect immersed living entities. */
-public class InteractiveFluidBlock extends FlowingFluidBlock {
- private final BiConsumer immersionEffect;
+public class InteractiveFluidBlock extends LiquidBlock {
+ private final BiConsumer immersionEffect;
private final boolean flammable;
public InteractiveFluidBlock(FlowingFluid fluid, Block.Properties properties, boolean flammable,
- BiConsumer immersionEffect) {
+ BiConsumer immersionEffect) {
super(fluid, properties);
this.flammable = flammable;
this.immersionEffect = immersionEffect;
}
@Override
- public void entityInside(BlockState state, World world, BlockPos pos, Entity entity) {
+ public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
if (immersionEffect != null && entity instanceof LivingEntity) {
immersionEffect.accept(world, (LivingEntity) entity);
}
}
@Override
- public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ public int getFlammability(BlockState state, BlockGetter world, BlockPos pos, Direction face) {
return flammable ? 60 : 0;
}
@Override
- public int getFireSpreadSpeed(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ public int getFireSpreadSpeed(BlockState state, BlockGetter world, BlockPos pos, Direction face) {
return flammable ? 30 : 0;
}
}
diff --git a/src/main/java/cyano/poweradvantage/api/migration/LegacyConfigMigration.java b/src/main/java/cyano/poweradvantage/api/migration/LegacyConfigMigration.java
index 98a307d9..9f7780b4 100644
--- a/src/main/java/cyano/poweradvantage/api/migration/LegacyConfigMigration.java
+++ b/src/main/java/cyano/poweradvantage/api/migration/LegacyConfigMigration.java
@@ -72,7 +72,13 @@ private Result(boolean migrated, int importedValues, Path legacyFile, Path targe
}
public static Result migrate(Path configDirectory, String modId, Mapping... mappings) throws IOException {
+ return migrate(configDirectory, modId, modId, mappings);
+ }
+
+ public static Result migrate(Path configDirectory, String modId, String legacyModId, Mapping... mappings)
+ throws IOException {
Path legacyFile = configDirectory.resolve(modId + ".cfg");
+ if (!Files.isRegularFile(legacyFile)) legacyFile = configDirectory.resolve(legacyModId + ".cfg");
Path targetFile = configDirectory.resolve(modId + "-common.toml");
Path reportFile = configDirectory.resolve(modId + "-legacy-config-migration.txt");
if (!Files.isRegularFile(legacyFile) || Files.exists(targetFile)) {
@@ -107,7 +113,7 @@ public static Result migrate(Path configDirectory, String modId, Mapping... mapp
}
List toml = new ArrayList<>();
- toml.add("# Generated once from " + modId + ".cfg by the Advantage 1.13 migration.");
+ toml.add("# Generated once from " + legacyFile.getFileName() + " by the basePower migration.");
toml.add("# The original cfg file has deliberately been retained.");
toml.add("");
for (Map.Entry> section : sections.entrySet()) {
diff --git a/src/main/java/cyano/poweradvantage/api/migration/LegacyMigrationApi.java b/src/main/java/cyano/poweradvantage/api/migration/LegacyMigrationApi.java
index 765c7861..a31200b6 100644
--- a/src/main/java/cyano/poweradvantage/api/migration/LegacyMigrationApi.java
+++ b/src/main/java/cyano/poweradvantage/api/migration/LegacyMigrationApi.java
@@ -7,10 +7,10 @@
import java.util.Map;
import java.util.Set;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.resources.ResourceLocation;
/**
* Registration surface for Advantage add-ons that need pre-flattening world
@@ -25,10 +25,11 @@ public interface BlockStateCodec {
@FunctionalInterface
public interface NbtMigration {
- boolean migrate(CompoundNBT compound);
+ boolean migrate(CompoundTag compound);
}
private static final Set NAMESPACES = new LinkedHashSet<>();
+ private static final Map NAMESPACE_ALIASES = new LinkedHashMap<>();
private static final Map BLOCK_ALIASES = new LinkedHashMap<>();
private static final Map ITEM_ALIASES = new LinkedHashMap<>();
private static final Map BLOCK_CODECS = new LinkedHashMap<>();
@@ -45,6 +46,20 @@ public static synchronized void registerNamespace(String namespace) {
NAMESPACES.add(normalize(namespace));
}
+ /** Only installed mods contribute aliases. Explicit path aliases still take precedence. */
+ public static synchronized void registerNamespaceAlias(String legacyNamespace, String currentNamespace) {
+ String legacy = normalize(legacyNamespace);
+ String current = normalize(currentNamespace);
+ registerNamespace(legacy);
+ registerNamespace(current);
+ NAMESPACE_ALIASES.put(legacy, current);
+ }
+
+ public static synchronized ResourceLocation registryTarget(ResourceLocation id) {
+ String current = NAMESPACE_ALIASES.get(id.getNamespace());
+ return current == null ? id : new ResourceLocation(current, id.getPath());
+ }
+
public static synchronized void registerBlockAlias(ResourceLocation legacyId, ResourceLocation currentId) {
BLOCK_ALIASES.put(legacyId, currentId);
registerNamespace(legacyId.getNamespace());
@@ -65,6 +80,22 @@ public static synchronized void registerTileEntityAlias(String legacyId, String
TILE_ALIASES.put(normalizeIdentity(legacyId), normalizeIdentity(currentId));
}
+ public static synchronized void registerTileEntityAliases(ResourceLocation current) {
+ String path = current.getPath();
+ registerTileVariants(current.getNamespace(), path, current.toString());
+ for (Map.Entry alias : NAMESPACE_ALIASES.entrySet()) {
+ if (alias.getValue().equals(current.getNamespace())) {
+ registerTileVariants(alias.getKey(), path, current.toString());
+ }
+ }
+ }
+
+ private static void registerTileVariants(String namespace, String path, String target) {
+ registerTileEntityAlias(namespace + ":" + path, target);
+ registerTileEntityAlias(namespace + "." + path, target);
+ registerTileEntityAlias("minecraft:" + namespace + "." + path, target);
+ }
+
public static synchronized void registerEntityAlias(String legacyId, String currentId) {
ENTITY_ALIASES.put(normalizeIdentity(legacyId), normalizeIdentity(currentId));
}
@@ -92,16 +123,17 @@ public static synchronized boolean handlesNamespace(String namespace) {
public static synchronized ResourceLocation blockTarget(ResourceLocation legacyId) {
ResourceLocation target = BLOCK_ALIASES.get(legacyId);
- return target == null ? legacyId : target;
+ return target == null ? registryTarget(legacyId) : target;
}
public static synchronized ResourceLocation itemTarget(ResourceLocation legacyId) {
ResourceLocation target = ITEM_ALIASES.get(legacyId);
- return target == null ? legacyId : target;
+ return target == null ? registryTarget(legacyId) : target;
}
public static synchronized BlockState decodeBlockState(ResourceLocation legacyId, Block block, int metadata) {
BlockStateCodec codec = BLOCK_CODECS.get(legacyId);
+ if (codec == null) codec = BLOCK_CODECS.get(blockTarget(legacyId));
return codec == null ? block.defaultBlockState() : codec.decode(block, metadata & 15);
}
@@ -129,7 +161,7 @@ public static synchronized boolean isDurableItem(ResourceLocation id) {
return DURABLE_ITEMS.contains(id) || DURABLE_ITEMS.contains(itemTarget(id));
}
- public static synchronized boolean migrateRegisteredNbt(CompoundNBT compound) {
+ public static synchronized boolean migrateRegisteredNbt(CompoundTag compound) {
boolean changed = false;
for (NbtMigration migration : NBT_MIGRATIONS.values()) changed |= migration.migrate(compound);
return changed;
diff --git a/src/main/java/cyano/poweradvantage/api/migration/LegacyOreSpawnConfigBridge.java b/src/main/java/cyano/poweradvantage/api/migration/LegacyOreSpawnConfigBridge.java
index 83e34820..4f080498 100644
--- a/src/main/java/cyano/poweradvantage/api/migration/LegacyOreSpawnConfigBridge.java
+++ b/src/main/java/cyano/poweradvantage/api/migration/LegacyOreSpawnConfigBridge.java
@@ -59,7 +59,15 @@ private Result(boolean migrated, int rules, Path source, Path target) {
* OreSpawn 4 provider-override location.
*/
public static synchronized Result migrate(Path configDirectory, String modId) throws IOException {
+ return migrate(configDirectory, modId, modId);
+ }
+
+ public static synchronized Result migrate(Path configDirectory, String modId, String legacyModId)
+ throws IOException {
Path source = configDirectory.resolve("orespawn").resolve(modId + ".json");
+ if (!Files.isRegularFile(source)) {
+ source = configDirectory.resolve("orespawn").resolve(legacyModId + ".json");
+ }
Path target = configDirectory.resolve(modId + "-orespawn.json");
if (!Files.isRegularFile(source) || Files.exists(target)
|| Files.exists(configDirectory.resolve("orespawn-worldgen.json"))) {
@@ -84,6 +92,9 @@ public static synchronized Result migrate(Path configDirectory, String modId) th
JsonObject oldOre = oreElement.getAsJsonObject();
String output = string(oldOre, "blockID", "");
if (!isRegistryName(output)) continue;
+ if (output.startsWith(legacyModId + ":")) {
+ output = modId + output.substring(legacyModId.length());
+ }
JsonObject ore = convertOre(oldOre, output, dimensionId);
if (ore == null) continue;
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/ExternalPowerRequest.java b/src/main/java/cyano/poweradvantage/api/modsupport/ExternalPowerRequest.java
index 3ee7f59b..d979ec30 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/ExternalPowerRequest.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/ExternalPowerRequest.java
@@ -1,7 +1,7 @@
package cyano.poweradvantage.api.modsupport;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
import cyano.poweradvantage.api.PowerRequest;
/**
@@ -11,7 +11,7 @@
*/
public class ExternalPowerRequest extends PowerRequest {
- public final TileEntity externalPowerAcceptor;
+ public final BlockEntity externalPowerAcceptor;
public final BlockPos pos;
/**
@@ -20,7 +20,7 @@ public class ExternalPowerRequest extends PowerRequest {
* @param requestSize Amount of energy requested
* @param source The source TileEntity (which does not extend PoweredEntity)
*/
- public ExternalPowerRequest(float requestSize, TileEntity source) {
+ public ExternalPowerRequest(float requestSize, BlockEntity source) {
super(0, requestSize, null);
externalPowerAcceptor = source;
pos = source.getBlockPos();
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/ILightWeightPowerAcceptor.java b/src/main/java/cyano/poweradvantage/api/modsupport/ILightWeightPowerAcceptor.java
index 71c2edf1..3d60e9e9 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/ILightWeightPowerAcceptor.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/ILightWeightPowerAcceptor.java
@@ -1,8 +1,8 @@
package cyano.poweradvantage.api.modsupport;
import cyano.poweradvantage.api.ConduitType;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
/**
* This interface is used in the LightWeightPowerRegistry to allow established mods to optionally
@@ -46,7 +46,7 @@ public default boolean canAcceptEnergyType(ConduitType powerType, Direction inpu
* @param powerType The type of power being offered
* @return How much energy of the provided type your TileEntity is willing to accept.
*/
- public abstract float getEnergyDemand(TileEntity yourMachine, ConduitType powerType);
+ public abstract float getEnergyDemand(BlockEntity yourMachine, ConduitType powerType);
/**
* This method is called when energy it being provided to your TileEntity. The implementation of
@@ -58,6 +58,6 @@ public default boolean canAcceptEnergyType(ConduitType powerType, Direction inpu
* @param powerType The type of power provided
* @return The actual amount of power taken
*/
- public abstract float addEnergy(TileEntity yourMachine, float amountAdded, ConduitType powerType);
+ public abstract float addEnergy(BlockEntity yourMachine, float amountAdded, ConduitType powerType);
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/LightWeightPowerRegistry.java b/src/main/java/cyano/poweradvantage/api/modsupport/LightWeightPowerRegistry.java
index aa1bfb10..fa2dd7c3 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/LightWeightPowerRegistry.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/LightWeightPowerRegistry.java
@@ -2,11 +2,11 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.IPowerMachine;
-import net.minecraft.block.Block;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import zone.moddev.mc.basepower.PowerAdvantage;
import java.util.HashMap;
import java.util.Map;
@@ -18,7 +18,7 @@
* considered "external" power systems because their power implementation is not controlled by Power
* Advantage.
* For example, you can add Power Advantage compatibility to an existing mod like this:
- if(Loader.isModLoaded("poweradvantage")){
+ if(Loader.isModLoaded("basepower")){
LightWeightPowerRegistry.registerLightWeightPowerAcceptor(Blocks.myMachine,
new ILightWeightPowerAcceptor(){
@@ -109,9 +109,9 @@ public boolean isExternalPowerBlock(Block b) {
* @param energyType The type of energy being offered
* @return How much of the offered energy the target machine would like to receive.
*/
- public float getRequestedPowerAmount(IBlockReader w, BlockPos coord, ConduitType energyType) {
+ public float getRequestedPowerAmount(BlockGetter w, BlockPos coord, ConduitType energyType) {
Block b = w.getBlockState(coord).getBlock();
- TileEntity te = w.getBlockEntity(coord);
+ BlockEntity te = w.getBlockEntity(coord);
if (te == null) return 0;
if (te instanceof IPowerMachine) {
return ((IPowerMachine) te).getPowerRequest(energyType).amount;
@@ -132,9 +132,9 @@ public float getRequestedPowerAmount(IBlockReader w, BlockPos coord, ConduitType
* @return The amount of energy that the target machine actually added (may be less than the
* amount provided)
*/
- public float addPower(IBlockReader w, BlockPos coord, ConduitType energyType, float amount) {
+ public float addPower(BlockGetter w, BlockPos coord, ConduitType energyType, float amount) {
Block b = w.getBlockState(coord).getBlock();
- TileEntity te = w.getBlockEntity(coord);
+ BlockEntity te = w.getBlockEntity(coord);
if (te == null) return 0;
if (te instanceof IPowerMachine) {
return ((IPowerMachine) te).addEnergy(amount, energyType);
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/TileEntityConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/TileEntityConverter.java
index 402cb963..0841ea89 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/TileEntityConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/TileEntityConverter.java
@@ -3,9 +3,9 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.simple.TileEntitySimplePowerMachine;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.tileentity.TileEntityType;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.world.level.block.entity.BlockEntityType;
import java.util.Arrays;
@@ -28,8 +28,8 @@ public abstract class TileEntityConverter extends TileEntitySimplePowerMachine {
final int INDEX_OTHER_ENERGY_UPPER = 2;
private final ConduitType type;
- public TileEntityConverter(TileEntityType> tileType, ConduitType type, float powerAdvantageEnergyBuffer, String unlocalizedName) {
- super(tileType, type, powerAdvantageEnergyBuffer, unlocalizedName);
+ public TileEntityConverter(BlockEntityType> tileType, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, ConduitType type, float powerAdvantageEnergyBuffer, String unlocalizedName) {
+ super(tileType, pos, state, type, powerAdvantageEnergyBuffer, unlocalizedName);
halfFull = powerAdvantageEnergyBuffer * 0.5f;
this.type = type;
}
@@ -174,15 +174,15 @@ public byte getMinimumSinkPriority() {
}
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
if (tagRoot.contains("Other", 99)) {
this.setOtherEnergy(tagRoot.getDouble("Other"));
}
}
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
tagRoot.putDouble("Other", this.getOtherEnergy());
return tagRoot;
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/package-info.java b/src/main/java/cyano/poweradvantage/api/modsupport/package-info.java
index b86dd02a..16d362dc 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/package-info.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/package-info.java
@@ -1,7 +1,7 @@
/**
This package contains the light-weight API for people interested in adding Power Advantage support
to existing mods (instead of making a Power Advantage add-on mod). Typically, you achieve this be
-first checking whether Power Advantage exists with if(Loader.isModLoaded("poweradvantage")){ ... }.
+first checking whether basePower exists with if(Loader.isModLoaded("basepower")){ ... }.
Then if you detect that Power Advantage is installed, you can add an ad-hoc power handler for each
of your machines like this:
LightWeightPowerRegistry.registerLightWeightPowerAcceptor(Blocks.myMachine,
@@ -28,4 +28,4 @@ public float addEnergy(TileEntity yourMachine,
The above example is for registerring a machine that should accept steam and electricity power from
Power Advantage add-on mods.
*/
-package cyano.poweradvantage.api.modsupport;
\ No newline at end of file
+package cyano.poweradvantage.api.modsupport;
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/rf/BlockRFConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/rf/BlockRFConverter.java
index 25248cb2..9f87dbe4 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/rf/BlockRFConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/rf/BlockRFConverter.java
@@ -2,11 +2,11 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.simple.BlockSimplePowerMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
/** Historical RF-labelled converter block, backed by Forge Energy in 1.13. */
public class BlockRFConverter extends BlockSimplePowerMachine {
@@ -19,9 +19,9 @@ public BlockRFConverter(Material material, float hardness, ConduitType type,
}
@Override
- public TileEntityRFConverter newBlockEntity(IBlockReader world) {
+ public TileEntityRFConverter newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
try {
- return tileEntityClass.newInstance();
+ return tileEntityClass.getConstructor(BlockPos.class, BlockState.class).newInstance(pos, state);
} catch (ReflectiveOperationException exception) {
throw new IllegalStateException("Cannot create converter tile " + tileEntityClass.getName(), exception);
}
@@ -30,5 +30,5 @@ public TileEntityRFConverter newBlockEntity(IBlockReader world) {
@Override public boolean isPowerSink(ConduitType powerType) { return true; }
@Override public boolean isPowerSource(ConduitType powerType) { return true; }
@Override public boolean hasAnalogOutputSignal(BlockState state) { return false; }
- @Override public int getAnalogOutputSignal(BlockState state, World world, BlockPos pos) { return 0; }
+ @Override public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { return 0; }
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFConverter.java
index 4e50ff14..d8ec65ac 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFConverter.java
@@ -5,14 +5,14 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.modsupport.TileEntityConverter;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.Direction;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/** Forge Energy bridge retained behind the historical RF-labelled block IDs. */
public class TileEntityRFConverter extends TileEntityConverter implements IEnergyStorage {
@@ -21,9 +21,9 @@ public class TileEntityRFConverter extends TileEntityConverter implements IEnerg
private LazyOptional energyCapability = LazyOptional.of(() -> this);
private int forgeBuffer;
- protected TileEntityRFConverter(TileEntityType> tileType, ConduitType type,
+ protected TileEntityRFConverter(BlockEntityType> tileType, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, ConduitType type,
float advantageBuffer, int forgeBufferSize, String translationKey) {
- super(tileType, type, advantageBuffer, translationKey);
+ super(tileType, pos, state, type, advantageBuffer, translationKey);
this.forgeBufferSize = forgeBufferSize;
this.halfBuffer = forgeBufferSize / 2;
}
@@ -33,7 +33,7 @@ public void tickUpdate(boolean server) {
if (!server) return;
int index = (int) (getLevel().getGameTime() % Direction.values().length);
Direction side = Direction.values()[index];
- TileEntity neighbor = getLevel().getBlockEntity(getBlockPos().relative(side));
+ BlockEntity neighbor = getLevel().getBlockEntity(getBlockPos().relative(side));
if (neighbor == null) return;
neighbor.getCapability(CapabilityEnergy.ENERGY, side.getOpposite()).ifPresent(storage -> {
int delta = forgeBuffer - halfBuffer;
@@ -69,12 +69,12 @@ public LazyOptional getCapability(@Nonnull Capability capability, @Nul
return energyCapability != null && capability == CapabilityEnergy.ENERGY ? energyCapability.cast() : super.getCapability(capability, side);
}
- @Override protected void invalidateCaps() {
+ @Override public void invalidateCaps() {
super.invalidateCaps();
if (energyCapability != null) energyCapability.invalidate();
}
- @Override protected void reviveCaps() {
+ @Override public void reviveCaps() {
super.reviveCaps();
if (energyCapability != null && !energyCapability.isPresent()) energyCapability = LazyOptional.of(() -> this);
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFElectricityConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFElectricityConverter.java
index 8c57cf57..d23807fd 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFElectricityConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFElectricityConverter.java
@@ -1,13 +1,13 @@
package cyano.poweradvantage.api.modsupport.rf;
import cyano.poweradvantage.api.ConduitType;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
public class TileEntityRFElectricityConverter extends TileEntityRFConverter {
- public TileEntityRFElectricityConverter() {
- super(Entities.RF_ELECTRICITY_CONVERTER, new ConduitType("electricity"), 8000, 1000,
- "tile.poweradvantage.converter_rf_electricity.name");
+ public TileEntityRFElectricityConverter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.RF_ELECTRICITY_CONVERTER, pos, state, new ConduitType("electricity"), 8000, 1000,
+ "tile.basepower.converter_rf_electricity.name");
}
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFQuantumConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFQuantumConverter.java
index 88749517..ad3292fb 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFQuantumConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFQuantumConverter.java
@@ -1,13 +1,13 @@
package cyano.poweradvantage.api.modsupport.rf;
import cyano.poweradvantage.api.ConduitType;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
public class TileEntityRFQuantumConverter extends TileEntityRFConverter {
- public TileEntityRFQuantumConverter() {
- super(Entities.RF_QUANTUM_CONVERTER, new ConduitType("quantum"), 1000, 1000,
- "tile.poweradvantage.converter_rf_quantum.name");
+ public TileEntityRFQuantumConverter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.RF_QUANTUM_CONVERTER, pos, state, new ConduitType("quantum"), 1000, 1000,
+ "tile.basepower.converter_rf_quantum.name");
}
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFSteamConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFSteamConverter.java
index ccd184c8..ecdd0e8d 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFSteamConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/rf/TileEntityRFSteamConverter.java
@@ -1,13 +1,13 @@
package cyano.poweradvantage.api.modsupport.rf;
import cyano.poweradvantage.api.ConduitType;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
public class TileEntityRFSteamConverter extends TileEntityRFConverter {
- public TileEntityRFSteamConverter() {
- super(Entities.RF_STEAM_CONVERTER, new ConduitType("steam"), 1000, 1000,
- "tile.poweradvantage.converter_rf_steam.name");
+ public TileEntityRFSteamConverter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.RF_STEAM_CONVERTER, pos, state, new ConduitType("steam"), 1000, 1000,
+ "tile.basepower.converter_rf_steam.name");
}
}
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/BlockTRConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/BlockTRConverter.java
index 2e89f278..b454a25a 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/BlockTRConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/BlockTRConverter.java
@@ -2,7 +2,7 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.modsupport.rf.BlockRFConverter;
-import net.minecraft.block.material.Material;
+import net.minecraft.world.level.material.Material;
/** Historical Tech Reborn-labelled converter block, backed by Forge Energy. */
public class BlockTRConverter extends BlockRFConverter {
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRConverter.java
index 0cded265..d2e778f1 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRConverter.java
@@ -2,16 +2,16 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.modsupport.rf.TileEntityRFConverter;
-import net.minecraft.tileentity.TileEntityType;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import zone.moddev.mc.basepower.PowerAdvantage;
/**
* Compatibility base for the historical Tech Reborn-labelled converter.
* Forge Energy is the common energy API from 1.13 onward.
*/
public abstract class TileEntityTRConverter extends TileEntityRFConverter {
- protected TileEntityTRConverter(TileEntityType> type, ConduitType conduitType, String translationKey) {
- super(type, conduitType, 1024F, 2048, translationKey);
+ protected TileEntityTRConverter(BlockEntityType> type, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, ConduitType conduitType, String translationKey) {
+ super(type, pos, state, conduitType, 1024F, 2048, translationKey);
}
@Override public boolean canConvertEnergy(ConduitType type) {
diff --git a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRElectricityConverter.java b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRElectricityConverter.java
index 8ff86d9a..a6c869ac 100644
--- a/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRElectricityConverter.java
+++ b/src/main/java/cyano/poweradvantage/api/modsupport/techreborn/TileEntityTRElectricityConverter.java
@@ -1,20 +1,20 @@
package cyano.poweradvantage.api.modsupport.techreborn;
import cyano.poweradvantage.api.ConduitType;
-import net.minecraft.entity.player.PlayerEntity;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import net.minecraft.world.entity.player.Player;
+import zone.moddev.mc.basepower.init.Entities;
/**
* Created by Chris on 4/10/2016.
*/
public class TileEntityTRElectricityConverter extends TileEntityTRConverter {
- public TileEntityTRElectricityConverter() {
- super(Entities.TR_ELECTRICITY_CONVERTER, new ConduitType("electricity"),
- "tile.poweradvantage.converter_tr_electricity.name");
+ public TileEntityTRElectricityConverter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.TR_ELECTRICITY_CONVERTER, pos, state, new ConduitType("electricity"),
+ "tile.basepower.converter_tr_electricity.name");
}
@Override
- public boolean stillValid(PlayerEntity player) {
+ public boolean stillValid(Player player) {
return true;
}
}
diff --git a/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidConduit.java b/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidConduit.java
index dfb92704..3733536b 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidConduit.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidConduit.java
@@ -3,20 +3,20 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerConnectorContext;
import cyano.poweradvantage.api.fluid.FluidConduitBlock;
-import zone.moddev.mc.poweradvantage.util.PowerHelper;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.pathfinding.PathType;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.shapes.VoxelShape;
-import net.minecraft.util.math.shapes.VoxelShapes;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.IWorld;
+import zone.moddev.mc.basepower.util.PowerHelper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.pathfinder.PathComputationType;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.LevelAccessor;
/**
* Standard six-way fluid conduit block used by PowerAdvantage and extensions.
@@ -43,22 +43,22 @@ public BlockSimpleFluidConduit(Material material, float hardness, float pipeRadi
@Override public boolean isPowerSource(ConduitType conduitType) { return false; }
@Override
- protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
builder.add(WEST, DOWN, SOUTH, EAST, UP, NORTH);
}
@Override
- public BlockState getStateForPlacement(BlockItemUseContext context) {
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
return connectedState(defaultBlockState(), context.getLevel(), context.getClickedPos());
}
@Override
public BlockState updateShape(BlockState state, Direction facing, BlockState facingState,
- IWorld world, BlockPos currentPos, BlockPos facingPos) {
+ LevelAccessor world, BlockPos currentPos, BlockPos facingPos) {
return state.setValue(property(facing), canConnectTo(world, currentPos, state, facing));
}
- private BlockState connectedState(BlockState state, IBlockReader world, BlockPos pos) {
+ private BlockState connectedState(BlockState state, BlockGetter world, BlockPos pos) {
return state.setValue(WEST, canConnectTo(world, pos, state, Direction.WEST))
.setValue(DOWN, canConnectTo(world, pos, state, Direction.DOWN))
.setValue(SOUTH, canConnectTo(world, pos, state, Direction.SOUTH))
@@ -79,7 +79,7 @@ private static BooleanProperty property(Direction facing) {
}
}
- protected boolean canConnectTo(IBlockReader world, BlockPos pos, BlockState state,
+ protected boolean canConnectTo(BlockGetter world, BlockPos pos, BlockState state,
Direction face) {
for (ConduitType type : getTypes()) {
if (PowerHelper.areConnectable(new PowerConnectorContext(type, world, state, pos, face))) {
@@ -90,7 +90,7 @@ protected boolean canConnectTo(IBlockReader world, BlockPos pos, BlockState stat
}
@Override
- public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, net.minecraft.util.math.shapes.ISelectionContext context) {
+ public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, net.minecraft.world.phys.shapes.CollisionContext context) {
double min = 8.0D - pipeRadius * 16.0D;
double max = 8.0D + pipeRadius * 16.0D;
VoxelShape shape = Block.box(min, min, min, max, max, max);
@@ -99,23 +99,23 @@ public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, n
if (!state.getValue(property(facing))) continue;
connected = true;
switch (facing) {
- case DOWN: shape = VoxelShapes.or(shape, Block.box(min, 0, min, max, min, max)); break;
- case UP: shape = VoxelShapes.or(shape, Block.box(min, max, min, max, 16, max)); break;
- case NORTH: shape = VoxelShapes.or(shape, Block.box(min, min, 0, max, max, min)); break;
- case SOUTH: shape = VoxelShapes.or(shape, Block.box(min, min, max, max, max, 16)); break;
- case WEST: shape = VoxelShapes.or(shape, Block.box(0, min, min, min, max, max)); break;
- case EAST: shape = VoxelShapes.or(shape, Block.box(max, min, min, 16, max, max)); break;
+ case DOWN: shape = Shapes.or(shape, Block.box(min, 0, min, max, min, max)); break;
+ case UP: shape = Shapes.or(shape, Block.box(min, max, min, max, 16, max)); break;
+ case NORTH: shape = Shapes.or(shape, Block.box(min, min, 0, max, max, min)); break;
+ case SOUTH: shape = Shapes.or(shape, Block.box(min, min, max, max, max, 16)); break;
+ case WEST: shape = Shapes.or(shape, Block.box(0, min, min, min, max, max)); break;
+ case EAST: shape = Shapes.or(shape, Block.box(max, min, min, 16, max, max)); break;
}
}
if (!connected) {
- shape = VoxelShapes.or(shape, Block.box(0, min, min, 16, max, max));
- shape = VoxelShapes.or(shape, Block.box(min, min, 0, max, max, 16));
+ shape = Shapes.or(shape, Block.box(0, min, min, 16, max, max));
+ shape = Shapes.or(shape, Block.box(min, min, 0, max, max, 16));
}
return shape;
}
public boolean isFullCube(BlockState state) { return false; }
- @Override public boolean isPathfindable(BlockState state, IBlockReader world, BlockPos pos, PathType type) { return false; }
+ @Override public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; }
/** Legacy metadata bridge retained for migration tests. */
public int getMetaFromState(BlockState state) { return 0; }
diff --git a/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidMachine.java b/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidMachine.java
index c704d81b..481d29dd 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidMachine.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/BlockSimpleFluidMachine.java
@@ -1,14 +1,14 @@
package cyano.poweradvantage.api.simple;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import net.minecraft.block.material.Material;
+import zone.moddev.mc.basepower.init.Fluids;
+import net.minecraft.world.level.material.Material;
/**
* This block class provides all of the standard code for creating a machine
* block with an inventory and user interface that gives fluids to connected
* fluid consumers.
* Example usage:
-int guiID = zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry.addGUI(new MySimpleMachineGUI());
+int guiID = zone.moddev.mc.basepower.registry.MachineGUIRegistry.addGUI(new MySimpleMachineGUI());
Block myMachineBlock = new MyBlockSimpleFluidSource(guiID,PowerAdvantage.getInstance());
myMachineBlock.setTranslationKey(MODID+"."+"my_machine");
myMachineBlock.setRegistryName(MODID, "my_machine");
@@ -31,4 +31,8 @@ public BlockSimpleFluidMachine(Material blockMaterial, float hardness) {
super(blockMaterial, hardness, Fluids.fluidConduit_general);
}
+ protected BlockSimpleFluidMachine(net.minecraft.world.level.block.Block.Properties properties) {
+ super(properties, Fluids.fluidConduit_general);
+ }
+
}
diff --git a/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerConduit.java b/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerConduit.java
index 1e87d065..5c918975 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerConduit.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerConduit.java
@@ -3,20 +3,20 @@
import cyano.poweradvantage.api.ConduitBlock;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerConnectorContext;
-import zone.moddev.mc.poweradvantage.util.PowerHelper;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.pathfinding.PathType;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.shapes.VoxelShape;
-import net.minecraft.util.math.shapes.VoxelShapes;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.IWorld;
+import zone.moddev.mc.basepower.util.PowerHelper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.pathfinder.PathComputationType;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.LevelAccessor;
public abstract class BlockSimplePowerConduit extends ConduitBlock {
public static final BooleanProperty SOUTH = BooleanProperty.create("south");
@@ -58,22 +58,22 @@ public boolean canAcceptConnection(PowerConnectorContext connection) {
@Override public boolean isPowerSource(ConduitType conduitType) { return false; }
@Override
- protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
builder.add(WEST, DOWN, SOUTH, EAST, UP, NORTH);
}
@Override
- public BlockState getStateForPlacement(BlockItemUseContext context) {
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
return connectedState(defaultBlockState(), context.getLevel(), context.getClickedPos());
}
@Override
public BlockState updateShape(BlockState state, Direction facing, BlockState facingState,
- IWorld world, BlockPos currentPos, BlockPos facingPos) {
+ LevelAccessor world, BlockPos currentPos, BlockPos facingPos) {
return state.setValue(property(facing), canConnectTo(world, currentPos, state, facing, facingPos));
}
- private BlockState connectedState(BlockState state, IBlockReader world, BlockPos pos) {
+ private BlockState connectedState(BlockState state, BlockGetter world, BlockPos pos) {
return state.setValue(WEST, canConnectTo(world, pos, state, Direction.WEST, pos.west()))
.setValue(DOWN, canConnectTo(world, pos, state, Direction.DOWN, pos.below()))
.setValue(SOUTH, canConnectTo(world, pos, state, Direction.SOUTH, pos.south()))
@@ -94,7 +94,7 @@ private static BooleanProperty property(Direction facing) {
}
}
- protected boolean canConnectTo(IBlockReader world, BlockPos thisBlock, BlockState state,
+ protected boolean canConnectTo(BlockGetter world, BlockPos thisBlock, BlockState state,
Direction face, BlockPos otherBlock) {
for (ConduitType type : types) {
if (PowerHelper.areConnectable(new PowerConnectorContext(type, world, state, thisBlock, face))) {
@@ -105,7 +105,7 @@ protected boolean canConnectTo(IBlockReader world, BlockPos thisBlock, BlockStat
}
@Override
- public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, net.minecraft.util.math.shapes.ISelectionContext context) {
+ public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, net.minecraft.world.phys.shapes.CollisionContext context) {
double min = 8.0D - pipeRadius * 16.0D;
double max = 8.0D + pipeRadius * 16.0D;
VoxelShape shape = Block.box(min, min, min, max, max, max);
@@ -114,23 +114,23 @@ public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, n
if (!state.getValue(property(facing))) continue;
connected = true;
switch (facing) {
- case DOWN: shape = VoxelShapes.or(shape, Block.box(min, 0, min, max, min, max)); break;
- case UP: shape = VoxelShapes.or(shape, Block.box(min, max, min, max, 16, max)); break;
- case NORTH: shape = VoxelShapes.or(shape, Block.box(min, min, 0, max, max, min)); break;
- case SOUTH: shape = VoxelShapes.or(shape, Block.box(min, min, max, max, max, 16)); break;
- case WEST: shape = VoxelShapes.or(shape, Block.box(0, min, min, min, max, max)); break;
- case EAST: shape = VoxelShapes.or(shape, Block.box(max, min, min, 16, max, max)); break;
+ case DOWN: shape = Shapes.or(shape, Block.box(min, 0, min, max, min, max)); break;
+ case UP: shape = Shapes.or(shape, Block.box(min, max, min, max, 16, max)); break;
+ case NORTH: shape = Shapes.or(shape, Block.box(min, min, 0, max, max, min)); break;
+ case SOUTH: shape = Shapes.or(shape, Block.box(min, min, max, max, max, 16)); break;
+ case WEST: shape = Shapes.or(shape, Block.box(0, min, min, min, max, max)); break;
+ case EAST: shape = Shapes.or(shape, Block.box(max, min, min, 16, max, max)); break;
}
}
if (!connected) {
- shape = VoxelShapes.or(shape, Block.box(0, min, min, 16, max, max));
- shape = VoxelShapes.or(shape, Block.box(min, min, 0, max, max, 16));
+ shape = Shapes.or(shape, Block.box(0, min, min, 16, max, max));
+ shape = Shapes.or(shape, Block.box(min, min, 0, max, max, 16));
}
return shape;
}
public boolean isFullCube(BlockState state) { return false; }
- @Override public boolean isPathfindable(BlockState state, IBlockReader world, BlockPos pos, PathType type) { return false; }
+ @Override public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; }
/** Legacy metadata bridge retained for migration tests. */
public int getMetaFromState(BlockState state) { return 0; }
diff --git a/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerMachine.java b/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerMachine.java
index aa676cc0..e82fe5ee 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerMachine.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/BlockSimplePowerMachine.java
@@ -1,28 +1,28 @@
package cyano.poweradvantage.api.simple;
import cyano.poweradvantage.api.*;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import net.minecraft.block.HorizontalBlock;
-import net.minecraft.block.material.Material;
-import net.minecraft.state.Property;
-import net.minecraft.state.DirectionProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.InventoryHelper;
-import net.minecraft.item.Item;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Mirror;
-import net.minecraft.util.Rotation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.Explosion;
-import net.minecraft.world.World;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.block.Block;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.properties.Property;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.Container;
+import net.minecraft.world.Containers;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.block.Mirror;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Explosion;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.block.Block;
import java.util.Random;
@@ -31,7 +31,7 @@
* block with an inventory and user interface that gives power to connected
* machines.
* Example usage:
-int guiID = zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry.addGUI(new MySimpleMachineGUI());
+int guiID = zone.moddev.mc.basepower.registry.MachineGUIRegistry.addGUI(new MySimpleMachineGUI());
Block myMachineBlock = new MyBlockSimplePowerSource(guiID,PowerAdvantage.getInstance());
myMachineBlock.setTranslationKey(MODID+"."+"my_machine");
myMachineBlock.setRegistryName(MODID, "my_machine");
@@ -46,7 +46,7 @@ public abstract class BlockSimplePowerMachine extends GUIBlock implements ITyped
/**
* Blockstate property indicating which direction the block is facing
*/
- public static final DirectionProperty FACING = HorizontalBlock.FACING;
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
/**
* Standard constructor for a machine block. Remember to set the GUI ID so that a GUI can pop-up
* when the player interacts with this block.
@@ -81,13 +81,13 @@ protected BlockSimplePowerMachine(Block.Properties properties, ConduitType... en
* TileEntitySimplePowerMachine.
*/
@Override
- public abstract PoweredEntity newBlockEntity(final IBlockReader world);
+ public abstract PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state);
/**
* Override of default block behavior
*/
@Override
- public void onPlace(final BlockState state, final World world, final BlockPos coord,
+ public void onPlace(final BlockState state, final Level world, final BlockPos coord,
final BlockState oldState, final boolean isMoving) {
super.onPlace(state, world, coord, oldState, isMoving);
this.setDefaultFacing(world, coord, state);
@@ -97,7 +97,7 @@ public void onPlace(final BlockState state, final World world, final BlockPos co
* This method is called when the block is removed from the world by an entity.
*/
@Override
- public void onRemove(BlockState state, World w, BlockPos coord, BlockState newState,
+ public void onRemove(BlockState state, Level w, BlockPos coord, BlockState newState,
boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
@@ -108,7 +108,7 @@ public void onRemove(BlockState state, World w, BlockPos coord, BlockState newSt
* This method is called when the block is destroyed by an explosion.
*/
@Override
- public void wasExploded(World w, BlockPos coord, Explosion boom){
+ public void wasExploded(Level w, BlockPos coord, Explosion boom){
super.wasExploded(w, coord, boom);
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
}
@@ -144,7 +144,7 @@ public boolean canAcceptConnection(PowerConnectorContext connection){
* Creates the blockstate of this block when it is placed in the world
*/
@Override
- public BlockState getStateForPlacement(final BlockItemUseContext context) {
+ public BlockState getStateForPlacement(final BlockPlaceContext context) {
return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
}
@@ -152,11 +152,11 @@ public BlockState getStateForPlacement(final BlockItemUseContext context) {
* Creates the blockstate of this block when it is placed in the world
*/
@Override
- public void setPlacedBy(final World world, final BlockPos coord, final BlockState bs,
+ public void setPlacedBy(final Level world, final BlockPos coord, final BlockState bs,
final LivingEntity placer, final ItemStack srcItemStack) {
world.setBlock(coord, bs.setValue((Property) FACING, (Comparable)placer.getDirection().getOpposite()), 2);
if (srcItemStack.hasCustomHoverName()) {
- final TileEntity tileEntity = world.getBlockEntity(coord);
+ final BlockEntity tileEntity = world.getBlockEntity(coord);
if (tileEntity instanceof PoweredEntity){
((PoweredEntity)tileEntity).setCustomInventoryName(srcItemStack.getDisplayName().getString());
}
@@ -173,7 +173,7 @@ public void setPlacedBy(final World world, final BlockPos coord, final BlockStat
* @param coord Block coordinate
* @param state Block state
*/
- protected void setDefaultFacing(final World w, final BlockPos coord, final BlockState state) {
+ protected void setDefaultFacing(final Level w, final BlockPos coord, final BlockState state) {
if (w.isClientSide) {
return;
}
@@ -234,7 +234,7 @@ else if (enumFacing == Direction.EAST && block4.isRedstoneConductor(w, coord.eas
* @return a number from 0 to 15
*/
@Override
- public abstract int getAnalogOutputSignal(BlockState state, final World world, final BlockPos coord);
+ public abstract int getAnalogOutputSignal(BlockState state, final Level world, final BlockPos coord);
/**
@@ -259,7 +259,7 @@ public int getMetaFromState(final BlockState bs) {
* Creates a blockstate
*/
@Override
- protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
builder.add(FACING);
}
diff --git a/src/main/java/cyano/poweradvantage/api/simple/SimpleMachineGUI.java b/src/main/java/cyano/poweradvantage/api/simple/SimpleMachineGUI.java
index af2250e4..bd550c4f 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/SimpleMachineGUI.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/SimpleMachineGUI.java
@@ -1,24 +1,24 @@
package cyano.poweradvantage.api.simple;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.math.Integer2D;
-import zone.moddev.mc.poweradvantage.registry.ITileEntityGUI;
-import net.minecraft.client.gui.screen.inventory.ContainerScreen;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.entity.player.PlayerInventory;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.container.Slot;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.ResourceLocation;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.math.Integer2D;
+import zone.moddev.mc.basepower.registry.ITileEntityGUI;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.systems.RenderSystem;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import zone.moddev.mc.basepower.registry.MachineGUIRegistry;
import java.util.HashMap;
import java.util.Map;
@@ -126,16 +126,16 @@ public void drawGUIDecorations(Object srcEntity, GUIContainer guiContainer, int
* @return An instance of net.minecraft.inventory.container.Container
*/
@Override
- public net.minecraft.inventory.container.Container getContainer(TileEntity e, PlayerEntity player) {
- return new Container(player.inventory,(IInventory)e);
+ public net.minecraft.world.inventory.AbstractContainerMenu getContainer(BlockEntity e, Player player) {
+ return new Container(player.getInventory(),(net.minecraft.world.Container)e);
}
- public Container createMenu(int windowId, PlayerInventory player, IInventory inventory) {
+ public Container createMenu(int windowId, Inventory player, net.minecraft.world.Container inventory) {
return new Container(windowId, player, inventory);
}
/** @deprecated Use the native menu factory name. */
- @Deprecated public Container createContainer(int windowId, PlayerInventory player, IInventory inventory) {
+ @Deprecated public Container createContainer(int windowId, Inventory player, net.minecraft.world.Container inventory) {
return createMenu(windowId, player, inventory);
}
@@ -148,8 +148,8 @@ public Container createMenu(int windowId, PlayerInventory player, IInventory inv
*/
@Override
@OnlyIn(Dist.CLIENT)
- public ContainerScreen getContainerGUI(TileEntity e, PlayerEntity player) {
- return new GUIContainer(player.inventory,(IInventory)e);
+ public AbstractContainerScreen getContainerGUI(BlockEntity e, Player player) {
+ return new GUIContainer(player.getInventory(),(net.minecraft.world.Container)e);
}
@@ -158,14 +158,14 @@ public ContainerScreen getContainerGUI(TileEntity e, PlayerEntity player) {
* net.minecraft.inventory.container.Container to fulfill the requirements of the
* interface ITileEntityGUI.
*/
- public class Container extends net.minecraft.inventory.container.Container{
+ public class Container extends net.minecraft.world.inventory.AbstractContainerMenu{
- private final IInventory entity;
- public Container(PlayerInventory playerItems, IInventory entity){
+ private final net.minecraft.world.Container entity;
+ public Container(Inventory playerItems, net.minecraft.world.Container entity){
this(0, playerItems, entity);
}
- public Container(int windowId, PlayerInventory playerItems, IInventory entity) {
+ public Container(int windowId, Inventory playerItems, net.minecraft.world.Container entity) {
super(MachineGUIRegistry.TYPE, windowId);
this.entity = entity;
int index = 0;
@@ -182,16 +182,16 @@ public Container(int windowId, PlayerInventory playerItems, IInventory entity) {
}
@OnlyIn(Dist.CLIENT)
- public GUIContainer createScreen(PlayerInventory inventory, ITextComponent title) {
+ public GUIContainer createScreen(Inventory inventory, Component title) {
return new GUIContainer(this, inventory, title);
}
@Override
- public boolean stillValid(PlayerEntity entityplayer) {
+ public boolean stillValid(Player entityplayer) {
return entity.stillValid(entityplayer);
}
- protected void bindPlayerInventory(PlayerInventory inventoryPlayer, int yOffset) {
+ protected void bindPlayerInventory(Inventory inventoryPlayer, int yOffset) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 9; j++) {
addSlot(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, yOffset + i * 18));
@@ -203,7 +203,7 @@ protected void bindPlayerInventory(PlayerInventory inventoryPlayer, int yOffset)
}
@Override
- public ItemStack quickMoveStack(PlayerEntity player, int slot) {
+ public ItemStack quickMoveStack(Player player, int slot) {
int hostSize = inventorySlotCoordinates.length;
ItemStack stack = ItemStack.EMPTY;
Slot slotObject = (Slot) slots.get(slot);
@@ -246,17 +246,19 @@ else if (!this.moveItemStackTo(stackInSlot, 0, hostSize, false)) {
*/
@OnlyIn(Dist.CLIENT)
- public class GUIContainer extends net.minecraft.client.gui.screen.inventory.ContainerScreen{
+ public class GUIContainer extends net.minecraft.client.gui.screens.inventory.AbstractContainerScreen{
private final Object entity;
- private MatrixStack matrices = new MatrixStack();
+ private final Component playerInventoryLabel;
+ private PoseStack matrices = new PoseStack();
public net.minecraft.client.Minecraft getMinecraft() { return minecraft; }
- public GUIContainer(PlayerInventory playerItems, IInventory entity) {
- this(new Container(playerItems, entity), playerItems, new StringTextComponent("Machine"));
+ public GUIContainer(Inventory playerItems, net.minecraft.world.Container entity) {
+ this(new Container(playerItems, entity), playerItems, new TextComponent("Machine"));
}
- public GUIContainer(Container container, PlayerInventory playerItems, ITextComponent title) {
+ public GUIContainer(Container container, Inventory playerItems, Component title) {
super(container, playerItems, title);
+ this.playerInventoryLabel = playerItems.getDisplayName();
//System.out.println("Size: "+this.xSize+"x"+this.ySize+" at coordinate ("+this.guiLeft+","+this.guiTop+")");
this.imageWidth = guiWidth;
this.imageHeight = guiHeight;
@@ -264,7 +266,7 @@ public GUIContainer(Container container, PlayerInventory playerItems, ITextCompo
}
@Override
- public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
+ public void render(PoseStack matrices, int mouseX, int mouseY, float partialTicks) {
this.renderBackground(matrices);
super.render(matrices, mouseX, mouseY, partialTicks);
this.renderTooltip(matrices, mouseX, mouseY);
@@ -275,10 +277,10 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTi
}
@Override
- protected void renderLabels(MatrixStack matrices, int mouseX, int mouseY) {
+ protected void renderLabels(PoseStack matrices, int mouseX, int mouseY) {
String machineName = fitLabel(title.getString(), width - 8);
font.drawShadow(matrices, machineName, (imageWidth - font.width(machineName)) / 2, 1, 0xFFFFFF);
- font.drawShadow(matrices, fitLabel(inventory.getDisplayName().getString(), imageWidth - 16),
+ font.drawShadow(matrices, fitLabel(playerInventoryLabel.getString(), imageWidth - 16),
8, MACHINE_TOP + MACHINE_HEIGHT, 0xFFFFFF);
}
@@ -288,18 +290,18 @@ private String fitLabel(String text, int availableWidth) {
}
@Override
- protected void renderBg(MatrixStack matrices, float f, int i, int j) {
+ protected void renderBg(PoseStack matrices, float f, int i, int j) {
this.matrices = matrices;
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- this.minecraft.getTextureManager().bind(playerInventoryBox);
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, playerInventoryBox);
int x = (width - imageWidth) / 2;
int y = (height - imageHeight) / 2;
final int playerInventoryWidth = 176;
final int playerInventoryHeight = 90;
this.blit(x, y + PLAYER_PANEL_TOP, 0, 132, playerInventoryWidth, playerInventoryHeight);
- this.minecraft.getTextureManager().bind(guiDisplayImage);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, guiDisplayImage);
this.blit(x, y + MACHINE_TOP, 0, 0, guiWidth, MACHINE_HEIGHT);
drawGUIDecorations(entity, this, x, y + MACHINE_TOP, this.getBlitOffset());
RenderSystem.disableBlend();
@@ -310,7 +312,7 @@ public void blit(int x, int y, int u, int v, int width, int height) {
super.blit(matrices, x, y, u, v, width, height);
}
- public MatrixStack getMatrices() { return matrices; }
+ public PoseStack getMatrices() { return matrices; }
/**
* Gets the z-coordinate of this GUI element
* @return screen depth coordinate
@@ -356,8 +358,8 @@ public int getTop(){
* inventory slot
*/
public static class SlotContext {
- public final PlayerInventory playerInventory;
- public final IInventory machineInventory;
+ public final Inventory playerInventory;
+ public final net.minecraft.world.Container machineInventory;
public final int slotIndex;
public final int screenPositionX;
public final int screenPositionY;
@@ -372,8 +374,8 @@ public static class SlotContext {
* @param screenPositionY coordinate position on screen
*/
public SlotContext(
- final PlayerInventory playerInventory,
- final IInventory machineInventory,
+ final Inventory playerInventory,
+ final net.minecraft.world.Container machineInventory,
final int slotIndex,
final int screenPositionX,
final int screenPositionY
diff --git a/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimpleFluidMachine.java b/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimpleFluidMachine.java
index acabbe0c..51d7ed96 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimpleFluidMachine.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimpleFluidMachine.java
@@ -5,21 +5,23 @@
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.fluid.FluidPoweredEntity;
import cyano.poweradvantage.api.fluid.FluidRequest;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import zone.moddev.mc.poweradvantage.util.FluidIdHelper;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.network.play.server.SUpdateTileEntityPacket;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TranslationTextComponent;
-import net.minecraft.fluid.Fluid;
+import zone.moddev.mc.basepower.init.Fluids;
+import zone.moddev.mc.basepower.util.FluidIdHelper;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.network.Connection;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.Direction;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
@@ -37,7 +39,7 @@
*
*/
@SuppressWarnings("deprecation")
-public abstract class TileEntitySimpleFluidMachine extends FluidPoweredEntity implements ISidedInventory, net.minecraft.util.INameable {
+public abstract class TileEntitySimpleFluidMachine extends FluidPoweredEntity implements WorldlyContainer, net.minecraft.world.Nameable {
/**
* This FluidTank holds the fluids for this machine
*/
@@ -52,15 +54,15 @@ public abstract class TileEntitySimpleFluidMachine extends FluidPoweredEntity im
/**
- * Main constructor for this abstract class. Your implementing class must have a no-argument
- * constructor or else Minecraft will crash when it tries to load your entity from a saved
- * game file.
+ * Native block-entity factories supply the real position and block state when
+ * creating a machine, including when it is restored from a saved chunk.
* @param fluidTankCapacity How much fluid can be stored in this entity
* @param unlocalizedName The default name for this TileEntity, should the player interact with
* the TileEntity in a way that gets the TileEntity's name (if in doubt, use the class name).
*/
- public TileEntitySimpleFluidMachine(TileEntityType> tileType, int fluidTankCapacity, String unlocalizedName){
- super(tileType);
+ public TileEntitySimpleFluidMachine(BlockEntityType> tileType, BlockPos pos, BlockState state,
+ int fluidTankCapacity, String unlocalizedName){
+ super(tileType, pos, state);
this.tank = new DirtyFluidTank(fluidTankCapacity);
this.unlocalizedName = unlocalizedName;
}
@@ -147,7 +149,7 @@ public void onDataFieldUpdate() {
int fluidID = dataFields[DATAFIELD_FLUID_ID];
int fluidVolume = dataFields[DATAFIELD_FLUID_VOLUME];
if(fluidVolume <= 0){
- getTank().setFluid(new FluidStack(net.minecraft.fluid.Fluids.WATER,0));
+ getTank().setFluid(new FluidStack(net.minecraft.world.level.material.Fluids.WATER,0));
} else {
Fluid fluid = FluidIdHelper.getFluid(fluidID);
if (fluid != null) {
@@ -178,7 +180,7 @@ public void onDataFieldUpdate() {
*/
public void prepareDataFieldsForSync(){
if(getTank().getFluid() == null || getTank().getFluidAmount() <= 0){
- dataFields[DATAFIELD_FLUID_ID] = FluidIdHelper.getFluidId(net.minecraft.fluid.Fluids.WATER);
+ dataFields[DATAFIELD_FLUID_ID] = FluidIdHelper.getFluidId(net.minecraft.world.level.material.Fluids.WATER);
dataFields[DATAFIELD_FLUID_VOLUME] = 0;
} else {
dataFields[DATAFIELD_FLUID_ID] = FluidIdHelper.getFluidId(getTank().getFluid().getFluid());
@@ -263,16 +265,16 @@ protected int transmitFluidToConsumers(FluidStack available, byte minumimPriorit
* @param tagRoot The root of the NBT
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
for(int i = 0; i < inventory.length; i++){
inventory[i] = null;
}
- final ListNBT nbttaglist = tagRoot.getList("Items", 10);
+ final ListTag nbttaglist = tagRoot.getList("Items", 10);
for (int i = 0; i < nbttaglist.size() && i < inventory.length; ++i) {
- final CompoundNBT nbttagcompound1 = nbttaglist .getCompound(i);
+ final CompoundTag nbttagcompound1 = nbttaglist .getCompound(i);
final byte n = nbttagcompound1.getByte("Slot");
if (n >= 0 && n < inventory.length) {
ItemStack stack = ItemStack.of(nbttagcompound1);
@@ -292,14 +294,14 @@ public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot
* @param tagRoot The root of the NBT
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
- final ListNBT nbttaglist = new ListNBT();
+ final ListTag nbttaglist = new ListTag();
for (int i = 0; i < inventory.length; ++i) {
if (inventory[i] != null && !inventory[i].isEmpty()) {
- final CompoundNBT nbttagcompound1 = new CompoundNBT();
+ final CompoundTag nbttagcompound1 = new CompoundTag();
nbttagcompound1.putByte("Slot", (byte)i);
inventory[i] .save(nbttagcompound1);
nbttaglist .add(nbttagcompound1);
@@ -393,11 +395,11 @@ public void setCustomInventoryName(final String newName) {
* @return A synchronization NBT holding values from the
* getDataFieldArray() array
*/
- public CompoundNBT createDataFieldUpdateTag(){
+ public CompoundTag createDataFieldUpdateTag(){
this.prepareDataFieldsForSync();
int[] dataFields = this.getDataFieldArray();
- CompoundNBT nbtTag = new CompoundNBT();
- CompoundNBT tankTag = new CompoundNBT();
+ CompoundTag nbtTag = new CompoundTag();
+ CompoundTag tankTag = new CompoundTag();
getTank().writeToNBT(tankTag);
nbtTag.put("Tank", tankTag);
nbtTag.putIntArray("[]", dataFields);
@@ -411,9 +413,9 @@ public CompoundNBT createDataFieldUpdateTag(){
* @param tag A synchronization NBT holding values from the
* getDataFieldArray() array
*/
- public void readDataFieldUpdateTag(CompoundNBT tag){
+ public void readDataFieldUpdateTag(CompoundTag tag){
if (tag .contains("Tank", 10)) {
- CompoundNBT tankTag = tag .getCompound("Tank");
+ CompoundTag tankTag = tag .getCompound("Tank");
getTank().readFromNBT(tankTag);
if (tankTag.contains("Empty", 1)) {
getTank().setFluid(null);
@@ -430,26 +432,26 @@ public void readDataFieldUpdateTag(CompoundNBT tag){
* Turns the data field NBT into a network packet
*/
@Override
- public SUpdateTileEntityPacket getUpdatePacket(){
- CompoundNBT nbtTag = createDataFieldUpdateTag();
- return new SUpdateTileEntityPacket(this.worldPosition, 0, nbtTag);
+ public ClientboundBlockEntityDataPacket getUpdatePacket(){
+ CompoundTag nbtTag = createDataFieldUpdateTag();
+ return new ClientboundBlockEntityDataPacket(this.worldPosition, 0, nbtTag);
}
@Override
- public CompoundNBT getUpdateTag() {
- return save(new CompoundNBT());
+ public CompoundTag getUpdateTag() {
+ return save(new CompoundTag());
}
@Override
- public void handleUpdateTag(net.minecraft.block.BlockState state, CompoundNBT tag) {
- load(state, tag);
+ public void handleUpdateTag(CompoundTag tag) {
+ load(tag);
}
/**
* Receives the network packet made by getDescriptionPacket()
*/
@Override
- public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket packet) {
+ public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket packet) {
readDataFieldUpdateTag(packet.getTag());
}
@@ -480,7 +482,7 @@ public boolean isEmpty() {
* executes when a player right-clicks and opens the inventory GUI
*/
@Override
- public void startOpen(PlayerEntity arg0) {
+ public void startOpen(Player arg0) {
// do nothing
}
@@ -489,7 +491,7 @@ public void startOpen(PlayerEntity arg0) {
* executes when a player stops interacting with this machine
*/
@Override
- public void stopOpen(PlayerEntity arg0) {
+ public void stopOpen(Player arg0) {
// do nothing
}
@@ -624,7 +626,7 @@ public boolean canPlaceItem(final int slot, final ItemStack item) {
* boilerplate inventory code
*/
@Override
- public boolean stillValid(final PlayerEntity p_isUseableByPlayer_1_) {
+ public boolean stillValid(final Player p_isUseableByPlayer_1_) {
return this.level.getBlockEntity(this.worldPosition) == this && p_isUseableByPlayer_1_.distanceToSqr((double)this.worldPosition.getX() + 0.5, (double)this.worldPosition.getY() + 0.5, (double)this.worldPosition.getZ() + 0.5) <= 64.0;
}
@@ -651,7 +653,7 @@ public void setItem(int slot, ItemStack item) {
* boilerplate inventory code
*/
@Override
- public ITextComponent getDisplayName() {
+ public Component getDisplayName() {
return getName();
}
@@ -661,14 +663,14 @@ public ITextComponent getDisplayName() {
* given by the player (i.e. with an anvil)
*/
@Override
- public ITextComponent getName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName)
- : new TranslationTextComponent(unlocalizedName);
+ public Component getName() {
+ return this.hasCustomName() ? new TextComponent(this.customName)
+ : new TranslatableComponent(unlocalizedName);
}
@Override
- public ITextComponent getCustomName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName) : null;
+ public Component getCustomName() {
+ return this.hasCustomName() ? new TextComponent(this.customName) : null;
}
/**
diff --git a/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimplePowerMachine.java b/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimplePowerMachine.java
index f5504d40..e66357b8 100644
--- a/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimplePowerMachine.java
+++ b/src/main/java/cyano/poweradvantage/api/simple/TileEntitySimplePowerMachine.java
@@ -4,19 +4,21 @@
import cyano.poweradvantage.api.PowerConnectorContext;
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.PoweredEntity;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.network.play.server.SUpdateTileEntityPacket;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TranslationTextComponent;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.network.Connection;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.Direction;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
import java.util.Arrays;
@@ -31,7 +33,7 @@
* @author DrCyano
*
*/
-public abstract class TileEntitySimplePowerMachine extends PoweredEntity implements ISidedInventory, net.minecraft.util.INameable {
+public abstract class TileEntitySimplePowerMachine extends PoweredEntity implements WorldlyContainer, net.minecraft.world.Nameable {
private final ConduitType[] types;
private final float[] energyBufferSizes;
private final float[] energyBuffers;
@@ -50,8 +52,9 @@ public abstract class TileEntitySimplePowerMachine extends PoweredEntity impleme
* @param unlocalizedName The string used for language look-up and
* entity registration.
*/
- public TileEntitySimplePowerMachine(TileEntityType> tileType, ConduitType type, float energyBufferSize, String unlocalizedName){
- super(tileType);
+ public TileEntitySimplePowerMachine(BlockEntityType> tileType, BlockPos pos, BlockState state,
+ ConduitType type, float energyBufferSize, String unlocalizedName){
+ super(tileType, pos, state);
this.types = new ConduitType[1];
this.types[0] = type;
this.energyBufferSizes = new float[1];
@@ -69,8 +72,9 @@ public TileEntitySimplePowerMachine(TileEntityType> tileType, ConduitType type
* @param unlocalizedName The string used for language look-up and
* entity registration.
*/
- public TileEntitySimplePowerMachine(TileEntityType> tileType, ConduitType[] typeList, float[] energyBufferSize, String unlocalizedName){
- super(tileType);
+ public TileEntitySimplePowerMachine(BlockEntityType> tileType, BlockPos pos, BlockState state,
+ ConduitType[] typeList, float[] energyBufferSize, String unlocalizedName){
+ super(tileType, pos, state);
if(typeList.length != energyBufferSize.length) throw new IllegalArgumentException("Array length mismatch. Number of ConduitTypes and number of buffer sizes must be equal.");
this.types = Arrays.copyOf(typeList,typeList.length);
this.energyBufferSizes = Arrays.copyOf(energyBufferSize,energyBufferSize.length);
@@ -288,14 +292,14 @@ public PowerRequest getPowerRequest(ConduitType type){
* @param tagRoot The root of the NBT
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
Arrays.fill(inventory, null);
- final ListNBT nbttaglist = tagRoot.getList("Items", 10);
+ final ListTag nbttaglist = tagRoot.getList("Items", 10);
for (int i = 0; i < nbttaglist.size() && i < inventory.length; ++i) {
- final CompoundNBT nbttagcompound1 = nbttaglist .getCompound(i);
+ final CompoundTag nbttagcompound1 = nbttaglist .getCompound(i);
final byte n = nbttagcompound1.getByte("Slot");
if (n >= 0 && n < inventory.length) {
ItemStack stack = ItemStack.of(nbttagcompound1);
@@ -315,14 +319,14 @@ public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot
* @param tagRoot The root of the NBT
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
- final ListNBT nbttaglist = new ListNBT();
+ final ListTag nbttaglist = new ListTag();
for (int i = 0; i < inventory.length; ++i) {
if (inventory[i] != null && !inventory[i].isEmpty()) {
- final CompoundNBT nbttagcompound1 = new CompoundNBT();
+ final CompoundTag nbttagcompound1 = new CompoundTag();
nbttagcompound1.putByte("Slot", (byte)i);
inventory[i] .save(nbttagcompound1);
nbttaglist .add(nbttagcompound1);
@@ -400,10 +404,10 @@ public void setCustomInventoryName(final String newName) {
* @return A synchronization NBT holding values from the
* getDataFieldArray() array
*/
- public CompoundNBT createDataFieldUpdateTag(){
+ public CompoundTag createDataFieldUpdateTag(){
this.prepareDataFieldsForSync();
int[] dataFields = this.getDataFieldArray();
- CompoundNBT nbtTag = new CompoundNBT();
+ CompoundTag nbtTag = new CompoundTag();
nbtTag.putIntArray("[]", dataFields);
return nbtTag;
}
@@ -415,7 +419,7 @@ public CompoundNBT createDataFieldUpdateTag(){
* @param tag A synchronization NBT holding values from the
* getDataFieldArray() array
*/
- public void readDataFieldUpdateTag(CompoundNBT tag){
+ public void readDataFieldUpdateTag(CompoundTag tag){
int[] newData = tag.getIntArray("[]");
System.arraycopy(newData, 0, this.getDataFieldArray(), 0, Math.min(newData.length, this.getDataFieldArray().length));
this.onDataFieldUpdate();
@@ -426,16 +430,16 @@ public void readDataFieldUpdateTag(CompoundNBT tag){
* Turns the data field NBT into a network packet
*/
@Override
- public SUpdateTileEntityPacket getUpdatePacket(){
- CompoundNBT nbtTag = createDataFieldUpdateTag();
- return new SUpdateTileEntityPacket(this.worldPosition, 0, nbtTag);
+ public ClientboundBlockEntityDataPacket getUpdatePacket(){
+ CompoundTag nbtTag = createDataFieldUpdateTag();
+ return new ClientboundBlockEntityDataPacket(this.worldPosition, 0, nbtTag);
}
/**
* Receives the network packet made by getDescriptionPacket()
*/
@Override
- public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket packet) {
+ public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket packet) {
readDataFieldUpdateTag(packet.getTag());
}
@@ -466,7 +470,7 @@ public boolean isEmpty() {
* executes when a player right-clicks and opens the inventory GUI
*/
@Override
- public void startOpen(PlayerEntity arg0) {
+ public void startOpen(Player arg0) {
// do nothing
}
@@ -475,7 +479,7 @@ public void startOpen(PlayerEntity arg0) {
* executes when a player stops interacting with this machine
*/
@Override
- public void stopOpen(PlayerEntity arg0) {
+ public void stopOpen(Player arg0) {
// do nothing
}
@@ -610,7 +614,7 @@ public boolean canPlaceItem(final int slot, final ItemStack item) {
* boilerplate inventory code
*/
@Override
- public boolean stillValid(final PlayerEntity p_isUseableByPlayer_1_) {
+ public boolean stillValid(final Player p_isUseableByPlayer_1_) {
return this.level.getBlockEntity(this.worldPosition) == this && p_isUseableByPlayer_1_.distanceToSqr((double)this.worldPosition.getX() + 0.5, (double)this.worldPosition.getY() + 0.5, (double)this.worldPosition.getZ() + 0.5) <= 64.0;
}
@@ -637,7 +641,7 @@ public void setItem(int slot, ItemStack item) {
* boilerplate inventory code
*/
@Override
- public ITextComponent getDisplayName() {
+ public Component getDisplayName() {
return getName();
}
@@ -647,14 +651,14 @@ public ITextComponent getDisplayName() {
* given by the player (i.e. with an anvil)
*/
@Override
- public ITextComponent getName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName)
- : new TranslationTextComponent(unlocalizedName);
+ public Component getName() {
+ return this.hasCustomName() ? new TextComponent(this.customName)
+ : new TranslatableComponent(unlocalizedName);
}
@Override
- public ITextComponent getCustomName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName) : null;
+ public Component getCustomName() {
+ return this.hasCustomName() ? new TextComponent(this.customName) : null;
}
/**
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/PowerAdvantage.java b/src/main/java/zone/moddev/mc/basepower/PowerAdvantage.java
similarity index 78%
rename from src/main/java/zone/moddev/mc/poweradvantage/PowerAdvantage.java
rename to src/main/java/zone/moddev/mc/basepower/PowerAdvantage.java
index 71fb7be0..167d10a9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/PowerAdvantage.java
+++ b/src/main/java/zone/moddev/mc/basepower/PowerAdvantage.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage;
+package zone.moddev.mc.basepower;
import java.util.HashMap;
import java.util.Map;
@@ -15,34 +15,34 @@
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.DistExecutor;
-import net.minecraftforge.fml.ExtensionPoint;
+
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLPaths;
-import zone.moddev.mc.poweradvantage.config.PowerAdvantageConfig;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import zone.moddev.mc.poweradvantage.init.Blocks;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import zone.moddev.mc.poweradvantage.init.GUI;
-import zone.moddev.mc.poweradvantage.init.Fuels;
-import zone.moddev.mc.poweradvantage.init.Items;
-import zone.moddev.mc.poweradvantage.init.ModSupport;
-import zone.moddev.mc.poweradvantage.init.Recipes;
-import zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry;
-import zone.moddev.mc.poweradvantage.recipe.RecipeConditions;
-import zone.moddev.mc.poweradvantage.recipe.RecipeDiscovery;
-import zone.moddev.mc.poweradvantage.migration.AdvantageLegacyMigrations;
-import zone.moddev.mc.poweradvantage.migration.LegacyWorldDataHook;
+import zone.moddev.mc.basepower.config.PowerAdvantageConfig;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import zone.moddev.mc.basepower.init.Blocks;
+import zone.moddev.mc.basepower.init.Fluids;
+import zone.moddev.mc.basepower.init.GUI;
+import zone.moddev.mc.basepower.init.Fuels;
+import zone.moddev.mc.basepower.init.Items;
+import zone.moddev.mc.basepower.init.ModSupport;
+import zone.moddev.mc.basepower.init.Recipes;
+import zone.moddev.mc.basepower.registry.MachineGUIRegistry;
+import zone.moddev.mc.basepower.recipe.RecipeConditions;
+import zone.moddev.mc.basepower.recipe.RecipeDiscovery;
+import zone.moddev.mc.basepower.migration.AdvantageLegacyMigrations;
+import zone.moddev.mc.basepower.migration.LegacyWorldDataHook;
/** Forge 1.16 entry point for Power Advantage. */
@Mod(PowerAdvantage.MODID)
public final class PowerAdvantage {
- public static final String MODID = "poweradvantage";
- public static final String NAME = "Power Advantage";
- public static final String VERSION = "2.4.7.116051";
+ public static final String MODID = "basepower";
+ public static final String NAME = "basePower";
+ public static final String VERSION = "2.4.9.117011";
public static final Logger LOGGER = LogManager.getLogger(MODID);
private static PowerAdvantage instance;
@@ -75,13 +75,14 @@ public PowerAdvantage() {
instance = this;
AdvantageLegacyMigrations.registerPowerAdvantage();
- zone.moddev.mc.poweradvantage.migration.VanillaRegistryRemaps.register();
+ zone.moddev.mc.basepower.migration.VanillaRegistryRemaps.register();
MinecraftForge.EVENT_BUS.addListener(ConduitRegistry.getInstance()::onChunkLoad);
MinecraftForge.EVENT_BUS.addListener(ConduitRegistry.getInstance()::onChunkUnload);
MinecraftForge.EVENT_BUS.addListener(RecipeDiscovery::onPlayerLogin);
- MinecraftForge.EVENT_BUS.addListener(zone.moddev.mc.poweradvantage.recipe.PartsLoot::onLoad);
- MinecraftForge.EVENT_BUS.addListener(zone.moddev.mc.poweradvantage.init.Villages::onTrades);
- MinecraftForge.EVENT_BUS.addListener(zone.moddev.mc.poweradvantage.recipe.MaterialTags::installReader);
+ MinecraftForge.EVENT_BUS.addListener(zone.moddev.mc.basepower.recipe.PartsLoot::onLoad);
+ MinecraftForge.EVENT_BUS.addListener(zone.moddev.mc.basepower.init.Villages::onTrades);
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(
+ zone.moddev.mc.basepower.recipe.MaterialTags::registerPack);
Fluids.init();
Blocks.init();
@@ -98,18 +99,18 @@ public PowerAdvantage() {
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
FMLJavaModLoadingContext.get().getModEventBus().addListener(
(net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent event) ->
- net.minecraftforge.fml.DeferredWorkQueue.runLater(() -> {
+ event.enqueueWork(() -> {
MachineGUIRegistry.registerScreens();
- zone.moddev.mc.poweradvantage.client.ClientOilRenderer.configureRenderLayers();
+ zone.moddev.mc.basepower.client.ClientOilRenderer.configureRenderLayers();
}));
- zone.moddev.mc.poweradvantage.client.ClientOilRenderer.register();
+ zone.moddev.mc.basepower.client.ClientOilRenderer.register();
});
}
private static void migrateLegacyOreSpawnConfiguration() {
try {
LegacyOreSpawnConfigBridge.Result result =
- LegacyOreSpawnConfigBridge.migrate(FMLPaths.CONFIGDIR.get(), MODID);
+ LegacyOreSpawnConfigBridge.migrate(FMLPaths.CONFIGDIR.get(), MODID, "poweradvantage");
if (result.wasMigrated()) {
LOGGER.info("Imported {} legacy Power Advantage OreSpawn rule(s) from '{}' into '{}'",
result.getRuleCount(), result.getSource(), result.getTarget());
@@ -121,7 +122,7 @@ private static void migrateLegacyOreSpawnConfiguration() {
private static void migrateLegacyConfiguration() {
try {
- LegacyConfigMigration.Result result = LegacyConfigMigration.migrate(FMLPaths.CONFIGDIR.get(), MODID,
+ LegacyConfigMigration.Result result = LegacyConfigMigration.migrate(FMLPaths.CONFIGDIR.get(), MODID, "poweradvantage",
Mapping.of("options", "recipe_mode", "options", "recipeMode", ValueType.STRING),
Mapping.of("options", "treasure_chest_loot_factor", "options", "treasureChestLootFactor", ValueType.DOUBLE),
Mapping.of("options", "plastic_equals_rubber", "options", "plasticEqualsRubber", ValueType.BOOLEAN),
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/RecipeMode.java b/src/main/java/zone/moddev/mc/basepower/RecipeMode.java
similarity index 96%
rename from src/main/java/zone/moddev/mc/poweradvantage/RecipeMode.java
rename to src/main/java/zone/moddev/mc/basepower/RecipeMode.java
index cf753ec5..03c5450f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/RecipeMode.java
+++ b/src/main/java/zone/moddev/mc/basepower/RecipeMode.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage;
+package zone.moddev.mc.basepower;
/**
* Differnet recipe modes change the difficulty and means by which the players make the core items
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockFrame.java b/src/main/java/zone/moddev/mc/basepower/blocks/BlockFrame.java
similarity index 55%
rename from src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockFrame.java
rename to src/main/java/zone/moddev/mc/basepower/blocks/BlockFrame.java
index b972b08f..a35eb137 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockFrame.java
+++ b/src/main/java/zone/moddev/mc/basepower/blocks/BlockFrame.java
@@ -1,13 +1,13 @@
-package zone.moddev.mc.poweradvantage.blocks;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.SoundType;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.world.IWorldReader;
+package zone.moddev.mc.basepower.blocks;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.LevelReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -28,7 +28,7 @@ public boolean isFullCube(BlockState bs) {
return false;
}
- public boolean canSilkHarvest(BlockState state, IWorldReader world, BlockPos pos, PlayerEntity player) {
+ public boolean canSilkHarvest(BlockState state, LevelReader world, BlockPos pos, Player player) {
return true;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockPowerSwitch.java b/src/main/java/zone/moddev/mc/basepower/blocks/BlockPowerSwitch.java
similarity index 80%
rename from src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockPowerSwitch.java
rename to src/main/java/zone/moddev/mc/basepower/blocks/BlockPowerSwitch.java
index e990e22f..139c7428 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/blocks/BlockPowerSwitch.java
+++ b/src/main/java/zone/moddev/mc/basepower/blocks/BlockPowerSwitch.java
@@ -1,18 +1,18 @@
-package zone.moddev.mc.poweradvantage.blocks;
+package zone.moddev.mc.basepower.blocks;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.ITypedConduit;
import cyano.poweradvantage.api.PowerConnectorContext;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.Explosion;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Explosion;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
/**
* This block class is a user-friendly power switch for turning power on and off. You do not need to
@@ -54,7 +54,7 @@ public BlockPowerSwitch(ConduitType powerType) {
* Creates a blockstate
*/
@Override
- protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
builder.add(ACTIVE);
}
@@ -118,7 +118,7 @@ public boolean isFullCube(BlockState bs) {
* Override of default block behavior
*/
@Override
- public void onPlace(final BlockState state, final World world, final BlockPos coord, final BlockState oldState, final boolean isMoving) {
+ public void onPlace(final BlockState state, final Level world, final BlockPos coord, final BlockState oldState, final boolean isMoving) {
super.onPlace(state, world, coord, oldState, isMoving);
ConduitRegistry.getInstance().conduitBlockPlacedEvent(world, coord, getTypes());
}
@@ -127,7 +127,7 @@ public void onPlace(final BlockState state, final World world, final BlockPos co
* This method is called when the block is removed from the world by an entity.
*/
@Override
- public void onRemove(BlockState state, World w, BlockPos coord, BlockState newState, boolean isMoving) {
+ public void onRemove(BlockState state, Level w, BlockPos coord, BlockState newState, boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
}
@@ -138,7 +138,7 @@ public void onRemove(BlockState state, World w, BlockPos coord, BlockState newSt
* This method is called when the block is destroyed by an explosion.
*/
@Override
- public void wasExploded(World w, BlockPos coord, Explosion boom) {
+ public void wasExploded(Level w, BlockPos coord, Explosion boom) {
super.wasExploded(w, coord, boom);
ConduitRegistry.getInstance().conduitBlockRemovedEvent(w, coord, getTypes());
}
@@ -146,9 +146,9 @@ public void wasExploded(World w, BlockPos coord, Explosion boom) {
/**
* Called when a neighboring block changes.
*/
- public void onNeighborChange(IBlockReader w, BlockPos pos, BlockPos neighbor) {
- if (w instanceof World) {
- World world = (World) w;
+ public void onNeighborChange(BlockGetter w, BlockPos pos, BlockPos neighbor) {
+ if (w instanceof Level) {
+ Level world = (Level) w;
BlockState state = world.getBlockState(pos);
// redstone power given or taken
boolean activated = !world.hasNeighborSignal(pos);
@@ -162,7 +162,7 @@ public void onNeighborChange(IBlockReader w, BlockPos pos, BlockPos neighbor) {
}
@Override
- public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) {
+ public void neighborChanged(BlockState state, Level world, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) {
onNeighborChange(world, pos, pos);
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/gui/package-info.java b/src/main/java/zone/moddev/mc/basepower/blocks/package-info.java
similarity index 77%
rename from src/main/java/zone/moddev/mc/poweradvantage/gui/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/blocks/package-info.java
index a8bcce10..0b4337c6 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/gui/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/blocks/package-info.java
@@ -3,10 +3,10 @@
This package contains content that is added by PowerAdvantage implementing the PowerAdvantage API.
If you are writing an add-on mod, use the code in this package for reference, but you should not
depend on it's implementation details as future updates might change them. For a better way to get
-PowerAdvantage content, look in the zone.moddev.mc.poweradvantage.init package.
+PowerAdvantage content, look in the zone.moddev.mc.basepower.init package.
Because these classes are not part of the API, they are not well documented. They were only meant
for the eyes of the mod author(s).
*/
-package zone.moddev.mc.poweradvantage.gui;
\ No newline at end of file
+package zone.moddev.mc.basepower.blocks;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/basepower/client/ClientOilRenderer.java b/src/main/java/zone/moddev/mc/basepower/client/ClientOilRenderer.java
new file mode 100644
index 00000000..14785fca
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/client/ClientOilRenderer.java
@@ -0,0 +1,44 @@
+package zone.moddev.mc.basepower.client;
+
+import net.minecraft.client.renderer.texture.TextureAtlas;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.ItemBlockRenderTypes;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraftforge.api.distmarker.Dist;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.client.event.TextureStitchEvent;
+import net.minecraftforge.common.MinecraftForge;
+import zone.moddev.mc.basepower.PowerAdvantage;
+
+/** Forge FluidAttributes handle rendering; only the custom atlas sprites need stitching. */
+@OnlyIn(Dist.CLIENT)
+public final class ClientOilRenderer {
+ private ClientOilRenderer() {}
+
+ public static void register() {
+ MinecraftForge.EVENT_BUS.addListener(ClientOilRenderer::stitch);
+ }
+
+ public static void configureRenderLayers() {
+ ItemBlockRenderTypes.setRenderLayer(zone.moddev.mc.basepower.init.Blocks.steel_frame,
+ RenderType.cutout());
+ for (net.minecraft.world.level.material.Fluid fluid : new net.minecraft.world.level.material.Fluid[] {
+ zone.moddev.mc.basepower.init.Fluids.crude_oil,
+ zone.moddev.mc.basepower.init.Fluids.flowing_crude_oil,
+ zone.moddev.mc.basepower.init.Fluids.refined_oil,
+ zone.moddev.mc.basepower.init.Fluids.flowing_refined_oil}) {
+ ItemBlockRenderTypes.setRenderLayer(fluid, RenderType.translucent());
+ }
+ ItemBlockRenderTypes.setRenderLayer(zone.moddev.mc.basepower.init.Blocks.crude_oil_block,
+ RenderType.translucent());
+ ItemBlockRenderTypes.setRenderLayer(zone.moddev.mc.basepower.init.Blocks.refined_oil_block,
+ RenderType.translucent());
+ }
+
+ private static void stitch(TextureStitchEvent.Pre event) {
+ if (!TextureAtlas.LOCATION_BLOCKS.equals(event.getMap().location())) return;
+ for (String name : new String[] {"crude_oil_still", "crude_oil_flow", "refined_oil_still", "refined_oil_flow"}) {
+ event.addSprite(new ResourceLocation(PowerAdvantage.MODID, "blocks/" + name));
+ }
+ }
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/compat/BaseMetalsCompat.java b/src/main/java/zone/moddev/mc/basepower/compat/BaseMetalsCompat.java
similarity index 83%
rename from src/main/java/zone/moddev/mc/poweradvantage/compat/BaseMetalsCompat.java
rename to src/main/java/zone/moddev/mc/basepower/compat/BaseMetalsCompat.java
index 2f900a7d..4dbc14d8 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/compat/BaseMetalsCompat.java
+++ b/src/main/java/zone/moddev/mc/basepower/compat/BaseMetalsCompat.java
@@ -1,12 +1,12 @@
-package zone.moddev.mc.poweradvantage.compat;
+package zone.moddev.mc.basepower.compat;
-import net.minecraft.block.Block;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.registries.ForgeRegistries;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/**
* Compatibility entry points retained for old internal callers. Crushing recipes
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManager.java b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManager.java
similarity index 92%
rename from src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManager.java
rename to src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManager.java
index d7b328ab..c77ddb7a 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManager.java
+++ b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManager.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.conduitnetwork;
+package zone.moddev.mc.basepower.conduitnetwork;
import java.util.ArrayList;
import java.util.Collections;
@@ -9,12 +9,12 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerConnectorContext;
-import zone.moddev.mc.poweradvantage.math.BlockPos4D;
-import zone.moddev.mc.poweradvantage.util.PowerHelper;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.ChunkPos;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.math.BlockPos4D;
+import zone.moddev.mc.basepower.util.PowerHelper;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.ChunkPos;
+import net.minecraft.world.level.Level;
/**
* This class manages a global (trans-dimensional) cache of power networks of a single power type.
@@ -131,7 +131,7 @@ public void invalidateAll() {
* @param dimension dimension containing the changed chunk
* @param chunk changed chunk position
*/
- public void invalidateChunk(net.minecraft.util.RegistryKey dimension, ChunkPos chunk) {
+ public void invalidateChunk(net.minecraft.resources.ResourceKey dimension, ChunkPos chunk) {
lock.writeLock().lock();
try {
int minX = (chunk.x << 4) - 1;
@@ -155,7 +155,7 @@ public void invalidateChunk(net.minecraft.util.RegistryKey dimension, Chu
* @param type The energy type that is triggering the revalidation (should be the same type as
* this manager)
*/
- public void revalidate(BlockPos4D coord, World w, ConduitType type) {
+ public void revalidate(BlockPos4D coord, Level w, ConduitType type) {
lock.writeLock().lock();
try {
invalidate(coord);
@@ -193,7 +193,7 @@ public boolean areInSameNetwork(BlockPos4D a, BlockPos4D b) {
* @param src The block from which we are scanning
* @param type The type of energy that will flow throught the scanned network
*/
- protected void recursiveScan(World w, BlockPos4D coord, BlockState src, ConduitType type) {
+ protected void recursiveScan(Level w, BlockPos4D coord, BlockState src, ConduitType type) {
for (int i = 0; i < Direction.values().length; i++) {
Direction face = Direction.values()[i];
BlockPos4D n = coord.relative(face);
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitRegistry.java b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitRegistry.java
similarity index 86%
rename from src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitRegistry.java
rename to src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitRegistry.java
index 09ae70c3..82b09df1 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitRegistry.java
+++ b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/ConduitRegistry.java
@@ -1,6 +1,6 @@
-package zone.moddev.mc.poweradvantage.conduitnetwork;
+package zone.moddev.mc.basepower.conduitnetwork;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.IPowerMachine;
import cyano.poweradvantage.api.ITypedConduit;
@@ -8,13 +8,13 @@
import cyano.poweradvantage.api.modsupport.ExternalPowerRequest;
import cyano.poweradvantage.api.modsupport.LightWeightPowerRegistry;
import cyano.poweradvantage.api.modsupport.Wrappers;
-import zone.moddev.mc.poweradvantage.math.BlockPos4D;
-import net.minecraft.block.Block;
-import net.minecraft.block.ITileEntityProvider;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.math.BlockPos4D;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.EntityBlock;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -32,7 +32,7 @@
public class ConduitRegistry {
private final Map networkManagers = new HashMap<>();
- private final Map, World> activeWorlds = new HashMap<>();
+ private final Map, Level> activeWorlds = new HashMap<>();
// thread-safe singleton instantiation
private static ConduitRegistry instance = null;
@@ -73,7 +73,7 @@ public static ConduitRegistry getInstance() {
* @return A list of PowerRequest instances, sorted in order of highest priority to lowest
* priority.
*/
- public List getRequestsForPower(World w, BlockPos coord, ConduitType conduitType) {
+ public List getRequestsForPower(Level w, BlockPos coord, ConduitType conduitType) {
return getRequestsForPower(w, coord, conduitType, conduitType);
}
@@ -90,9 +90,9 @@ public List getRequestsForPower(World w, BlockPos coord, ConduitTy
* @return A list of PowerRequest instances, sorted in order of highest priority to lowest
* priority.
*/
- public List getRequestsForPower(World w, BlockPos coord, ConduitType conduitType, ConduitType energyType) {
+ public List getRequestsForPower(Level w, BlockPos coord, ConduitType conduitType, ConduitType energyType) {
if (!w.hasChunkAt(coord)) return Collections.emptyList();
- net.minecraft.util.RegistryKey dimension = w.dimension();
+ net.minecraft.resources.ResourceKey dimension = w.dimension();
clearIfWorldChanged(w, dimension);
ConduitNetworkManager manager = getConduitNetworkManager(conduitType);
BlockPos4D bp = new BlockPos4D(dimension, coord);
@@ -109,13 +109,13 @@ public List getRequestsForPower(World w, BlockPos coord, ConduitTy
return requests;
}
- private List collectRequests(World w, List net, ConduitType conduitType, ConduitType energyType) {
+ private List collectRequests(Level w, List net, ConduitType conduitType, ConduitType energyType) {
List requests = new ArrayList<>();
for (BlockPos4D pos : net) {
if (!w.hasChunkAt(pos.pos)) continue;
Block b = w.getBlockState(pos.pos).getBlock();
- if (b instanceof ITileEntityProvider) {
- TileEntity e = w.getBlockEntity(pos.pos);
+ if (b instanceof EntityBlock) {
+ BlockEntity e = w.getBlockEntity(pos.pos);
if (e instanceof IPowerMachine && ((ITypedConduit) e).isPowerSink(energyType)) {
PowerRequest req = ((IPowerMachine) e).getPowerRequest(energyType);
if (req != PowerRequest.REQUEST_NOTHING) requests.add(req);
@@ -156,7 +156,7 @@ private List collectRequests(World w, List net, Condui
*/
public static float transmitPowerToConsumers(
final float availableEnergy, ConduitType powerType, byte minimumPriority,
- TileEntity provider
+ BlockEntity provider
) {
return transmitPowerToConsumers(availableEnergy, powerType, powerType, minimumPriority, provider.getLevel(), provider.getBlockPos(), provider);
}
@@ -180,14 +180,14 @@ public static float transmitPowerToConsumers(
*/
public static float transmitPowerToConsumers(
final float availableEnergy, ConduitType networkType, ConduitType powerType, byte minimumPriority,
- World world, BlockPos srcPos, Object providerInstance
+ Level world, BlockPos srcPos, Object providerInstance
) {
List requests = ConduitRegistry.getInstance().getRequestsForPower(world, srcPos, networkType, powerType);
return distributePower(availableEnergy, powerType, minimumPriority, world, providerInstance, requests);
}
static float distributePower(float availableEnergy, ConduitType powerType, byte minimumPriority,
- World world, Object providerInstance, List requests) {
+ Level world, Object providerInstance, List requests) {
if (!Float.isFinite(availableEnergy) || availableEnergy <= 0) return 0;
float e = availableEnergy;
for (PowerRequest req : requests) {
@@ -218,9 +218,9 @@ static float distributePower(float availableEnergy, ConduitType powerType, byte
* @param location The position of the block being added
* @param type The native energy type of the added conduit block
*/
- public void conduitBlockPlacedEvent(World w, BlockPos location, ConduitType type) {
+ public void conduitBlockPlacedEvent(Level w, BlockPos location, ConduitType type) {
if (w.isClientSide) return; // ignore client-side
- net.minecraft.util.RegistryKey dimension = w.dimension();
+ net.minecraft.resources.ResourceKey dimension = w.dimension();
clearIfWorldChanged(w, dimension);
BlockPos4D coord = new BlockPos4D(dimension, location);
ConduitNetworkManager manager = getConduitNetworkManager(type);
@@ -239,7 +239,7 @@ public void conduitBlockPlacedEvent(World w, BlockPos location, ConduitType type
* @param location The position of the block being added
* @param types The native energy type of the added conduit block
*/
- public void conduitBlockPlacedEvent(World w, BlockPos location, ConduitType... types) {
+ public void conduitBlockPlacedEvent(Level w, BlockPos location, ConduitType... types) {
for (int i = 0; i < types.length; i++) {
conduitBlockPlacedEvent(w, location, types[i]);
}
@@ -253,7 +253,7 @@ public void conduitBlockPlacedEvent(World w, BlockPos location, ConduitType... t
* @param w world containing the loaded tile
* @param types power types whose cached networks must be rebuilt
*/
- public void conduitBlockLoadedEvent(World w, ConduitType... types) {
+ public void conduitBlockLoadedEvent(Level w, ConduitType... types) {
if (w.isClientSide) return;
clearIfWorldChanged(w, w.dimension());
for (ConduitType type : types) {
@@ -272,10 +272,10 @@ public void onChunkUnload(ChunkEvent.Unload event) {
}
private void invalidateChunk(ChunkEvent event) {
- if (!(event.getWorld() instanceof World)) return;
- World world = (World) event.getWorld();
+ if (!(event.getWorld() instanceof Level)) return;
+ Level world = (Level) event.getWorld();
if (world.isClientSide) return;
- net.minecraft.util.RegistryKey dimension = world.dimension();
+ net.minecraft.resources.ResourceKey dimension = world.dimension();
clearIfWorldChanged(world, dimension);
for (ConduitNetworkManager manager : networkManagers.values()) {
manager.invalidateChunk(dimension, event.getChunk().getPos());
@@ -289,9 +289,9 @@ private void invalidateChunk(ChunkEvent event) {
* @param location The position of the block being removed
* @param type The native energy type of the removed conduit block
*/
- public void conduitBlockRemovedEvent(World w, BlockPos location, ConduitType type) {
+ public void conduitBlockRemovedEvent(Level w, BlockPos location, ConduitType type) {
if (w.isClientSide) return; // ignore client-side
- net.minecraft.util.RegistryKey dimension = w.dimension();
+ net.minecraft.resources.ResourceKey dimension = w.dimension();
clearIfWorldChanged(w, dimension);
BlockPos4D coord = new BlockPos4D(dimension, location);
ConduitNetworkManager manager = getConduitNetworkManager(type);
@@ -310,7 +310,7 @@ public void conduitBlockRemovedEvent(World w, BlockPos location, ConduitType typ
* @param location The position of the block being removed
* @param types The native energy type of the removed conduit block
*/
- public void conduitBlockRemovedEvent(World w, BlockPos location, ConduitType... types) {
+ public void conduitBlockRemovedEvent(Level w, BlockPos location, ConduitType... types) {
for (int i = 0; i < types.length; i++) {
conduitBlockRemovedEvent(w, location, types[i]);
}
@@ -327,32 +327,32 @@ private ConduitNetworkManager getConduitNetworkManager(ConduitType type) {
}
/** @deprecated The supplied world, not a numeric ID, identifies a dimension. */
- @Deprecated public void conduitBlockPlacedEvent(World world, int ignoredDimension, BlockPos pos, ConduitType type) {
+ @Deprecated public void conduitBlockPlacedEvent(Level world, int ignoredDimension, BlockPos pos, ConduitType type) {
conduitBlockPlacedEvent(world, pos, type);
}
/** @deprecated Use the world-only overload. */
- @Deprecated public void conduitBlockPlacedEvent(World world, int ignoredDimension, BlockPos pos, ConduitType... types) {
+ @Deprecated public void conduitBlockPlacedEvent(Level world, int ignoredDimension, BlockPos pos, ConduitType... types) {
conduitBlockPlacedEvent(world, pos, types);
}
/** @deprecated Use the world-only overload. */
- @Deprecated public void conduitBlockRemovedEvent(World world, int ignoredDimension, BlockPos pos, ConduitType type) {
+ @Deprecated public void conduitBlockRemovedEvent(Level world, int ignoredDimension, BlockPos pos, ConduitType type) {
conduitBlockRemovedEvent(world, pos, type);
}
/** @deprecated Use the world-only overload. */
- @Deprecated public void conduitBlockRemovedEvent(World world, int ignoredDimension, BlockPos pos, ConduitType... types) {
+ @Deprecated public void conduitBlockRemovedEvent(Level world, int ignoredDimension, BlockPos pos, ConduitType... types) {
conduitBlockRemovedEvent(world, pos, types);
}
/** @deprecated Use the world-only overload. */
- @Deprecated public void conduitBlockLoadedEvent(World world, int ignoredDimension, ConduitType... types) {
+ @Deprecated public void conduitBlockLoadedEvent(Level world, int ignoredDimension, ConduitType... types) {
conduitBlockLoadedEvent(world, types);
}
- private void clearIfWorldChanged(World w, net.minecraft.util.RegistryKey dimension) {
- World knownWorld = activeWorlds.get(dimension);
+ private void clearIfWorldChanged(Level w, net.minecraft.resources.ResourceKey dimension) {
+ Level knownWorld = activeWorlds.get(dimension);
if (knownWorld == w) return;
if (knownWorld != null) {
networkManagers.clear();
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/package-info.java b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/package-info.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/conduitnetwork/package-info.java
index 0dae2dea..e16e94ab 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/conduitnetwork/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/conduitnetwork/package-info.java
@@ -4,4 +4,4 @@
the same power type and caching the resulting list of sources and sinks. Every time a conduit block
is placed or broken, any adjacent networks are revalidated.
*/
-package zone.moddev.mc.poweradvantage.conduitnetwork;
\ No newline at end of file
+package zone.moddev.mc.basepower.conduitnetwork;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/config/PowerAdvantageConfig.java b/src/main/java/zone/moddev/mc/basepower/config/PowerAdvantageConfig.java
similarity index 94%
rename from src/main/java/zone/moddev/mc/poweradvantage/config/PowerAdvantageConfig.java
rename to src/main/java/zone/moddev/mc/basepower/config/PowerAdvantageConfig.java
index 36a0c796..a7a0981d 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/config/PowerAdvantageConfig.java
+++ b/src/main/java/zone/moddev/mc/basepower/config/PowerAdvantageConfig.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.config;
+package zone.moddev.mc.basepower.config;
import java.util.Arrays;
import java.util.Locale;
@@ -6,8 +6,8 @@
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.fml.config.ModConfig;
import cyano.poweradvantage.api.FluidCategoryRegistry;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.RecipeMode;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.RecipeMode;
/** Common configuration with the same gameplay defaults as the legacy cfg file. */
public final class PowerAdvantageConfig {
@@ -55,7 +55,7 @@ public final class PowerAdvantageConfig {
private PowerAdvantageConfig() {}
- public static void onConfigLoading(ModConfig.Loading event) {
+ public static void onConfigLoading(net.minecraftforge.fml.event.config.ModConfigEvent.Loading event) {
if (event.getConfig().getSpec() != SPEC) return;
loaded = true;
apply();
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/graphics/package-info.java b/src/main/java/zone/moddev/mc/basepower/graphics/package-info.java
similarity index 70%
rename from src/main/java/zone/moddev/mc/poweradvantage/graphics/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/graphics/package-info.java
index d75d8375..29bc810f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/graphics/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/graphics/package-info.java
@@ -2,4 +2,4 @@
This package contains classes related to on-demand rendering, such as for
entities and animated blocks.
*/
-package zone.moddev.mc.poweradvantage.graphics;
\ No newline at end of file
+package zone.moddev.mc.basepower.graphics;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/gui/FilteredFluidTankGUI.java b/src/main/java/zone/moddev/mc/basepower/gui/FilteredFluidTankGUI.java
similarity index 82%
rename from src/main/java/zone/moddev/mc/poweradvantage/gui/FilteredFluidTankGUI.java
rename to src/main/java/zone/moddev/mc/basepower/gui/FilteredFluidTankGUI.java
index 596a4c41..6ba10f8f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/gui/FilteredFluidTankGUI.java
+++ b/src/main/java/zone/moddev/mc/basepower/gui/FilteredFluidTankGUI.java
@@ -1,10 +1,10 @@
-package zone.moddev.mc.poweradvantage.gui;
+package zone.moddev.mc.basepower.gui;
import cyano.poweradvantage.api.fluid.FluidPoweredEntity;
import cyano.poweradvantage.api.simple.SimpleMachineGUI;
-import zone.moddev.mc.poweradvantage.math.Integer2D;
+import zone.moddev.mc.basepower.math.Integer2D;
import com.mojang.blaze3d.platform.GlStateManager;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
import cyano.poweradvantage.api.fluid.FluidStack;
public class FilteredFluidTankGUI extends SimpleMachineGUI {
@@ -27,8 +27,8 @@ public void drawGUIDecorations(Object srcEntity, GUIContainer guiContainer, int
guiDisplayImage, guiContainer, x, y, z);
}
}
- com.mojang.blaze3d.systems.RenderSystem.color4f(1f, 1f, 1f, 1f); // reset tint
- guiContainer.getMinecraft().getTextureManager().bind(guiDisplayImage);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1f, 1f, 1f, 1f); // reset tint
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, guiDisplayImage);
guiContainer.blit(x + 77, y + 6, 176, 0, 22, 66); // x, y, textureOffsetX, textureOffsetY, width, height)
}
@@ -46,7 +46,7 @@ public static void drawFluidBar(
FluidTankGUI.drawFluidFilledRectangle(guiContainer, fs, x + xPos, y + yPos + barSlotHeight - h, w, h, zLevel);
//guiContainer.drawModalRectWithCustomSizedTexture(x+xPos, y+yPos+barSlotHeight-h, 0, 0, w, h, 16, h);//h * texPerPixel); // x, y, u, v, width, height, textureWidth, textureHeight
- guiContainer.getMinecraft().getTextureManager().bind(displayImage);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, displayImage);
guiContainer.blit(x + xPos - 3, y + yPos - 3, 176, 0, 22, 66); // x, y, textureOffsetX, textureOffsetY, width, height)
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/gui/FluidTankGUI.java b/src/main/java/zone/moddev/mc/basepower/gui/FluidTankGUI.java
similarity index 75%
rename from src/main/java/zone/moddev/mc/poweradvantage/gui/FluidTankGUI.java
rename to src/main/java/zone/moddev/mc/basepower/gui/FluidTankGUI.java
index b5349af4..171ebef7 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/gui/FluidTankGUI.java
+++ b/src/main/java/zone/moddev/mc/basepower/gui/FluidTankGUI.java
@@ -1,16 +1,16 @@
-package zone.moddev.mc.poweradvantage.gui;
+package zone.moddev.mc.basepower.gui;
import cyano.poweradvantage.api.fluid.FluidPoweredEntity;
import cyano.poweradvantage.api.simple.SimpleMachineGUI;
-import zone.moddev.mc.poweradvantage.math.Integer2D;
+import zone.moddev.mc.basepower.math.Integer2D;
import com.mojang.blaze3d.platform.GlStateManager;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.client.renderer.BufferBuilder;
+import com.mojang.blaze3d.vertex.Tesselator;
+import com.mojang.blaze3d.vertex.BufferBuilder;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.texture.AtlasTexture;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.world.biome.BiomeColors;
+import net.minecraft.client.renderer.texture.TextureAtlas;
+import com.mojang.blaze3d.vertex.DefaultVertexFormat;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.BiomeColors;
import cyano.poweradvantage.api.fluid.FluidStack;
@@ -35,8 +35,8 @@ public void drawGUIDecorations(Object srcEntity, GUIContainer guiContainer, int
guiDisplayImage, guiContainer, x, y, z);
}
}
- com.mojang.blaze3d.systems.RenderSystem.color4f(1f, 1f, 1f, 1f); // reset tint
- guiContainer.getMinecraft().getTextureManager().bind(guiDisplayImage);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1f, 1f, 1f, 1f); // reset tint
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, guiDisplayImage);
guiContainer.blit(x + 77, y + 6, 176, 0, 22, 66); // x, y, textureOffsetX, textureOffsetY, width, height)
}
@@ -53,7 +53,7 @@ public static void drawFluidBar(
FluidTankGUI.drawFluidFilledRectangle(guiContainer, fs, x + xPos, y + yPos + barSlotHeight - h, w, h, zLevel);
//guiContainer.drawModalRectWithCustomSizedTexture(x+xPos, y+yPos+barSlotHeight-h, 0, 0, w, h, 16, h);//h * texPerPixel); // x, y, u, v, width, height, textureWidth, textureHeight
- guiContainer.getMinecraft().getTextureManager().bind(displayImage);
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, displayImage);
guiContainer.blit(x + xPos - 3, y + yPos - 3, 176, 0, 22, 66); // x, y, textureOffsetX, textureOffsetY, width, height)
}
@@ -65,20 +65,21 @@ public static void drawFluidFilledRectangle(
) {
if (fs == null || fs.getFluid() == null || width <= 0 || height <= 0) return;
// The atlas supplies the current animation frame; water's sprite is grayscale.
- TextureAtlasSprite sprite = guiContainer.getMinecraft().getTextureAtlas(AtlasTexture.LOCATION_BLOCKS)
+ TextureAtlasSprite sprite = guiContainer.getMinecraft().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS)
.apply(fs.getFluid().getAttributes().getStillTexture());
- guiContainer.getMinecraft().getTextureManager().bind(AtlasTexture.LOCATION_BLOCKS);
- int color = fs.getFluid().getAttributes().getColor(zone.moddev.mc.poweradvantage.util.ForgeFluidAdapter.toForge(fs));
- if (fs.getFluid().isSame(net.minecraft.fluid.Fluids.WATER)) {
+ com.mojang.blaze3d.systems.RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
+ int color = fs.getFluid().getAttributes().getColor(zone.moddev.mc.basepower.util.ForgeFluidAdapter.toForge(fs));
+ if (fs.getFluid().isSame(net.minecraft.world.level.material.Fluids.WATER)) {
color = guiContainer.getMinecraft().level != null && guiContainer.getMinecraft().player != null
? BiomeColors.getAverageWaterColor(guiContainer.getMinecraft().level, guiContainer.getMinecraft().player.blockPosition()) : 0x3F76E4;
}
float red = ((color >>> 16) & 255) / 255F;
float green = ((color >>> 8) & 255) / 255F;
float blue = (color & 255) / 255F;
- Tessellator tessellator = Tessellator.getInstance();
+ Tesselator tessellator = Tesselator.getInstance();
BufferBuilder vertexbuffer = tessellator.getBuilder();
- vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
+ com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexColorShader);
+ vertexbuffer.begin(com.mojang.blaze3d.vertex.VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR);
for (int dy = 0; dy < height; dy += 16) {
int tileHeight = Math.min(16, height - dy);
for (int dx = 0; dx < width; dx += 16) {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/gui/FunctionalCreativeTab.java b/src/main/java/zone/moddev/mc/basepower/gui/FunctionalCreativeTab.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/gui/FunctionalCreativeTab.java
rename to src/main/java/zone/moddev/mc/basepower/gui/FunctionalCreativeTab.java
index 97e248d6..5963b046 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/gui/FunctionalCreativeTab.java
+++ b/src/main/java/zone/moddev/mc/basepower/gui/FunctionalCreativeTab.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.gui;
+package zone.moddev.mc.basepower.gui;
-import net.minecraft.item.ItemGroup;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.NonNullList;
+import net.minecraft.world.item.CreativeModeTab;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.core.NonNullList;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
/**
@@ -11,7 +11,7 @@
* @author DrCyano
*
*/
-public class FunctionalCreativeTab extends ItemGroup {
+public class FunctionalCreativeTab extends CreativeModeTab {
private final java.util.function.Supplier- itemSupplier;
private final java.util.Comparator itemSortingAlgorithm;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/gui/StillGUI.java b/src/main/java/zone/moddev/mc/basepower/gui/StillGUI.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/gui/StillGUI.java
rename to src/main/java/zone/moddev/mc/basepower/gui/StillGUI.java
index 2fb2c96c..a3cc90b7 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/gui/StillGUI.java
+++ b/src/main/java/zone/moddev/mc/basepower/gui/StillGUI.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.gui;
+package zone.moddev.mc.basepower.gui;
import cyano.poweradvantage.api.simple.SimpleMachineGUI;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StillTileEntity;
-import zone.moddev.mc.poweradvantage.math.Integer2D;
-import net.minecraft.util.ResourceLocation;
+import zone.moddev.mc.basepower.machines.fluidmachines.StillTileEntity;
+import zone.moddev.mc.basepower.math.Integer2D;
+import net.minecraft.resources.ResourceLocation;
import cyano.poweradvantage.api.fluid.FluidStack;
public class StillGUI extends SimpleMachineGUI {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/items/package-info.java b/src/main/java/zone/moddev/mc/basepower/gui/package-info.java
similarity index 76%
rename from src/main/java/zone/moddev/mc/poweradvantage/items/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/gui/package-info.java
index 84786047..e830c8e9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/items/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/gui/package-info.java
@@ -3,10 +3,10 @@
This package contains content that is added by PowerAdvantage implementing the PowerAdvantage API.
If you are writing an add-on mod, use the code in this package for reference, but you should not
depend on it's implementation details as future updates might change them. For a better way to get
-PowerAdvantage content, look in the
zone.moddev.mc.poweradvantage.init package.
+PowerAdvantage content, look in the zone.moddev.mc.basepower.init package.
Because these classes are not part of the API, they are not well documented. They were only meant
for the eyes of the mod author(s).
*/
-package zone.moddev.mc.poweradvantage.items;
\ No newline at end of file
+package zone.moddev.mc.basepower.gui;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Blocks.java b/src/main/java/zone/moddev/mc/basepower/init/Blocks.java
similarity index 69%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Blocks.java
rename to src/main/java/zone/moddev/mc/basepower/init/Blocks.java
index 9be38c10..42a73f00 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Blocks.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Blocks.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -7,37 +7,37 @@
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.GUIBlock;
import cyano.poweradvantage.api.fluid.InteractiveFluidBlock;
-import net.minecraft.block.Block;
-import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.block.material.Material;
-import net.minecraft.potion.Effects;
-import net.minecraft.item.Item;
-import net.minecraft.item.BlockItem;
-import net.minecraft.potion.EffectInstance;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.effect.MobEffects;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.effect.MobEffectInstance;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.blocks.BlockFrame;
-import zone.moddev.mc.poweradvantage.blocks.BlockPowerSwitch;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyor;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyorFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityBlockFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityFoodFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityFuelFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityInventoryFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityOreFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityOverflowFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityPlantFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntitySmeltableFilter;
-import zone.moddev.mc.poweradvantage.machines.creative.InfiniteEnergyBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidDischargeBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidDrainBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidPipeBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.MetalTankBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StillBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StorageTankBlock;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.modsupport.TerminalFluidPipeBlock;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.blocks.BlockFrame;
+import zone.moddev.mc.basepower.blocks.BlockPowerSwitch;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyorFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityBlockFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityFoodFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityFuelFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityInventoryFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityOreFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityOverflowFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityPlantFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntitySmeltableFilter;
+import zone.moddev.mc.basepower.machines.creative.InfiniteEnergyBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidDischargeBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidDrainBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidPipeBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.MetalTankBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.StillBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.StorageTankBlock;
+import zone.moddev.mc.basepower.machines.fluidmachines.modsupport.TerminalFluidPipeBlock;
/** Stable block and block-item registry for the 1.13 port. */
@Mod.EventBusSubscriber(modid = PowerAdvantage.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
@@ -66,8 +66,8 @@ public final class Blocks {
public static GUIBlock infinite_steam;
public static GUIBlock infinite_electricity;
public static GUIBlock infinite_quantum;
- public static FlowingFluidBlock crude_oil_block;
- public static FlowingFluidBlock refined_oil_block;
+ public static LiquidBlock crude_oil_block;
+ public static LiquidBlock refined_oil_block;
private static boolean initialized;
@@ -105,18 +105,18 @@ public static synchronized void init() {
Block.Properties oilProperties = Block.Properties.of(Material.WATER).noCollission()
.strength(100.0F).dynamicShape();
- refined_oil_block = (FlowingFluidBlock) add(new InteractiveFluidBlock(Fluids.refined_oil,
- oilProperties, true, (world, entity) -> entity .addEffect(new EffectInstance(Effects.CONFUSION, 200))),
+ refined_oil_block = (LiquidBlock) add(new InteractiveFluidBlock(Fluids.refined_oil,
+ oilProperties, true, (world, entity) -> entity .addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200))),
"refined_oil");
- crude_oil_block = (FlowingFluidBlock) add(new InteractiveFluidBlock(Fluids.crude_oil,
- oilProperties, true, (world, entity) -> entity .addEffect(new EffectInstance(Effects.MOVEMENT_SLOWDOWN, 200, 2))),
+ crude_oil_block = (LiquidBlock) add(new InteractiveFluidBlock(Fluids.crude_oil,
+ oilProperties, true, (world, entity) -> entity .addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 200, 2))),
"crude_oil");
ModSupport.initBlocks();
initialized = true;
}
- private static GUIBlock filter(String id, Class extends zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor> type,
+ private static GUIBlock filter(String id, Class extends zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor> type,
float hardness) {
return (GUIBlock) add(new BlockConveyorFilter(Material.PISTON, hardness, type), id);
}
@@ -139,7 +139,7 @@ public static void registerBlockItems(RegistryEvent.Register- event) {
for (Map.Entry entry : ALL_BLOCKS.entrySet()) {
Item.Properties properties = new Item.Properties();
if (!"fluid_pipe_terminal".equals(entry.getKey())
- && !(entry.getValue() instanceof FlowingFluidBlock)) {
+ && !(entry.getValue() instanceof LiquidBlock)) {
properties.tab(ItemGroups.tab_powerAdvantage);
}
BlockItem item = new BlockItem(entry.getValue(), properties);
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Entities.java b/src/main/java/zone/moddev/mc/basepower/init/Entities.java
similarity index 50%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Entities.java
rename to src/main/java/zone/moddev/mc/basepower/init/Entities.java
index fc3b3727..2aa52692 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Entities.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Entities.java
@@ -1,27 +1,27 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityType;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityBlockFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityFoodFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityFuelFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityInventoryFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityOreFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityOverflowFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityPlantFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntitySmeltableFilter;
-import zone.moddev.mc.poweradvantage.machines.creative.InfiniteEnergyTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidDischargeTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidDrainTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.MetalTankTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StillTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StorageTankTileEntity;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.modsupport.TerminalFluidPipeTileEntity;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityBlockFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityFoodFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityFuelFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityInventoryFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityOreFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityOverflowFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityPlantFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntitySmeltableFilter;
+import zone.moddev.mc.basepower.machines.creative.InfiniteEnergyTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidDischargeTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidDrainTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.MetalTankTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.StillTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.StorageTankTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.modsupport.TerminalFluidPipeTileEntity;
import cyano.poweradvantage.api.modsupport.rf.TileEntityRFElectricityConverter;
import cyano.poweradvantage.api.modsupport.rf.TileEntityRFQuantumConverter;
import cyano.poweradvantage.api.modsupport.rf.TileEntityRFSteamConverter;
@@ -30,31 +30,31 @@
/** Stable tile identities with the native 1.14 valid-block lists. */
@Mod.EventBusSubscriber(modid = PowerAdvantage.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
public final class Entities {
- public static TileEntityType PIPE_TERMINAL;
- public static TileEntityType FLUID_DRAIN;
- public static TileEntityType FLUID_DISCHARGE;
- public static TileEntityType STORAGE_TANK;
- public static TileEntityType METAL_TANK;
- public static TileEntityType STILL;
- public static TileEntityType CONVEYOR;
- public static TileEntityType FILTER_BLOCK;
- public static TileEntityType FILTER_FOOD;
- public static TileEntityType FILTER_FUEL;
- public static TileEntityType FILTER_INVENTORY;
- public static TileEntityType FILTER_ORE;
- public static TileEntityType FILTER_PLANT;
- public static TileEntityType FILTER_SMELT;
- public static TileEntityType FILTER_OVERFLOW;
- public static TileEntityType INFINITE_ENERGY;
- public static TileEntityType RF_STEAM_CONVERTER;
- public static TileEntityType RF_ELECTRICITY_CONVERTER;
- public static TileEntityType RF_QUANTUM_CONVERTER;
- public static TileEntityType TR_ELECTRICITY_CONVERTER;
+ public static BlockEntityType PIPE_TERMINAL;
+ public static BlockEntityType FLUID_DRAIN;
+ public static BlockEntityType FLUID_DISCHARGE;
+ public static BlockEntityType STORAGE_TANK;
+ public static BlockEntityType METAL_TANK;
+ public static BlockEntityType STILL;
+ public static BlockEntityType CONVEYOR;
+ public static BlockEntityType FILTER_BLOCK;
+ public static BlockEntityType FILTER_FOOD;
+ public static BlockEntityType FILTER_FUEL;
+ public static BlockEntityType FILTER_INVENTORY;
+ public static BlockEntityType FILTER_ORE;
+ public static BlockEntityType FILTER_PLANT;
+ public static BlockEntityType FILTER_SMELT;
+ public static BlockEntityType FILTER_OVERFLOW;
+ public static BlockEntityType INFINITE_ENERGY;
+ public static BlockEntityType RF_STEAM_CONVERTER;
+ public static BlockEntityType RF_ELECTRICITY_CONVERTER;
+ public static BlockEntityType RF_QUANTUM_CONVERTER;
+ public static BlockEntityType TR_ELECTRICITY_CONVERTER;
private Entities() {}
@SubscribeEvent
- public static void register(RegistryEvent.Register> event) {
+ public static void register(RegistryEvent.Register> event) {
PIPE_TERMINAL = register(event, "tileentity.pipe_terminal", TerminalFluidPipeTileEntity::new, Blocks.fluid_pipe_terminal);
FLUID_DRAIN = register(event, "tileentity.fluid_drain", FluidDrainTileEntity::new, Blocks.fluid_drain);
FLUID_DISCHARGE = register(event, "tileentity.fluid_discharge", FluidDischargeTileEntity::new, Blocks.fluid_discharge);
@@ -78,10 +78,10 @@ public static void register(RegistryEvent.Register> event) {
TR_ELECTRICITY_CONVERTER = register(event, "tr_electricity_converter_tileentity", TileEntityTRElectricityConverter::new, ModSupport.converter_tr_electricity);
}
- private static TileEntityType register(
- RegistryEvent.Register> event, String id,
- java.util.function.Supplier extends T> factory, net.minecraft.block.Block... validBlocks) {
- TileEntityType type = TileEntityType.Builder.of(factory, validBlocks).build(null);
+ private static BlockEntityType register(
+ RegistryEvent.Register> event, String id,
+ BlockEntityType.BlockEntitySupplier factory, net.minecraft.world.level.block.Block... validBlocks) {
+ BlockEntityType type = BlockEntityType.Builder.of(factory, validBlocks).build(null);
type.setRegistryName(PowerAdvantage.MODID, id);
event.getRegistry().register(type);
return type;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Fluids.java b/src/main/java/zone/moddev/mc/basepower/init/Fluids.java
similarity index 84%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Fluids.java
rename to src/main/java/zone/moddev/mc/basepower/init/Fluids.java
index 6f54158b..76f03974 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Fluids.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Fluids.java
@@ -1,22 +1,22 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
import java.util.IdentityHashMap;
import java.util.Map;
import cyano.poweradvantage.api.ConduitType;
-import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.block.BlockState;
-import net.minecraft.fluid.FlowingFluid;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.fluid.FluidState;
-import net.minecraft.item.Item;
-import net.minecraft.state.StateContainer;
-import net.minecraft.util.Direction;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.registry.Registry;
-import net.minecraft.world.IWorld;
-import net.minecraft.world.IWorldReader;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.material.FlowingFluid;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.core.Direction;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Registry;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.LevelReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.event.RegistryEvent;
@@ -24,7 +24,7 @@
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.ForgeFlowingFluid;
import net.minecraftforge.fml.common.Mod;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/** Native Forge fluids and their persistent PowerAdvantage conduit identities. */
@Mod.EventBusSubscriber(modid = PowerAdvantage.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
@@ -45,8 +45,8 @@ private Fluids() {}
public static synchronized void init() {
if (initialized) return;
- fluidConduit_water = registerNewFluid(net.minecraft.fluid.Fluids.WATER);
- fluidConduit_lava = registerNewFluid(net.minecraft.fluid.Fluids.LAVA);
+ fluidConduit_water = registerNewFluid(net.minecraft.world.level.material.Fluids.WATER);
+ fluidConduit_lava = registerNewFluid(net.minecraft.world.level.material.Fluids.LAVA);
flowing_crude_oil = new PowerFluid.Flowing(Kind.CRUDE);
crude_oil = new PowerFluid.Source(Kind.CRUDE);
@@ -109,7 +109,7 @@ public static Fluid byName(String name) {
private static Fluid registeredFluid(ResourceLocation id) {
// Forge's defaulted fluid registry returns EMPTY, not null, for unknown names.
- // Do not let a missing poweradvantage:water hide the legacy vanilla fallback.
+ // Do not let a missing basepower:water hide the legacy vanilla fallback.
return net.minecraftforge.registries.ForgeRegistries.FLUIDS.containsKey(id)
? net.minecraftforge.registries.ForgeRegistries.FLUIDS.getValue(id) : null;
}
@@ -132,7 +132,7 @@ private static ForgeFlowingFluid.Properties properties(Kind kind) {
() -> kind == Kind.CRUDE ? flowing_crude_oil : flowing_refined_oil,
FluidAttributes.builder(new ResourceLocation(PowerAdvantage.MODID, "blocks/" + name + "_still"),
new ResourceLocation(PowerAdvantage.MODID, "blocks/" + name + "_flow"))
- .translationKey("fluid.poweradvantage." + name).color(0xFFFFFFFF)
+ .translationKey("fluid.basepower." + name).color(0xFFFFFFFF)
.density(kind == Kind.CRUDE ? 850 : 720)
.viscosity(kind == Kind.CRUDE ? 6000 : 1000).temperature(300))
.bucket(() -> kind == Kind.CRUDE ? Items.crude_oil_bucket : Items.refined_oil_bucket)
@@ -143,7 +143,7 @@ private static ForgeFlowingFluid.Properties properties(Kind kind) {
public static final class Flowing extends PowerFluid {
public Flowing(Kind kind) { super(kind); }
- @Override protected void createFluidStateDefinition(StateContainer.Builder builder) {
+ @Override protected void createFluidStateDefinition(StateDefinition.Builder builder) {
super.createFluidStateDefinition(builder);
builder.add(LEVEL);
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Fuels.java b/src/main/java/zone/moddev/mc/basepower/init/Fuels.java
similarity index 70%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Fuels.java
rename to src/main/java/zone/moddev/mc/basepower/init/Fuels.java
index 120b28fb..386ac41c 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Fuels.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Fuels.java
@@ -1,7 +1,7 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import zone.moddev.mc.poweradvantage.registry.FuelRegistry;
-import net.minecraft.item.ItemStack;
+import zone.moddev.mc.basepower.registry.FuelRegistry;
+import net.minecraft.world.item.ItemStack;
@@ -21,9 +21,9 @@ public static void init() {
FuelRegistry.getInstance().registerFuel(Items.refined_oil_bucket,
(short) Math.min(Short.MAX_VALUE, 1000 * REFINED_OIL_FUEL_PER_FLUID_UNIT));
FuelRegistry.getInstance().registerPostBurnItem(Items.crude_oil_bucket,
- (ItemStack stack) -> new ItemStack(net.minecraft.item.Items.BUCKET));
+ (ItemStack stack) -> new ItemStack(net.minecraft.world.item.Items.BUCKET));
FuelRegistry.getInstance().registerPostBurnItem(Items.refined_oil_bucket,
- (ItemStack stack) -> new ItemStack(net.minecraft.item.Items.BUCKET));
+ (ItemStack stack) -> new ItemStack(net.minecraft.world.item.Items.BUCKET));
initDone = true;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/GUI.java b/src/main/java/zone/moddev/mc/basepower/init/GUI.java
similarity index 91%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/GUI.java
rename to src/main/java/zone/moddev/mc/basepower/init/GUI.java
index 3d845d7a..35abd6b0 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/GUI.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/GUI.java
@@ -1,11 +1,11 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import net.minecraft.util.ResourceLocation;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import net.minecraft.resources.ResourceLocation;
+import zone.moddev.mc.basepower.PowerAdvantage;
import cyano.poweradvantage.api.simple.SimpleMachineGUI;
-import zone.moddev.mc.poweradvantage.gui.*;
-import zone.moddev.mc.poweradvantage.math.Integer2D;
-import zone.moddev.mc.poweradvantage.registry.MachineGUIRegistry;
+import zone.moddev.mc.basepower.gui.*;
+import zone.moddev.mc.basepower.math.Integer2D;
+import zone.moddev.mc.basepower.registry.MachineGUIRegistry;
public abstract class GUI {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/ItemGroups.java b/src/main/java/zone/moddev/mc/basepower/init/ItemGroups.java
similarity index 70%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/ItemGroups.java
rename to src/main/java/zone/moddev/mc/basepower/init/ItemGroups.java
index 66daa2ce..33a497de 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/ItemGroups.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/ItemGroups.java
@@ -1,16 +1,16 @@
-package zone.moddev.mc.poweradvantage.init;
-
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.gui.FunctionalCreativeTab;
-import net.minecraft.item.ItemGroup;
-import net.minecraft.item.Item;
-import net.minecraft.item.BlockItem;
-import net.minecraft.item.ItemStack;
+package zone.moddev.mc.basepower.init;
+
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.gui.FunctionalCreativeTab;
+import net.minecraft.world.item.CreativeModeTab;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.ForgeRegistries;
public class ItemGroups {
- public static ItemGroup tab_powerAdvantage;
+ public static CreativeModeTab tab_powerAdvantage;
private static boolean initDone = false;
@@ -42,7 +42,7 @@ private static String catagorize(ItemStack i) {
Item item = i.getItem();
sb.append(ForgeRegistries.ITEMS.getKey(item).getNamespace());
if (item instanceof BlockItem) {
- if (((BlockItem) item).getBlock().hasTileEntity(((BlockItem) item).getBlock().defaultBlockState())) {
+ if (((BlockItem) item).getBlock().defaultBlockState().hasBlockEntity()) {
sb.append("A");
} else {
sb.append("B");
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Items.java b/src/main/java/zone/moddev/mc/basepower/init/Items.java
similarity index 85%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Items.java
rename to src/main/java/zone/moddev/mc/basepower/init/Items.java
index 48dbcaf5..1594f683 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Items.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Items.java
@@ -1,16 +1,16 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
-import net.minecraft.item.Item;
-import net.minecraft.item.BucketItem;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.BucketItem;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.items.RotationTool;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.items.RotationTool;
/** Stable item registry for PowerAdvantage 1.13. */
@Mod.EventBusSubscriber(modid = PowerAdvantage.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
@@ -35,9 +35,9 @@ public static synchronized void init() {
sprocket = add("sprocket", new Item(properties()));
rotator_tool = add("rotator_tool", new RotationTool(properties().stacksTo(1)));
crude_oil_bucket = add("crude_oil_bucket", new BucketItem(Fluids.crude_oil,
- new Item.Properties().tab(ItemGroups.tab_powerAdvantage).stacksTo(1).craftRemainder(net.minecraft.item.Items.BUCKET)));
+ new Item.Properties().tab(ItemGroups.tab_powerAdvantage).stacksTo(1).craftRemainder(net.minecraft.world.item.Items.BUCKET)));
refined_oil_bucket = add("refined_oil_bucket", new BucketItem(Fluids.refined_oil,
- new Item.Properties().tab(ItemGroups.tab_powerAdvantage).stacksTo(1).craftRemainder(net.minecraft.item.Items.BUCKET)));
+ new Item.Properties().tab(ItemGroups.tab_powerAdvantage).stacksTo(1).craftRemainder(net.minecraft.world.item.Items.BUCKET)));
initialized = true;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Materials.java b/src/main/java/zone/moddev/mc/basepower/init/Materials.java
similarity index 77%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Materials.java
rename to src/main/java/zone/moddev/mc/basepower/init/Materials.java
index 4373aac3..91af7879 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Materials.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Materials.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
public class Materials {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/ModSupport.java b/src/main/java/zone/moddev/mc/basepower/init/ModSupport.java
similarity index 92%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/ModSupport.java
rename to src/main/java/zone/moddev/mc/basepower/init/ModSupport.java
index 9120d9b6..d5cb1193 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/ModSupport.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/ModSupport.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
import java.util.Locale;
@@ -9,10 +9,10 @@
import cyano.poweradvantage.api.modsupport.rf.TileEntityRFSteamConverter;
import cyano.poweradvantage.api.modsupport.techreborn.BlockTRConverter;
import cyano.poweradvantage.api.modsupport.techreborn.TileEntityTRElectricityConverter;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.config.PowerAdvantageConfig;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.config.PowerAdvantageConfig;
/** Registers the converter blocks whose historical IDs are retained in 1.13. */
public final class ModSupport {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Recipes.java b/src/main/java/zone/moddev/mc/basepower/init/Recipes.java
similarity index 86%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Recipes.java
rename to src/main/java/zone/moddev/mc/basepower/init/Recipes.java
index c2e89778..dc0e094a 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Recipes.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Recipes.java
@@ -1,11 +1,11 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
import cyano.poweradvantage.api.FluidCategoryRegistry;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import zone.moddev.mc.poweradvantage.registry.still.recipe.DistillationRecipeRegistry;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import zone.moddev.mc.basepower.registry.still.recipe.DistillationRecipeRegistry;
public abstract class Recipes {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/TreasureChests.java b/src/main/java/zone/moddev/mc/basepower/init/TreasureChests.java
similarity index 86%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/TreasureChests.java
rename to src/main/java/zone/moddev/mc/basepower/init/TreasureChests.java
index 4ea3adfd..b41b6001 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/TreasureChests.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/TreasureChests.java
@@ -1,7 +1,7 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
import org.apache.logging.log4j.Level;
import java.io.IOException;
@@ -49,7 +49,7 @@ private static void writeLootFile(Path file, String content) {
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:sprocket\",\n" +
+ " \"name\": \"basepower:sprocket\",\n" +
" \"weight\": 5,\n" +
" \"functions\": [\n" +
" {\n" +
@@ -63,7 +63,7 @@ private static void writeLootFile(Path file, String content) {
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:fluid_pipe\",\n" +
+ " \"name\": \"basepower:fluid_pipe\",\n" +
" \"weight\": 5,\n" +
" \"functions\": [\n" +
" {\n" +
@@ -77,22 +77,22 @@ private static void writeLootFile(Path file, String content) {
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:fluid_storage_tank\",\n" +
+ " \"name\": \"basepower:fluid_storage_tank\",\n" +
" \"weight\": 3\n" +
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:fluid_drain\",\n" +
+ " \"name\": \"basepower:fluid_drain\",\n" +
" \"weight\": 2\n" +
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:fluid_discharge\",\n" +
+ " \"name\": \"basepower:fluid_discharge\",\n" +
" \"weight\": 2\n" +
" },\n" +
" {\n" +
" \"type\": \"item\",\n" +
- " \"name\": \"poweradvantage:item_conveyor\",\n" +
+ " \"name\": \"basepower:item_conveyor\",\n" +
" \"weight\": 3,\n" +
" \"functions\": [\n" +
" {\n" +
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/Villages.java b/src/main/java/zone/moddev/mc/basepower/init/Villages.java
similarity index 68%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/Villages.java
rename to src/main/java/zone/moddev/mc/basepower/init/Villages.java
index ea3e71bd..de04a4ea 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/Villages.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/Villages.java
@@ -1,8 +1,8 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
-import net.minecraft.entity.merchant.villager.VillagerProfession;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.MerchantOffer;
+import net.minecraft.world.entity.npc.VillagerProfession;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.trading.MerchantOffer;
import net.minecraftforge.event.village.VillagerTradesEvent;
/** The old farmer and toolsmith careers now have their own vanilla professions. */
@@ -12,11 +12,11 @@ private Villages() {}
public static void onTrades(VillagerTradesEvent event) {
if (event.getType() == VillagerProfession.TOOLSMITH) {
event.getTrades().get(1).add((villager, random) -> new MerchantOffer(
- new ItemStack(net.minecraft.item.Items.EMERALD),
+ new ItemStack(net.minecraft.world.item.Items.EMERALD),
new ItemStack(Items.sprocket, 1 + random.nextInt(4)), 7, 1, 0.0F));
} else if (event.getType() == VillagerProfession.FARMER) {
event.getTrades().get(1).add((villager, random) -> new MerchantOffer(
- new ItemStack(net.minecraft.item.Items.EMERALD),
+ new ItemStack(net.minecraft.world.item.Items.EMERALD),
new ItemStack(Items.bioplastic_ingot, 4 + random.nextInt(5)), 7, 1, 0.0F));
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/WorldGen.java b/src/main/java/zone/moddev/mc/basepower/init/WorldGen.java
similarity index 85%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/WorldGen.java
rename to src/main/java/zone/moddev/mc/basepower/init/WorldGen.java
index 77cc2cba..e25d91ce 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/WorldGen.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/WorldGen.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
public abstract class WorldGen {
@@ -20,7 +20,7 @@ public static void init() {
+ " \"dimension\":\"+\",\n"
+ " \"ores\":[\n"
+ " {\n"
- + " \"blockID\":\"poweradvantage:crude_oil\",\n"
+ + " \"blockID\":\"basepower:crude_oil\",\n"
+ " \"size\":64,\n"
+ " \"variation\":50,\n"
+ " \"frequency\":0.25,\n"
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/init/package-info.java b/src/main/java/zone/moddev/mc/basepower/init/package-info.java
similarity index 77%
rename from src/main/java/zone/moddev/mc/poweradvantage/init/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/init/package-info.java
index 2711107c..28a4285d 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/init/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/init/package-info.java
@@ -2,4 +2,4 @@
This package contains registries for all of the new content added by PowerAdvantage. Use these
classes to interact with the items and blocks.
*/
-package zone.moddev.mc.poweradvantage.init;
\ No newline at end of file
+package zone.moddev.mc.basepower.init;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/items/RotationTool.java b/src/main/java/zone/moddev/mc/basepower/items/RotationTool.java
similarity index 54%
rename from src/main/java/zone/moddev/mc/poweradvantage/items/RotationTool.java
rename to src/main/java/zone/moddev/mc/basepower/items/RotationTool.java
index b5af2b4f..d727c99c 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/items/RotationTool.java
+++ b/src/main/java/zone/moddev/mc/basepower/items/RotationTool.java
@@ -1,26 +1,26 @@
-package zone.moddev.mc.poweradvantage.items;
+package zone.moddev.mc.basepower.items;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.util.ActionResultType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Hand;
-import net.minecraft.util.Rotation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemUseContext;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.core.Direction;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.context.UseOnContext;
-public class RotationTool extends net.minecraft.item.Item {
+public class RotationTool extends net.minecraft.world.item.Item {
public RotationTool(Item.Properties properties) {
super(properties);
}
@Override
- public ActionResultType useOn(ItemUseContext context) {
- final PlayerEntity player = context.getPlayer();
- final World w = context.getLevel();
+ public InteractionResult useOn(UseOnContext context) {
+ final Player player = context.getPlayer();
+ final Level w = context.getLevel();
final BlockPos coord = context.getClickedPos();
final Direction facing = context.getClickedFace();
BlockState bs = w.getBlockState(coord);
@@ -41,10 +41,10 @@ public ActionResultType useOn(ItemUseContext context) {
BlockState rotated = bs.rotate(w, coord, Rotation.COUNTERCLOCKWISE_90);
if (rotated != bs) {
w.setBlock(coord, rotated, 3);
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
}
- return ActionResultType.PASS;
+ return InteractionResult.PASS;
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/blocks/package-info.java b/src/main/java/zone/moddev/mc/basepower/items/package-info.java
similarity index 76%
rename from src/main/java/zone/moddev/mc/poweradvantage/blocks/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/items/package-info.java
index 5af68dab..04ef1d7b 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/blocks/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/items/package-info.java
@@ -3,10 +3,10 @@
This package contains content that is added by PowerAdvantage implementing the PowerAdvantage API.
If you are writing an add-on mod, use the code in this package for reference, but you should not
depend on it's implementation details as future updates might change them. For a better way to get
-PowerAdvantage content, look in the
zone.moddev.mc.poweradvantage.init package.
+PowerAdvantage content, look in the zone.moddev.mc.basepower.init package.
Because these classes are not part of the API, they are not well documented. They were only meant
for the eyes of the mod author(s).
*/
-package zone.moddev.mc.poweradvantage.blocks;
\ No newline at end of file
+package zone.moddev.mc.basepower.items;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyor.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyor.java
similarity index 54%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyor.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyor.java
index 667ba351..57556588 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyor.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyor.java
@@ -1,21 +1,21 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
import cyano.poweradvantage.api.GUIBlock;
-import net.minecraft.block.Block;
-import net.minecraft.block.SoundType;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.state.DirectionProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.state.properties.BlockStateProperties;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Mirror;
-import net.minecraft.util.Rotation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.block.Mirror;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
/** Six-facing conveyor block; legacy metadata remains the facing index. */
public class BlockConveyor extends GUIBlock {
@@ -27,20 +27,20 @@ public BlockConveyor(Material material, float hardness) {
registerDefaultState(getStateDefinition().any().setValue(FACING, Direction.NORTH));
}
- @Override public TileEntity newBlockEntity(IBlockReader world) { return new TileEntityConveyor(); }
+ @Override public BlockEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { return new TileEntityConveyor(pos, state); }
@Override public BlockState rotate(BlockState state, Rotation rotation) { return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); }
@Override public BlockState mirror(BlockState state, Mirror mirror) { return state.rotate(mirror.getRotation(state.getValue(FACING))); }
- @Override public BlockState getStateForPlacement(BlockItemUseContext context) {
+ @Override public BlockState getStateForPlacement(BlockPlaceContext context) {
return defaultBlockState().setValue(FACING, context.getClickedFace().getOpposite());
}
- @Override protected void createBlockStateDefinition(StateContainer.Builder builder) { builder.add(FACING); }
+ @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); }
@Override public boolean isOpaqueCube(BlockState state) { return false; }
public boolean isFullCube(BlockState state) { return false; }
@Override public boolean hasAnalogOutputSignal(BlockState state) { return true; }
@Override
- public int getAnalogOutputSignal(BlockState state, World world, BlockPos pos) {
- TileEntity tile = world.getBlockEntity(pos);
+ public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {
+ BlockEntity tile = world.getBlockEntity(pos);
return tile instanceof TileEntityConveyor && !((TileEntityConveyor) tile).getItem(0).isEmpty() ? 7 : 0;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyorFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyorFilter.java
similarity index 58%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyorFilter.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyorFilter.java
index 167e1713..8d889506 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/BlockConveyorFilter.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/BlockConveyorFilter.java
@@ -1,26 +1,26 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
import cyano.poweradvantage.api.GUIBlock;
-import net.minecraft.block.Block;
-import net.minecraft.block.HorizontalBlock;
-import net.minecraft.block.SoundType;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.state.DirectionProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Mirror;
-import net.minecraft.util.Rotation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.block.Mirror;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.PowerAdvantage;
/** Horizontal conveyor filter block retaining its legacy metadata codec. */
public class BlockConveyorFilter extends GUIBlock {
- public static final DirectionProperty FACING = HorizontalBlock.FACING;
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
private final Class extends TileEntityConveyor> tileEntityClass;
public BlockConveyorFilter(Material material, float hardness,
@@ -32,9 +32,9 @@ public BlockConveyorFilter(Material material, float hardness,
}
@Override
- public TileEntity newBlockEntity(IBlockReader world) {
+ public BlockEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
try {
- return tileEntityClass.newInstance();
+ return tileEntityClass.getConstructor(BlockPos.class, BlockState.class).newInstance(pos, state);
} catch (ReflectiveOperationException exception) {
PowerAdvantage.LOGGER.error("Could not create conveyor filter {}", tileEntityClass.getName(), exception);
return null;
@@ -43,17 +43,17 @@ public TileEntity newBlockEntity(IBlockReader world) {
@Override public BlockState rotate(BlockState state, Rotation rotation) { return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); }
@Override public BlockState mirror(BlockState state, Mirror mirror) { return state.rotate(mirror.getRotation(state.getValue(FACING))); }
- @Override public BlockState getStateForPlacement(BlockItemUseContext context) {
+ @Override public BlockState getStateForPlacement(BlockPlaceContext context) {
return defaultBlockState().setValue(FACING, context.getHorizontalDirection());
}
- @Override protected void createBlockStateDefinition(StateContainer.Builder builder) { builder.add(FACING); }
+ @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); }
@Override public boolean isOpaqueCube(BlockState state) { return false; }
public boolean isFullCube(BlockState state) { return false; }
@Override public boolean hasAnalogOutputSignal(BlockState state) { return true; }
@Override
- public int getAnalogOutputSignal(BlockState state, World world, BlockPos pos) {
- TileEntity tile = world.getBlockEntity(pos);
+ public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {
+ BlockEntity tile = world.getBlockEntity(pos);
if (!(tile instanceof TileEntityConveyorFilter)) return 0;
TileEntityConveyorFilter filter = (TileEntityConveyorFilter) tile;
if (filter.getItem(0).isEmpty()) return 0;
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityBlockFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityBlockFilter.java
new file mode 100644
index 00000000..06a2055b
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityBlockFilter.java
@@ -0,0 +1,16 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.item.ItemStack;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntityBlockFilter extends TileEntityConveyorFilter {
+ public TileEntityBlockFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_BLOCK, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null) return false;
+ return item.getItem() instanceof BlockItem;
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyor.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyor.java
similarity index 78%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyor.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyor.java
index 9531bc4c..a78a65f7 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyor.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyor.java
@@ -1,37 +1,36 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import zone.moddev.mc.poweradvantage.util.InventoryWrapper;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.item.ItemEntity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.HopperTileEntity;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
-import net.minecraft.tileentity.ITickableTileEntity;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.TextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TranslationTextComponent;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.inventory.container.INamedContainerProvider;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import zone.moddev.mc.basepower.util.InventoryWrapper;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.item.ItemEntity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.Container;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.HopperBlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.Direction;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.BaseComponent;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.world.MenuProvider;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.PowerAdvantage;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
-public class TileEntityConveyor extends TileEntity implements ITickableTileEntity, ISidedInventory, net.minecraft.util.INameable {
- private final zone.moddev.mc.poweradvantage.util.MachineCapabilities machineCapabilities =
- new zone.moddev.mc.poweradvantage.util.MachineCapabilities(this);
+public class TileEntityConveyor extends BlockEntity implements WorldlyContainer, net.minecraft.world.Nameable {
+ private final zone.moddev.mc.basepower.util.MachineCapabilities machineCapabilities =
+ new zone.moddev.mc.basepower.util.MachineCapabilities(this);
@Override public net.minecraftforge.common.util.LazyOptional getCapability(
net.minecraftforge.common.capabilities.Capability capability, Direction face) {
@@ -42,12 +41,12 @@ public class TileEntityConveyor extends TileEntity implements ITickableTileEntit
return local.isPresent() ? local : super.getCapability(capability, face);
}
- @Override protected void invalidateCaps() {
+ @Override public void invalidateCaps() {
if (machineCapabilities != null) machineCapabilities.invalidate();
super.invalidateCaps();
}
- @Override protected void reviveCaps() {
+ @Override public void reviveCaps() {
super.reviveCaps();
if (machineCapabilities != null) machineCapabilities.revive();
}
@@ -67,19 +66,18 @@ public class TileEntityConveyor extends TileEntity implements ITickableTileEntit
protected final int transferInvterval = 7;
- public TileEntityConveyor(){
- this(Entities.CONVEYOR, 1);
+ public TileEntityConveyor(BlockPos pos, BlockState state){
+ this(Entities.CONVEYOR, pos, state, 1);
}
- protected TileEntityConveyor(TileEntityType> type, int inventorySize){
- super(type);
+ protected TileEntityConveyor(BlockEntityType> type, BlockPos pos, BlockState state, int inventorySize){
+ super(type, pos, state);
inventory = new ItemStack[inventorySize];
}
- @Override
public void tick() {
- World w = getLevel();
+ Level w = getLevel();
if(w.isClientSide) return;
if(transferCooldown > 0) transferCooldown--;
if(transferCooldown == 0){
@@ -90,10 +88,10 @@ public void tick() {
Direction myDir = dir;
Direction theirDir = dir.getOpposite();
BlockPos targetPos = getBlockPos().relative(myDir);
- TileEntity target = w.getBlockEntity(targetPos);
+ BlockEntity target = w.getBlockEntity(targetPos);
if(target != null) {
- if( target instanceof IInventory){
- ISidedInventory them = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(),targetPos.getX(), targetPos.getY(), targetPos.getZ()));
+ if( target instanceof Container){
+ WorldlyContainer them = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), targetPos));
if(transferItem(this,myDir,them,theirDir)){
transferCooldown = transferInvterval;
@@ -108,7 +106,7 @@ public void tick() {
BlockPos upstreamBlock = getBlockPos().relative(myDir);
if(w.isEmptyBlock(upstreamBlock)){
// grab items sitting on the ground behind the conveyor
- List list = w.getEntitiesOfClass(ItemEntity.class, new AxisAlignedBB(
+ List list = w.getEntitiesOfClass(ItemEntity.class, new AABB(
upstreamBlock.getX(), upstreamBlock.getY(), upstreamBlock.getZ(),
upstreamBlock.getX()+1, upstreamBlock.getY()+1, upstreamBlock.getZ()+1));
if(!list.isEmpty()){
@@ -125,7 +123,7 @@ public void tick() {
getInventory()[0].grow(1);
}
if(entityStack.isEmpty()){
- e.remove();
+ e.discard();
} else {
e.setItem(entityStack);
}
@@ -136,8 +134,8 @@ public void tick() {
} else {
target = w.getBlockEntity(upstreamBlock);
if(target != null){
- if( target instanceof IInventory){
- ISidedInventory them = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(),upstreamBlock.getX(), upstreamBlock.getY(), upstreamBlock.getZ()));
+ if( target instanceof Container){
+ WorldlyContainer them = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), upstreamBlock));
if(transferItem(them,theirDir,this,myDir)){
this.setChanged();
}
@@ -149,11 +147,11 @@ public void tick() {
}
protected static boolean isLocked(Object o){
- return zone.moddev.mc.poweradvantage.util.InventoryLocks.isLocked(o);
+ return zone.moddev.mc.basepower.util.InventoryLocks.isLocked(o);
}
- protected static boolean canInsertItemInto(ItemStack item, ISidedInventory dest, Direction destFace){
+ protected static boolean canInsertItemInto(ItemStack item, WorldlyContainer dest, Direction destFace){
if(item == null || item.isEmpty() || item.getItem() == null || isLocked(dest)){
return false;
}
@@ -173,7 +171,7 @@ protected static boolean canInsertItemInto(ItemStack item, ISidedInventory dest,
return false;
}
- protected static boolean transferItem(ISidedInventory src, Direction srcFace, ISidedInventory dest, Direction destFace){
+ protected static boolean transferItem(WorldlyContainer src, Direction srcFace, WorldlyContainer dest, Direction destFace){
if(isLocked(src) || isLocked(dest)){
return false;
}
@@ -245,14 +243,14 @@ protected ItemStack[] getInventory(){
* @param tagRoot The root of the NBT
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
Arrays.fill(inventory, null);
- final ListNBT nbttaglist = tagRoot.getList("Items", 10);
+ final ListTag nbttaglist = tagRoot.getList("Items", 10);
for (int i = 0; i < nbttaglist.size() && i < inventory.length; ++i) {
- final CompoundNBT nbttagcompound1 = nbttaglist .getCompound(i);
+ final CompoundTag nbttagcompound1 = nbttaglist .getCompound(i);
final byte n = nbttagcompound1.getByte("Slot");
if (n >= 0 && n < inventory.length) {
ItemStack stack = ItemStack.of(nbttagcompound1);
@@ -272,14 +270,14 @@ public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot
* @param tagRoot The root of the NBT
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
ItemStack[] inventory = this.getInventory();
if(inventory != null ){
- final ListNBT nbttaglist = new ListNBT();
+ final ListTag nbttaglist = new ListTag();
for (int i = 0; i < inventory.length; ++i) {
if (inventory[i] != null && !inventory[i].isEmpty()) {
- final CompoundNBT nbttagcompound1 = new CompoundNBT();
+ final CompoundTag nbttagcompound1 = new CompoundTag();
nbttagcompound1.putByte("Slot", (byte)i);
inventory[i] .save(nbttagcompound1);
nbttaglist .add(nbttagcompound1);
@@ -301,7 +299,7 @@ public CompoundNBT save(final CompoundNBT tagRoot) {
* @param newSate State after change
* @return true if this TileEntity should be invalidated (deleted and recreated), false otherwise
*/
- public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newSate) {
+ public boolean shouldRefresh(Level world, BlockPos pos, BlockState oldState, BlockState newSate) {
return oldState.getBlock() != newSate.getBlock();
}
@@ -320,7 +318,7 @@ public boolean isEmpty() {
}
@Override
- public void stopOpen(PlayerEntity p) {
+ public void stopOpen(Player p) {
// do nothing
}
@@ -380,7 +378,7 @@ public boolean canPlaceItem(final int slot, final ItemStack item) {
}
@Override
- public boolean stillValid(final PlayerEntity p_isUseableByPlayer_1_) {
+ public boolean stillValid(final Player p_isUseableByPlayer_1_) {
return this.level.getBlockEntity(this.worldPosition)
== this && p_isUseableByPlayer_1_.distanceToSqr(
(double)this.worldPosition.getX() + 0.5,
@@ -389,7 +387,7 @@ public boolean stillValid(final PlayerEntity p_isUseableByPlayer_1_) {
}
@Override
- public void startOpen(PlayerEntity arg0) {
+ public void startOpen(Player arg0) {
// do nothing
}
@@ -412,8 +410,8 @@ public void setItem(int slot, ItemStack item) {
}
@Override
- public TextComponent getDisplayName() {
- return (TextComponent) getName();
+ public BaseComponent getDisplayName() {
+ return (BaseComponent) getName();
}
private String customName = null;
@@ -423,14 +421,14 @@ public TextComponent getDisplayName() {
* given by the player (i.e. with an anvil)
*/
@Override
- public ITextComponent getName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName)
- : new TranslationTextComponent(this.getDescriptionId());
+ public Component getName() {
+ return this.hasCustomName() ? new TextComponent(this.customName)
+ : new TranslatableComponent(this.getDescriptionId());
}
@Override
- public ITextComponent getCustomName() {
- return this.hasCustomName() ? new StringTextComponent(this.customName) : null;
+ public Component getCustomName() {
+ return this.hasCustomName() ? new TextComponent(this.customName) : null;
}
/**
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyorFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyorFilter.java
similarity index 63%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyorFilter.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyorFilter.java
index ee5a4d78..c9f7a13f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityConveyorFilter.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyorFilter.java
@@ -1,35 +1,31 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
-import zone.moddev.mc.poweradvantage.util.InventoryWrapper;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.item.ItemEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.HopperTileEntity;
-import net.minecraft.tileentity.TileEntityType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.util.InventoryWrapper;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.item.ItemEntity;
+import net.minecraft.world.Container;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.HopperBlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.init.Entities;
public abstract class TileEntityConveyorFilter extends TileEntityConveyor {
- public TileEntityConveyorFilter() {
- this(Entities.FILTER_BLOCK, 1);
- }
-
- protected TileEntityConveyorFilter(TileEntityType> type, int slots) {
- super(type, slots);
+ protected TileEntityConveyorFilter(BlockEntityType> type, BlockPos pos, BlockState state, int slots) {
+ super(type, pos, state, slots);
}
public abstract boolean matchesFilter(ItemStack item);
@Override
public void tick() {
- World w = getLevel();
+ Level w = getLevel();
if (w.isClientSide) return;
if (transferCooldown > 0) transferCooldown--;
if (transferCooldown == 0) {
@@ -40,10 +36,10 @@ public void tick() {
Direction myDir = dir.getOpposite();
Direction theirDir = dir;
BlockPos targetPos = getBlockPos().relative(myDir);
- TileEntity target = w.getBlockEntity(targetPos);
+ BlockEntity target = w.getBlockEntity(targetPos);
if (target != null) {
- if (target instanceof IInventory) {
- ISidedInventory them = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(), targetPos.getX(), targetPos.getY(), targetPos.getZ()));
+ if (target instanceof Container) {
+ WorldlyContainer them = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), targetPos));
if (transferItem(them, theirDir, this, myDir)) {
this.setChanged();
}
@@ -53,15 +49,15 @@ public void tick() {
Direction myDir = dir;
Direction theirDir = dir.getOpposite();
BlockPos targetPos = getBlockPos().relative(myDir);
- TileEntity target = w.getBlockEntity(targetPos);
- TileEntity dropTarget = w.getBlockEntity(getBlockPos().relative(Direction.DOWN));
+ BlockEntity target = w.getBlockEntity(targetPos);
+ BlockEntity dropTarget = w.getBlockEntity(getBlockPos().relative(Direction.DOWN));
if (matchesFilter(this.getInventory()[0])) {
if (isValidItemFor(getInventory()[0], dropTarget, Direction.UP)) {
dropItem(dropTarget);
return;
}
- } else if (target instanceof IInventory) {
- ISidedInventory them = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(), targetPos.getX(), targetPos.getY(), targetPos.getZ()));
+ } else if (target instanceof Container) {
+ WorldlyContainer them = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), targetPos));
if (transferItem(this, myDir, them, theirDir)) {
this.setChanged();
}
@@ -72,11 +68,11 @@ public void tick() {
}
}
- protected boolean isValidItemFor(ItemStack item, TileEntity target, Direction side) {
+ protected boolean isValidItemFor(ItemStack item, BlockEntity target, Direction side) {
if (item == null) return false;
- if (target instanceof IInventory) {
+ if (target instanceof Container) {
BlockPos targetPos = target.getBlockPos();
- ISidedInventory dt = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(), targetPos.getX(), targetPos.getY(), targetPos.getZ()));
+ WorldlyContainer dt = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), targetPos));
int[] slots = dt.getSlotsForFace(side);
for (int i = 0; i < slots.length; i++) {
int slot = slots[i];
@@ -90,8 +86,8 @@ protected boolean isValidItemFor(ItemStack item, TileEntity target, Direction si
}
}
- private void dropItem(TileEntity target) {
- World w = getLevel();
+ private void dropItem(BlockEntity target) {
+ Level w = getLevel();
BlockState bs = w.getBlockState(getBlockPos().below());
if (target == null && !(bs.getMaterial().blocksMotion())) {
// drop item in the air
@@ -101,12 +97,12 @@ private void dropItem(TileEntity target) {
getInventory()[0] = null;
transferCooldown = transferInvterval;
this.setChanged();
- } else if (target instanceof IInventory) {
+ } else if (target instanceof Container) {
// add item to inventory
Direction myDir = Direction.DOWN;
Direction theirDir = Direction.UP;
BlockPos targetPos = target.getBlockPos();
- ISidedInventory targetInv = InventoryWrapper.wrap(HopperTileEntity.getContainerAt(getLevel(), targetPos.getX(), targetPos.getY(), targetPos.getZ()));
+ WorldlyContainer targetInv = InventoryWrapper.wrap(HopperBlockEntity.getContainerAt(getLevel(), targetPos));
if (transferItem(this, myDir, targetInv, theirDir)) {
transferCooldown = transferInvterval;
this.setChanged();
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFoodFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFoodFilter.java
new file mode 100644
index 00000000..902595e8
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFoodFilter.java
@@ -0,0 +1,15 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import net.minecraft.world.item.ItemStack;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntityFoodFilter extends TileEntityConveyorFilter {
+ public TileEntityFoodFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_FOOD, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null) return false;
+ return !item.isEmpty() && item.getItem().isEdible();
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFuelFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFuelFilter.java
new file mode 100644
index 00000000..76d9d8c4
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityFuelFilter.java
@@ -0,0 +1,17 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntityFuelFilter extends TileEntityConveyorFilter {
+ public TileEntityFuelFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_FUEL, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null) return false;
+ return AbstractFurnaceBlockEntity.isFuel(item);
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityInventoryFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityInventoryFilter.java
similarity index 55%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityInventoryFilter.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityInventoryFilter.java
index 395cc606..04e4fefa 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityInventoryFilter.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityInventoryFilter.java
@@ -1,15 +1,15 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
-import net.minecraft.item.ItemStack;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import net.minecraft.world.item.ItemStack;
+import zone.moddev.mc.basepower.init.Entities;
public class TileEntityInventoryFilter extends TileEntityConveyorFilter {
public static final int NUM_FILTER_SLOTS = 9;
- public TileEntityInventoryFilter() {
- super(Entities.FILTER_INVENTORY, NUM_FILTER_SLOTS + 1);
+ public TileEntityInventoryFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.FILTER_INVENTORY, pos, state, NUM_FILTER_SLOTS + 1);
}
@Override
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOreFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOreFilter.java
similarity index 58%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOreFilter.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOreFilter.java
index 4a2bd89c..9260e67c 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOreFilter.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOreFilter.java
@@ -1,11 +1,11 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
-import net.minecraft.item.ItemStack;
+import net.minecraft.world.item.ItemStack;
import net.minecraftforge.common.Tags;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
public class TileEntityOreFilter extends TileEntityConveyorFilter {
- public TileEntityOreFilter() { super(Entities.FILTER_ORE, 1); }
+ public TileEntityOreFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_ORE, pos, state, 1); }
@Override
public boolean matchesFilter(ItemStack item) {
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOverflowFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOverflowFilter.java
new file mode 100644
index 00000000..96f2060d
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityOverflowFilter.java
@@ -0,0 +1,40 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import zone.moddev.mc.basepower.util.InventoryWrapper;
+import net.minecraft.world.Container;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntityOverflowFilter extends TileEntityConveyorFilter {
+ public TileEntityOverflowFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_OVERFLOW, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null || item.getItem() == null) return false;
+ boolean canDrop = canInsert(item, Direction.DOWN);
+ boolean canPass = canInsert(item, this.getFacing());
+ if (canPass) {
+ return canDrop;
+ } else {
+ return true;
+ }
+ }
+
+ private boolean canInsert(ItemStack item, Direction f) {
+ BlockEntity target = getLevel().getBlockEntity(getBlockPos().relative(f));
+ if (target instanceof Container) {
+ return canInsertItemInto(item, InventoryWrapper.wrap((Container) target), f.getOpposite());
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ protected boolean isValidItemFor(ItemStack item, BlockEntity target, Direction side) {
+ // do all of the logic in the matchesFilter method
+ return true;
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityPlantFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityPlantFilter.java
new file mode 100644
index 00000000..1e573305
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntityPlantFilter.java
@@ -0,0 +1,26 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.BonemealableBlock;
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.common.IPlantable;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntityPlantFilter extends TileEntityConveyorFilter {
+ public TileEntityPlantFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_PLANT, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null) return false;
+ if (item.getItem() instanceof IPlantable) return true;
+ if (item.getItem() instanceof BlockItem) {
+ Block b = ((BlockItem) item.getItem()).getBlock();
+ if (b instanceof IPlantable) return true;
+ if (b instanceof BonemealableBlock) return true;
+
+ }
+ return false;
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntitySmeltableFilter.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntitySmeltableFilter.java
new file mode 100644
index 00000000..f542ceda
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/TileEntitySmeltableFilter.java
@@ -0,0 +1,20 @@
+package zone.moddev.mc.basepower.machines.conveyors;
+
+import net.minecraft.world.SimpleContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.item.crafting.RecipeType;
+import zone.moddev.mc.basepower.init.Entities;
+
+public class TileEntitySmeltableFilter extends TileEntityConveyorFilter {
+ public TileEntitySmeltableFilter(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.FILTER_SMELT, pos, state, 1); }
+
+ @Override
+ public boolean matchesFilter(ItemStack item) {
+ if (item == null || item.isEmpty() || level == null) return false;
+ SimpleContainer probe = new SimpleContainer(1);
+ probe.setItem(0, item.copy());
+ return level.getRecipeManager().getRecipeFor(RecipeType.SMELTING, probe, level).isPresent();
+ }
+
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/package-info.java b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/package-info.java
similarity index 75%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/machines/conveyors/package-info.java
index 23e6fb8a..f1881ac9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/conveyors/package-info.java
@@ -3,10 +3,10 @@
This package contains content that is added by PowerAdvantage implementing the PowerAdvantage API.
If you are writing an add-on mod, use the code in this package for reference, but you should not
depend on it's implementation details as future updates might change them. For a better way to get
-PowerAdvantage content, look in the zone.moddev.mc.poweradvantage.init package.
+PowerAdvantage content, look in the zone.moddev.mc.basepower.init package.
Because these classes are not part of the API, they are not well documented. They were only meant
for the eyes of the mod author(s).
*/
-package zone.moddev.mc.poweradvantage.machines.conveyors;
\ No newline at end of file
+package zone.moddev.mc.basepower.machines.conveyors;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyBlock.java
similarity index 66%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyBlock.java
index b2beb359..72c8e587 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyBlock.java
@@ -1,13 +1,13 @@
-package zone.moddev.mc.poweradvantage.machines.creative;
+package zone.moddev.mc.basepower.machines.creative;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PoweredEntity;
import cyano.poweradvantage.api.simple.BlockSimplePowerMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.world.IBlockReader;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
public class InfiniteEnergyBlock extends BlockSimplePowerMachine {
@@ -16,8 +16,8 @@ public InfiniteEnergyBlock(ConduitType energyType) {
}
@Override
- public PoweredEntity newBlockEntity(IBlockReader world) {
- return new InfiniteEnergyTileEntity(this.getTypes()[0]);
+ public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new InfiniteEnergyTileEntity(pos, state, this.getTypes()[0]);
}
@Override
@@ -26,7 +26,7 @@ public boolean hasAnalogOutputSignal(BlockState bs) {
}
@Override
- public int getAnalogOutputSignal(BlockState bs, World world, BlockPos coord) {
+ public int getAnalogOutputSignal(BlockState bs, Level world, BlockPos coord) {
return 0;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyTileEntity.java
similarity index 70%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyTileEntity.java
index 3136a75e..0f24b004 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/creative/InfiniteEnergyTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/creative/InfiniteEnergyTileEntity.java
@@ -1,10 +1,10 @@
-package zone.moddev.mc.poweradvantage.machines.creative;
+package zone.moddev.mc.basepower.machines.creative;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.simple.TileEntitySimplePowerMachine;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import zone.moddev.mc.basepower.init.Entities;
public class InfiniteEnergyTileEntity extends TileEntitySimplePowerMachine {
@@ -12,13 +12,13 @@ public class InfiniteEnergyTileEntity extends TileEntitySimplePowerMachine {
private final int[] dataArray = new int[0];
private final ConduitType[] type = new ConduitType[1];
- public InfiniteEnergyTileEntity(ConduitType energyType) {
- super(Entities.INFINITE_ENERGY, energyType, 1000f, "tile.poweradvantage.infinite_energy_source.name");
+ public InfiniteEnergyTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, ConduitType energyType) {
+ super(Entities.INFINITE_ENERGY, pos, state, energyType, 1000f, "tile.basepower.infinite_energy_source.name");
this.type[0] = energyType;
}
- public InfiniteEnergyTileEntity() {
- super(Entities.INFINITE_ENERGY, new ConduitType("power"), 1000f, "tile.poweradvantage.infinite_energy_source.name");
+ public InfiniteEnergyTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.INFINITE_ENERGY, pos, state, new ConduitType("power"), 1000f, "tile.basepower.infinite_energy_source.name");
this.type[0] = new ConduitType("power");
}
@@ -89,15 +89,15 @@ public void powerUpdate() {
}
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
tagRoot.putString("InfType", this.type[0].toString());
return tagRoot;
}
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
if (tagRoot.contains("InfType", 8)) {
this.type[0] = new ConduitType(tagRoot.getString("InfType"));
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeBlock.java
similarity index 64%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeBlock.java
index 85b1b4da..896d75f0 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeBlock.java
@@ -1,17 +1,17 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PoweredEntity;
import cyano.poweradvantage.api.simple.BlockSimpleFluidMachine;
import cyano.poweradvantage.api.simple.TileEntitySimplePowerMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.InventoryHelper;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.Container;
+import net.minecraft.world.Containers;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
public class FluidDischargeBlock extends BlockSimpleFluidMachine {
@@ -20,8 +20,8 @@ public FluidDischargeBlock() {
}
@Override
- public PoweredEntity newBlockEntity(IBlockReader w) {
- return new FluidDischargeTileEntity();
+ public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new FluidDischargeTileEntity(pos, state);
}
/**
@@ -29,11 +29,11 @@ public PoweredEntity newBlockEntity(IBlockReader w) {
* breaks.
*/
@Override
- public void onRemove(BlockState state, World world, BlockPos coord, BlockState newState, boolean isMoving) {
+ public void onRemove(BlockState state, Level world, BlockPos coord, BlockState newState, boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
- final TileEntity tileEntity = world.getBlockEntity(coord);
+ final BlockEntity tileEntity = world.getBlockEntity(coord);
if (tileEntity instanceof TileEntitySimplePowerMachine) {
- InventoryHelper.dropContents(world, coord, (IInventory) tileEntity);
+ Containers.dropContents(world, coord, (Container) tileEntity);
world .updateNeighbourForOutputSignal(coord, this);
}
}
@@ -46,8 +46,8 @@ public boolean hasAnalogOutputSignal(BlockState state) {
}
@Override
- public int getAnalogOutputSignal(BlockState state, World world, BlockPos coord) {
- TileEntity te = world.getBlockEntity(coord);
+ public int getAnalogOutputSignal(BlockState state, Level world, BlockPos coord) {
+ BlockEntity te = world.getBlockEntity(coord);
if (te != null && te instanceof FluidDischargeTileEntity) {
return ((FluidDischargeTileEntity) te).getRedstoneOutput();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeTileEntity.java
similarity index 69%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeTileEntity.java
index 7c2d4b7f..c79f6fa4 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDischargeTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDischargeTileEntity.java
@@ -1,28 +1,28 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
import cyano.poweradvantage.api.simple.TileEntitySimpleFluidMachine;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.fluid.FluidState;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.network.play.server.SUpdateTileEntityPacket;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.init.Entities;
-import zone.moddev.mc.poweradvantage.util.FluidHandlerHelper;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.network.Connection;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.init.Entities;
+import zone.moddev.mc.basepower.util.FluidHandlerHelper;
/** Places stored fluid into the world or into a tank below. */
public class FluidDischargeTileEntity extends TileEntitySimpleFluidMachine {
private int oldLevel = -1;
- public FluidDischargeTileEntity() {
- super(Entities.FLUID_DISCHARGE, FluidTank.BUCKET_VOLUME, "tile.poweradvantage.fluid_discharge.name");
+ public FluidDischargeTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.FLUID_DISCHARGE, pos, state, FluidTank.BUCKET_VOLUME, "tile.basepower.fluid_discharge.name");
}
@Override
@@ -47,7 +47,7 @@ public void powerUpdate() {
super.powerUpdate();
}
- private static BlockPos findPlacement(World world, BlockPos initial, Fluid fluid, int range) {
+ private static BlockPos findPlacement(Level world, BlockPos initial, Fluid fluid, int range) {
BlockPos position = initial;
Direction[] directions = { Direction.DOWN, Direction.NORTH, Direction.WEST, Direction.SOUTH, Direction.EAST };
while (range-- > 0) {
@@ -81,26 +81,26 @@ private static BlockPos findPlacement(World world, BlockPos initial, Fluid fluid
@Override public boolean isFluidSource() { return false; }
@Override public boolean isFluidSink() { return true; }
- @Override public CompoundNBT getUpdateTag() {
- CompoundNBT tag = new CompoundNBT();
+ @Override public CompoundTag getUpdateTag() {
+ CompoundTag tag = new CompoundTag();
getTank().writeToNBT(tag);
return tag;
}
- @Override public void handleUpdateTag(net.minecraft.block.BlockState state, CompoundNBT tag) { getTank().readFromNBT(tag); }
- @Override public SUpdateTileEntityPacket getUpdatePacket() {
- return new SUpdateTileEntityPacket(getBlockPos(), 0, getUpdateTag());
+ @Override public void handleUpdateTag(CompoundTag tag) { getTank().readFromNBT(tag); }
+ @Override public ClientboundBlockEntityDataPacket getUpdatePacket() {
+ return new ClientboundBlockEntityDataPacket(getBlockPos(), 0, getUpdateTag());
}
- @Override public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket packet) {
- handleUpdateTag(getBlockState(), packet.getTag());
+ @Override public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket packet) {
+ handleUpdateTag(packet.getTag());
}
- public static BlockPos scanFluidSpaceForNonsourceBlock(World world, BlockPos initial, Fluid fluid, int range) {
+ public static BlockPos scanFluidSpaceForNonsourceBlock(Level world, BlockPos initial, Fluid fluid, int range) {
return findPlacement(world, initial, fluid, range);
}
- public static boolean isFluidBlock(net.minecraft.block.Block block, Fluid fluid) {
+ public static boolean isFluidBlock(net.minecraft.world.level.block.Block block, Fluid fluid) {
return FluidDrainTileEntity.isFluidBlock(block, fluid);
}
- public static boolean isFluidSourceBlock(net.minecraft.block.Block block, Fluid fluid, World world, BlockPos pos) {
+ public static boolean isFluidSourceBlock(net.minecraft.world.level.block.Block block, Fluid fluid, Level world, BlockPos pos) {
return FluidDrainTileEntity.isFluidSourceBlock(block, fluid, world, pos);
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainBlock.java
similarity index 64%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainBlock.java
index ff0467a7..5126a826 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainBlock.java
@@ -1,14 +1,14 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PoweredEntity;
import cyano.poweradvantage.api.simple.BlockSimpleFluidMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
public class FluidDrainBlock extends BlockSimpleFluidMachine {
@@ -18,8 +18,8 @@ public FluidDrainBlock() {
}
@Override
- public PoweredEntity newBlockEntity(IBlockReader w) {
- return new FluidDrainTileEntity();
+ public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new FluidDrainTileEntity(pos, state);
}
@Override
@@ -28,8 +28,8 @@ public boolean hasAnalogOutputSignal(BlockState state) {
}
@Override
- public int getAnalogOutputSignal(BlockState state, World world, BlockPos coord) {
- TileEntity te = world.getBlockEntity(coord);
+ public int getAnalogOutputSignal(BlockState state, Level world, BlockPos coord) {
+ BlockEntity te = world.getBlockEntity(coord);
if (te != null && te instanceof FluidDrainTileEntity) {
return ((FluidDrainTileEntity) te).getRedstoneOutput();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainTileEntity.java
similarity index 72%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainTileEntity.java
index ccda8d6d..9b0d546b 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidDrainTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidDrainTileEntity.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.fluid.FluidStack;
@@ -6,23 +6,23 @@
import cyano.poweradvantage.api.fluid.FluidTankInfo;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
import cyano.poweradvantage.api.simple.TileEntitySimpleFluidMachine;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.fluid.FluidState;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.IBucketPickupHandler;
-import net.minecraft.world.IWorld;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.init.Entities;
-import zone.moddev.mc.poweradvantage.util.FluidHandlerHelper;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.BucketPickup;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.init.Entities;
+import zone.moddev.mc.basepower.util.FluidHandlerHelper;
/** Pulls source blocks or adjacent Advantage tanks into the pipe network. */
public class FluidDrainTileEntity extends TileEntitySimpleFluidMachine {
- public FluidDrainTileEntity() {
- super(Entities.FLUID_DRAIN, FluidTank.BUCKET_VOLUME, "tile.poweradvantage.fluid_drain.name");
+ public FluidDrainTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.FLUID_DRAIN, pos, state, FluidTank.BUCKET_VOLUME, "tile.basepower.fluid_drain.name");
}
@Override
@@ -54,17 +54,18 @@ public void powerUpdate() {
BlockPos source = scanFluidSpaceForSourceBlock(getLevel(), getBlockPos().above(), 32);
if (source != null) {
Fluid fluid = pickupSource(getLevel(), source, getLevel().getBlockState(source));
- if (fluid != net.minecraft.fluid.Fluids.EMPTY)
+ if (fluid != net.minecraft.world.level.material.Fluids.EMPTY)
getTank().fill(new FluidStack(fluid, FluidTank.BUCKET_VOLUME), true);
}
}
super.powerUpdate();
}
- static Fluid pickupSource(IWorld world, BlockPos position, BlockState state) {
- if (!(state.getBlock() instanceof IBucketPickupHandler)) return net.minecraft.fluid.Fluids.EMPTY;
- Fluid picked = ((IBucketPickupHandler)state.getBlock()).takeLiquid(world, position, state);
- return picked == null ? net.minecraft.fluid.Fluids.EMPTY : picked;
+ static Fluid pickupSource(LevelAccessor world, BlockPos position, BlockState state) {
+ if (!(state.getBlock() instanceof BucketPickup)) return net.minecraft.world.level.material.Fluids.EMPTY;
+ Fluid fluid = state.getFluidState().getType();
+ ItemStack bucket = ((BucketPickup)state.getBlock()).pickupBlock(world, position, state);
+ return bucket.isEmpty() ? net.minecraft.world.level.material.Fluids.EMPTY : fluid;
}
private void tryPushFluid(BlockPos position, Direction face) {
@@ -88,13 +89,13 @@ private void tryPushFluid(BlockPos position, Direction face) {
@Override public boolean isFluidSource() { return true; }
@Override public boolean isFluidSink() { return false; }
- public static BlockPos scanFluidSpaceForSourceBlock(World world, BlockPos initial, int range) {
+ public static BlockPos scanFluidSpaceForSourceBlock(Level world, BlockPos initial, int range) {
BlockPos position = initial;
Direction[] directions = { Direction.UP, Direction.NORTH, Direction.WEST, Direction.SOUTH, Direction.EAST };
while (range-- > 0) {
FluidState state = world.getFluidState(position);
if (!state.isEmpty() && state.isSource()
- && world.getBlockState(position).getBlock() instanceof IBucketPickupHandler) return position;
+ && world.getBlockState(position).getBlock() instanceof BucketPickup) return position;
java.util.List candidates = new java.util.ArrayList<>();
for (Direction direction : directions) {
BlockPos candidate = position.relative(direction);
@@ -108,11 +109,11 @@ public static BlockPos scanFluidSpaceForSourceBlock(World world, BlockPos initia
return null;
}
- public static boolean isFluidBlock(net.minecraft.block.Block block, Fluid fluid) {
+ public static boolean isFluidBlock(net.minecraft.world.level.block.Block block, Fluid fluid) {
return block.defaultBlockState().getFluidState().getType().isSame(fluid);
}
- public static boolean isFluidSourceBlock(net.minecraft.block.Block block, Fluid fluid, World world, BlockPos pos) {
+ public static boolean isFluidSourceBlock(net.minecraft.world.level.block.Block block, Fluid fluid, Level world, BlockPos pos) {
FluidState state = world.getFluidState(pos);
return !state.isEmpty() && state.isSource() && state.getType().isSame(fluid);
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidPipeBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidPipeBlock.java
similarity index 53%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidPipeBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidPipeBlock.java
index 38568e2c..5238ea81 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/FluidPipeBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/FluidPipeBlock.java
@@ -1,17 +1,17 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.simple.BlockSimpleFluidConduit;
-import zone.moddev.mc.poweradvantage.init.Blocks;
-import zone.moddev.mc.poweradvantage.util.FluidHandlerHelper;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.init.Blocks;
+import zone.moddev.mc.basepower.util.FluidHandlerHelper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
@SuppressWarnings("deprecation")
public class FluidPipeBlock extends BlockSimpleFluidConduit {
@@ -25,19 +25,19 @@ public FluidPipeBlock() {
* Called when a neighboring block changes.
*/
@Override
- public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
+ public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
pipeCheck(worldIn, pos);
}
/**
* Called by ItemBlocks after a block is set in the world, to allow post-place logic
*/
- public void setPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
+ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
super.setPlacedBy(worldIn, pos, state, placer, stack);
pipeCheck(worldIn, pos);
}
- private void pipeCheck(World w, BlockPos pos) {
+ private void pipeCheck(Level w, BlockPos pos) {
if (!w.isClientSide) {
if (numberOfAdjacentFluidHandlers(w, pos) > 0) {
w.setBlock(pos, Blocks.fluid_pipe_terminal.defaultBlockState(), 3);
@@ -46,10 +46,10 @@ private void pipeCheck(World w, BlockPos pos) {
}
- protected static int numberOfAdjacentFluidHandlers(World w, BlockPos pos) {
+ protected static int numberOfAdjacentFluidHandlers(Level w, BlockPos pos) {
int sum = 0;
for (Direction f : Direction.values()) {
- TileEntity e = w.getBlockEntity(pos.relative(f));
+ BlockEntity e = w.getBlockEntity(pos.relative(f));
if (FluidHandlerHelper.hasHandler(e, f.getOpposite()) && !(e instanceof cyano.poweradvantage.api.PoweredEntity)) {
sum++;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankBlock.java
similarity index 62%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankBlock.java
index 238730ac..0f4a5a69 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankBlock.java
@@ -1,14 +1,14 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PoweredEntity;
import cyano.poweradvantage.api.simple.BlockSimpleFluidMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.world.IBlockReader;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
public class MetalTankBlock extends BlockSimpleFluidMachine {
@@ -17,8 +17,8 @@ public MetalTankBlock() {
}
@Override
- public PoweredEntity newBlockEntity(IBlockReader world) {
- return new MetalTankTileEntity();
+ public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new MetalTankTileEntity(pos, state);
}
@Override
@@ -28,8 +28,8 @@ public boolean hasAnalogOutputSignal(BlockState bs) {
@Override
- public int getAnalogOutputSignal(BlockState bs, World world, BlockPos coord) {
- TileEntity te = world.getBlockEntity(coord);
+ public int getAnalogOutputSignal(BlockState bs, Level world, BlockPos coord) {
+ BlockEntity te = world.getBlockEntity(coord);
if (te != null && te instanceof MetalTankTileEntity) {
return ((MetalTankTileEntity) te).getRedstoneOutput();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankTileEntity.java
similarity index 90%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankTileEntity.java
index bd502279..5f18f196 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/MetalTankTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/MetalTankTileEntity.java
@@ -1,21 +1,21 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.fluid.FluidRequest;
import cyano.poweradvantage.api.simple.TileEntitySimpleFluidMachine;
-import net.minecraft.item.ItemStack;
-import net.minecraft.fluid.Fluid;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
-import zone.moddev.mc.poweradvantage.init.Entities;
-import zone.moddev.mc.poweradvantage.util.FluidContainerHelper;
+import zone.moddev.mc.basepower.init.Entities;
+import zone.moddev.mc.basepower.util.FluidContainerHelper;
@SuppressWarnings("deprecation")
public class MetalTankTileEntity extends TileEntitySimpleFluidMachine {
- public MetalTankTileEntity() {
- super(Entities.METAL_TANK, FluidTank.BUCKET_VOLUME * 10, "tile.poweradvantage.fluid_metal_tank.name");
+ public MetalTankTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.METAL_TANK, pos, state, FluidTank.BUCKET_VOLUME * 10, "tile.basepower.fluid_metal_tank.name");
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillBlock.java
similarity index 68%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillBlock.java
index 83c23034..c8e0b855 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillBlock.java
@@ -1,18 +1,18 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.PoweredEntity;
import cyano.poweradvantage.api.simple.BlockSimpleFluidMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.StateContainer;
-import net.minecraft.block.BlockState;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.IWorldReader;
-import net.minecraft.world.World;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.LevelReader;
+import net.minecraft.world.level.Level;
public class StillBlock extends BlockSimpleFluidMachine {
@@ -23,7 +23,8 @@ public class StillBlock extends BlockSimpleFluidMachine {
public static final BooleanProperty ACTIVE = BooleanProperty.create("active");
public StillBlock() {
- super(Material.PISTON, 3f);
+ super(net.minecraft.world.level.block.Block.Properties.of(Material.PISTON)
+ .strength(3f).lightLevel(state -> state.getValue(ACTIVE) ? 12 : 0));
this.registerDefaultState(defaultBlockState().setValue(ACTIVE, false));
}
@@ -31,7 +32,7 @@ public StillBlock() {
* Creates a blockstate
*/
@Override
- protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
super.createBlockStateDefinition(builder);
builder.add(ACTIVE);
}
@@ -95,13 +96,8 @@ private Direction metaToFacing(int i) {
}
@Override
- public int getLightValue(BlockState bs, net.minecraft.world.IBlockReader world, BlockPos coord) {
- return bs.getValue(ACTIVE) ? 12 : 0;
- }
-
- @Override
- public PoweredEntity newBlockEntity(IBlockReader world) {
- return new StillTileEntity();
+ public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new StillTileEntity(pos, state);
}
@Override
@@ -110,8 +106,8 @@ public boolean hasAnalogOutputSignal(BlockState bs) {
}
@Override
- public int getAnalogOutputSignal(BlockState bs, World world, BlockPos coord) {
- TileEntity te = world.getBlockEntity(coord);
+ public int getAnalogOutputSignal(BlockState bs, Level world, BlockPos coord) {
+ BlockEntity te = world.getBlockEntity(coord);
if (te instanceof StillTileEntity) {
return ((StillTileEntity) te).getRedstoneOutput();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillTileEntity.java
similarity index 89%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillTileEntity.java
index 96fccde9..11cabd96 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StillTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StillTileEntity.java
@@ -1,22 +1,22 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.fluid.FluidRequest;
import cyano.poweradvantage.api.simple.TileEntitySimpleFluidMachine;
-import zone.moddev.mc.poweradvantage.registry.FuelRegistry;
-import zone.moddev.mc.poweradvantage.registry.still.recipe.DistillationRecipe;
-import zone.moddev.mc.poweradvantage.registry.still.recipe.DistillationRecipeRegistry;
-import zone.moddev.mc.poweradvantage.util.FluidIdHelper;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.fluid.Fluid;
+import zone.moddev.mc.basepower.registry.FuelRegistry;
+import zone.moddev.mc.basepower.registry.still.recipe.DistillationRecipe;
+import zone.moddev.mc.basepower.registry.still.recipe.DistillationRecipeRegistry;
+import zone.moddev.mc.basepower.util.FluidIdHelper;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
import cyano.poweradvantage.api.fluid.FluidTankInfo;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
@SuppressWarnings("deprecation")
public class StillTileEntity extends TileEntitySimpleFluidMachine {
@@ -40,8 +40,8 @@ public class StillTileEntity extends TileEntitySimpleFluidMachine {
private short totalBurnTime = 0;
- public StillTileEntity() {
- super(Entities.STILL, FluidTank.BUCKET_VOLUME, "tile.poweradvantage.still.name");
+ public StillTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.STILL, pos, state, FluidTank.BUCKET_VOLUME, "tile.basepower.still.name");
}
@Override
@@ -74,7 +74,7 @@ public void tickUpdate(boolean isServerWorld) {
}
@Override
- public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newState) {
+ public boolean shouldRefresh(Level world, BlockPos pos, BlockState oldState, BlockState newState) {
// used to allow change in blockstate without interrupting the TileEntity or the GUI
return (oldState.getBlock() != newState.getBlock());
}
@@ -247,9 +247,9 @@ public FluidTankInfo[] getTankInfo(Direction face) {
* @param tagRoot An NBT tag
*/
@Override
- public CompoundNBT save(final CompoundNBT tagRoot) {
+ public CompoundTag save(final CompoundTag tagRoot) {
super .save(tagRoot);
- CompoundNBT tankTag2 = new CompoundNBT();
+ CompoundTag tankTag2 = new CompoundTag();
inputTank.writeToNBT(tankTag2);
tagRoot.put("InputTank", tankTag2);
tagRoot.putShort("burnTime", this.burnTime);
@@ -263,10 +263,10 @@ public CompoundNBT save(final CompoundNBT tagRoot) {
* @param tagRoot An NBT tag
*/
@Override
- public void load(net.minecraft.block.BlockState state, final CompoundNBT tagRoot) {
- super.load(state, tagRoot);
+ public void load(final CompoundTag tagRoot) {
+ super.load(tagRoot);
if (tagRoot.contains("InputTank", 10)) {
- CompoundNBT tankTag2 = tagRoot .getCompound("InputTank");
+ CompoundTag tankTag2 = tagRoot .getCompound("InputTank");
inputTank.readFromNBT(tankTag2);
if (tankTag2.contains("Empty", 1)) {
// empty the tank if NBT says its empty (not default behavior of Tank.readFromNBT(...) )
@@ -334,7 +334,7 @@ public void onDataFieldUpdate() {
int fluidID2 = dataFields[DATAFIELD_FLUID_ID2];
int fluidVolume2 = dataFields[DATAFIELD_FLUID_VOLUME2];
if (fluidVolume1 <= 0) {
- inputTank.setFluid(new FluidStack(net.minecraft.fluid.Fluids.WATER, 0));
+ inputTank.setFluid(new FluidStack(net.minecraft.world.level.material.Fluids.WATER, 0));
} else {
Fluid fluid = FluidIdHelper.getFluid(fluidID1);
if (fluid != null) {
@@ -343,7 +343,7 @@ public void onDataFieldUpdate() {
}
}
if (fluidVolume2 <= 0) {
- getTank().setFluid(new FluidStack(net.minecraft.fluid.Fluids.WATER, 0));
+ getTank().setFluid(new FluidStack(net.minecraft.world.level.material.Fluids.WATER, 0));
} else {
Fluid fluid = FluidIdHelper.getFluid(fluidID2);
if (fluid != null) {
@@ -376,14 +376,14 @@ public void onDataFieldUpdate() {
*/
public void prepareDataFieldsForSync() {
if (inputTank.getFluid() == null || inputTank.getFluidAmount() <= 0) {
- dataFields[DATAFIELD_FLUID_ID1] = FluidIdHelper.getFluidId(net.minecraft.fluid.Fluids.WATER);
+ dataFields[DATAFIELD_FLUID_ID1] = FluidIdHelper.getFluidId(net.minecraft.world.level.material.Fluids.WATER);
dataFields[DATAFIELD_FLUID_VOLUME1] = 0;
} else {
dataFields[DATAFIELD_FLUID_ID1] = FluidIdHelper.getFluidId(inputTank.getFluid().getFluid());
dataFields[DATAFIELD_FLUID_VOLUME1] = inputTank.getFluidAmount();
}
if (getTank().getFluid() == null || getTank().getFluidAmount() <= 0) {
- dataFields[DATAFIELD_FLUID_ID2] = FluidIdHelper.getFluidId(net.minecraft.fluid.Fluids.WATER);
+ dataFields[DATAFIELD_FLUID_ID2] = FluidIdHelper.getFluidId(net.minecraft.world.level.material.Fluids.WATER);
dataFields[DATAFIELD_FLUID_VOLUME2] = 0;
} else {
dataFields[DATAFIELD_FLUID_ID2] = FluidIdHelper.getFluidId(getTank().getFluid().getFluid());
@@ -394,13 +394,13 @@ public void prepareDataFieldsForSync() {
}
@Override
- public CompoundNBT createDataFieldUpdateTag() {
+ public CompoundTag createDataFieldUpdateTag() {
this.prepareDataFieldsForSync();
- CompoundNBT nbtTag = new CompoundNBT();
- CompoundNBT inputTankTag = new CompoundNBT();
+ CompoundTag nbtTag = new CompoundTag();
+ CompoundTag inputTankTag = new CompoundTag();
inputTank.writeToNBT(inputTankTag);
nbtTag.put("InputTank", inputTankTag);
- CompoundNBT outputTankTag = new CompoundNBT();
+ CompoundTag outputTankTag = new CompoundTag();
getTank().writeToNBT(outputTankTag);
nbtTag.put("Tank", outputTankTag);
nbtTag.putShort("burnTime", this.burnTime);
@@ -410,10 +410,10 @@ public CompoundNBT createDataFieldUpdateTag() {
}
@Override
- public void readDataFieldUpdateTag(CompoundNBT tag) {
+ public void readDataFieldUpdateTag(CompoundTag tag) {
boolean usedFluidNbt = false;
if (tag .contains("InputTank", 10)) {
- CompoundNBT inputTankTag = tag .getCompound("InputTank");
+ CompoundTag inputTankTag = tag .getCompound("InputTank");
inputTank.readFromNBT(inputTankTag);
if (inputTankTag.contains("Empty", 1)) {
inputTank.setFluid(null);
@@ -421,7 +421,7 @@ public void readDataFieldUpdateTag(CompoundNBT tag) {
usedFluidNbt = true;
}
if (tag .contains("Tank", 10)) {
- CompoundNBT outputTankTag = tag .getCompound("Tank");
+ CompoundTag outputTankTag = tag .getCompound("Tank");
getTank().readFromNBT(outputTankTag);
if (outputTankTag.contains("Empty", 1)) {
getTank().setFluid(null);
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankBlock.java
similarity index 54%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankBlock.java
index bc8cd6f4..45637785 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankBlock.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import java.util.List;
@@ -9,45 +9,45 @@
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
import cyano.poweradvantage.api.simple.BlockSimpleFluidMachine;
-import net.minecraft.block.material.Material;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.client.util.ITooltipFlag;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.registry.Registry;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TranslationTextComponent;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
-import zone.moddev.mc.poweradvantage.init.Fluids;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Registry;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import zone.moddev.mc.basepower.init.Fluids;
/** Portable tank block. FluidID and Volume remain unchanged for old item stacks. */
public class StorageTankBlock extends BlockSimpleFluidMachine {
public StorageTankBlock() { super(Material.PISTON, 3F); }
- @Override public PoweredEntity newBlockEntity(IBlockReader world) { return new StorageTankTileEntity(); }
+ @Override public PoweredEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { return new StorageTankTileEntity(pos, state); }
@Override public boolean hasAnalogOutputSignal(BlockState state) { return true; }
- @Override public int getAnalogOutputSignal(BlockState state, World world, BlockPos pos) {
- TileEntity tile = world.getBlockEntity(pos);
+ @Override public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {
+ BlockEntity tile = world.getBlockEntity(pos);
return tile instanceof StorageTankTileEntity ? ((StorageTankTileEntity) tile).getRedstoneOutput() : 0;
}
@Override public boolean isPowerSink(ConduitType type) { return true; }
@Override public boolean isPowerSource(ConduitType type) { return true; }
@Override
- public void setPlacedBy(World world, BlockPos pos, BlockState state,
+ public void setPlacedBy(Level world, BlockPos pos, BlockState state,
@Nullable LivingEntity placer, ItemStack stack) {
super.setPlacedBy(world, pos, state, placer, stack);
- CompoundNBT tag = stack.getTag();
- TileEntity tile = world.getBlockEntity(pos);
+ CompoundTag tag = stack.getTag();
+ BlockEntity tile = world.getBlockEntity(pos);
if (tag != null && tag.contains("FluidID", 8) && tag.contains("Volume", 99)
&& tile instanceof StorageTankTileEntity) {
- net.minecraft.fluid.Fluid fluid = Fluids.byName(tag.getString("FluidID"));
+ net.minecraft.world.level.material.Fluid fluid = Fluids.byName(tag.getString("FluidID"));
if (fluid != null) ((StorageTankTileEntity) tile).getTank()
.setFluid(new FluidStack(fluid, tag.getInt("Volume")));
}
@@ -56,8 +56,8 @@ public void setPlacedBy(World world, BlockPos pos, BlockState state,
public ItemStack createItem(StorageTankTileEntity tile) {
ItemStack stack = new ItemStack(this);
if (tile.getTank().getFluidAmount() > 0) {
- CompoundNBT tag = new CompoundNBT();
- net.minecraft.util.ResourceLocation id = net.minecraftforge.registries.ForgeRegistries.FLUIDS
+ CompoundTag tag = new CompoundTag();
+ net.minecraft.resources.ResourceLocation id = net.minecraftforge.registries.ForgeRegistries.FLUIDS
.getKey(tile.getTank().getFluid().getFluid());
if (id != null) tag.putString("FluidID", id.toString());
tag.putInt("Volume", tile.getTank().getFluidAmount());
@@ -67,15 +67,15 @@ public ItemStack createItem(StorageTankTileEntity tile) {
}
@Override
- public void appendHoverText(ItemStack stack, @Nullable IBlockReader world,
- List tooltip, ITooltipFlag flag) {
- CompoundNBT tag = stack.getTag();
+ public void appendHoverText(ItemStack stack, @Nullable BlockGetter world,
+ List tooltip, TooltipFlag flag) {
+ CompoundTag tag = stack.getTag();
if (tag == null || !tag.contains("FluidID", 8) || !tag.contains("Volume", 99)) {
- tooltip.add(new TranslationTextComponent("tooltip.poweradvantage.empty"));
+ tooltip.add(new TranslatableComponent("tooltip.basepower.empty"));
return;
}
float buckets = tag.getInt("Volume") / (float) FluidTank.BUCKET_VOLUME;
- tooltip.add(new StringTextComponent(buckets + " buckets of " + tag.getString("FluidID")));
+ tooltip.add(new TextComponent(buckets + " buckets of " + tag.getString("FluidID")));
}
/** Retained for callers from the 1.12 implementation. */
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankTileEntity.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankTileEntity.java
index 8b88604a..a2294831 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/StorageTankTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/StorageTankTileEntity.java
@@ -1,20 +1,20 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import cyano.poweradvantage.api.PowerRequest;
import cyano.poweradvantage.api.fluid.FluidRequest;
import cyano.poweradvantage.api.simple.TileEntitySimpleFluidMachine;
-import net.minecraft.item.ItemStack;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.fluid.Fluid;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
-import zone.moddev.mc.poweradvantage.init.Entities;
+import zone.moddev.mc.basepower.init.Entities;
@SuppressWarnings("deprecation")
public class StorageTankTileEntity extends TileEntitySimpleFluidMachine {
- public StorageTankTileEntity() {
- super(Entities.STORAGE_TANK, FluidTank.BUCKET_VOLUME * 4, "tile.poweradvantage.fluid_storage_tank.name");
+ public StorageTankTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ super(Entities.STORAGE_TANK, pos, state, FluidTank.BUCKET_VOLUME * 4, "tile.basepower.fluid_storage_tank.name");
}
/**
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java
similarity index 59%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java
index c2d8cc4c..0f8e99b9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeBlock.java
@@ -1,26 +1,26 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines.modsupport;
+package zone.moddev.mc.basepower.machines.fluidmachines.modsupport;
import cyano.poweradvantage.api.ConduitType;
-import zone.moddev.mc.poweradvantage.init.Blocks;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.FluidPipeBlock;
-import zone.moddev.mc.poweradvantage.util.FluidHandlerHelper;
-import net.minecraft.block.Block;
-import net.minecraft.block.ITileEntityProvider;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.World;
+import zone.moddev.mc.basepower.init.Blocks;
+import zone.moddev.mc.basepower.machines.fluidmachines.FluidPipeBlock;
+import zone.moddev.mc.basepower.util.FluidHandlerHelper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.EntityBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
@SuppressWarnings("deprecation")
-public class TerminalFluidPipeBlock extends FluidPipeBlock implements ITileEntityProvider {
+public class TerminalFluidPipeBlock extends FluidPipeBlock implements EntityBlock {
@Override
- public TileEntity newBlockEntity(IBlockReader worldIn) {
- return new TerminalFluidPipeTileEntity();
+ public BlockEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) {
+ return new TerminalFluidPipeTileEntity(pos, state);
}
@@ -38,19 +38,19 @@ public boolean isPowerSource(ConduitType powerType) {
* Called when a neighboring block changes.
*/
@Override
- public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
+ public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
pipeCheck(worldIn, pos);
}
/**
* Called by ItemBlocks after a block is set in the world, to allow post-place logic
*/
- public void setPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
+ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {
super.setPlacedBy(worldIn, pos, state, placer, stack);
pipeCheck(worldIn, pos);
}
- private void pipeCheck(World w, BlockPos pos) {
+ private void pipeCheck(Level w, BlockPos pos) {
if (!w.isClientSide) {
if (numberOfAdjacentFluidHandlers(w, pos) == 0) {
w.setBlock(pos, Blocks.fluid_pipe.defaultBlockState(), 3);
@@ -72,7 +72,7 @@ private void pipeCheck(World w, BlockPos pos) {
* method.
*/
@Override
- protected boolean canConnectTo(IBlockReader w, BlockPos thisBlock, BlockState bs, Direction face) {
+ protected boolean canConnectTo(BlockGetter w, BlockPos thisBlock, BlockState bs, Direction face) {
BlockPos otherBlock = thisBlock.relative(face);
return super.canConnectTo(w, thisBlock, bs, face)
|| FluidHandlerHelper.hasHandler(w.getBlockEntity(otherBlock), face.getOpposite());
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java
index 3d5b1494..ee16337b 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/modsupport/TerminalFluidPipeTileEntity.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines.modsupport;
+package zone.moddev.mc.basepower.machines.fluidmachines.modsupport;
import java.util.List;
@@ -9,25 +9,25 @@
import cyano.poweradvantage.api.fluid.FluidRequest;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import zone.moddev.mc.poweradvantage.conduitnetwork.ConduitRegistry;
-import zone.moddev.mc.poweradvantage.init.Entities;
-import zone.moddev.mc.poweradvantage.init.Fluids;
-import zone.moddev.mc.poweradvantage.util.FluidHandlerHelper;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
+import zone.moddev.mc.basepower.conduitnetwork.ConduitRegistry;
+import zone.moddev.mc.basepower.init.Entities;
+import zone.moddev.mc.basepower.init.Fluids;
+import zone.moddev.mc.basepower.util.FluidHandlerHelper;
/** Bridges adjacent Advantage fluid handlers onto the conduit request network. */
public class TerminalFluidPipeTileEntity extends PoweredEntity {
private final Direction[] faces = Direction.values();
private final IAdvantageFluidHandler[] neighbors = new IAdvantageFluidHandler[faces.length];
- public TerminalFluidPipeTileEntity() { super(Entities.PIPE_TERMINAL); }
+ public TerminalFluidPipeTileEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { super(Entities.PIPE_TERMINAL, pos, state); }
@Override public void tickUpdate(boolean server) {
if (!server) return;
for (int index = 0; index < faces.length; index++) {
- TileEntity tile = getLevel().getBlockEntity(getBlockPos().relative(faces[index]));
+ BlockEntity tile = getLevel().getBlockEntity(getBlockPos().relative(faces[index]));
neighbors[index] = FluidHandlerHelper.getHandler(tile, faces[index].getOpposite());
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/package-info.java b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/package-info.java
similarity index 74%
rename from src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/package-info.java
index 2df28e68..488d9fc9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/machines/fluidmachines/package-info.java
@@ -3,10 +3,10 @@
This package contains content that is added by PowerAdvantage implementing the PowerAdvantage API.
If you are writing an add-on mod, use the code in this package for reference, but you should not
depend on its implementation details as future updates might change them. For a better way to get
-PowerAdvantage content, look in the zone.moddev.mc.poweradvantage.init package.
+PowerAdvantage content, look in the zone.moddev.mc.basepower.init package.
Because these classes are not part of the API, they are not well documented. They were only meant
for the eyes of the mod author(s).
*/
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/math/BlockPos4D.java b/src/main/java/zone/moddev/mc/basepower/math/BlockPos4D.java
similarity index 86%
rename from src/main/java/zone/moddev/mc/poweradvantage/math/BlockPos4D.java
rename to src/main/java/zone/moddev/mc/basepower/math/BlockPos4D.java
index 8964bd8f..6cfce6b9 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/math/BlockPos4D.java
+++ b/src/main/java/zone/moddev/mc/basepower/math/BlockPos4D.java
@@ -1,14 +1,14 @@
-package zone.moddev.mc.poweradvantage.math;
-
-import net.minecraft.nbt.INBT;
-import net.minecraft.nbt.IntArrayNBT;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.Direction;
-import net.minecraft.util.RegistryKey;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
+package zone.moddev.mc.basepower.math;
+
+import net.minecraft.nbt.Tag;
+import net.minecraft.nbt.IntArrayTag;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.Direction;
+import net.minecraft.resources.ResourceKey;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
/**
* This class is used to store 4D integer coordinates
@@ -19,7 +19,7 @@ public class BlockPos4D {
/**
* 4th dimension coordinate
*/
- public final RegistryKey dimension;
+ public final ResourceKey dimension;
/**
* X,Y,Z coordinate
*/
@@ -30,7 +30,7 @@ public class BlockPos4D {
*
* @return The dimension of the coordinate (e.g. 0 for overworld, -1 for nether, 1 for the end)
*/
- public RegistryKey getDim() {
+ public ResourceKey getDim() {
return dimension;
}
@@ -71,7 +71,7 @@ public int getZ() {
* @param y Y-coordinate of D,X,Y,Z coordinate tuple
* @param z Z-coordinate of D,X,Y,Z coordinate tuple
*/
- public BlockPos4D(RegistryKey d, int x, int y, int z) {
+ public BlockPos4D(ResourceKey d, int x, int y, int z) {
this(d, new BlockPos(x, y, z));
}
@@ -81,7 +81,7 @@ public BlockPos4D(RegistryKey d, int x, int y, int z) {
* @param dimension Dimension of the block
* @param bp location of the block
*/
- public BlockPos4D(RegistryKey dimension, BlockPos bp) {
+ public BlockPos4D(ResourceKey dimension, BlockPos bp) {
this.dimension = java.util.Objects.requireNonNull(dimension, "dimension");
this.pos = bp.immutable();
hashCache = (((dimension.hashCode() * 31 + pos.getZ()) * 31 + pos.getX()) * 31 + pos.getY());
@@ -264,7 +264,7 @@ public BlockPos4D east(final int dist) {
* 1 for the end)
* @return A new BlockPos4D representing the new position
*/
- public BlockPos4D toDimension(RegistryKey newDimension) {
+ public BlockPos4D toDimension(ResourceKey newDimension) {
return new BlockPos4D(newDimension, this.pos);
}
@@ -276,32 +276,32 @@ public BlockPos4D[] getNeighbors() {
return n;
}
- public INBT toNBT() {
- CompoundNBT data = new CompoundNBT();
+ public Tag toNBT() {
+ CompoundTag data = new CompoundTag();
data.putString("Dimension", dimension.location().toString());
data.putIntArray("Pos", new int[] {pos.getX(), pos.getY(), pos.getZ()});
return data;
}
- public static BlockPos4D fromNBT(INBT tag) {
- if (tag instanceof IntArrayNBT) {
- int[] data = ((IntArrayNBT) tag).getAsIntArray();
+ public static BlockPos4D fromNBT(Tag tag) {
+ if (tag instanceof IntArrayTag) {
+ int[] data = ((IntArrayTag) tag).getAsIntArray();
if (data.length != 4) throw new IllegalArgumentException("Invalid legacy position");
return new BlockPos4D(legacyDimension(data[0]), data[1], data[2], data[3]);
}
- CompoundNBT data = (CompoundNBT) tag;
+ CompoundTag data = (CompoundTag) tag;
int[] pos = data.getIntArray("Pos");
if (pos.length != 3) throw new IllegalArgumentException("Invalid position");
- return new BlockPos4D(RegistryKey.create(Registry.DIMENSION_REGISTRY,
+ return new BlockPos4D(ResourceKey.create(Registry.DIMENSION_REGISTRY,
new ResourceLocation(data.getString("Dimension"))), pos[0], pos[1], pos[2]);
}
/** Only the three vanilla numeric IDs have an unambiguous legacy meaning. */
- public static RegistryKey legacyDimension(int dimension) {
+ public static ResourceKey legacyDimension(int dimension) {
switch (dimension) {
- case 0: return World.OVERWORLD;
- case -1: return World.NETHER;
- case 1: return World.END;
+ case 0: return Level.OVERWORLD;
+ case -1: return Level.NETHER;
+ case 1: return Level.END;
default: throw new IllegalArgumentException("No registry key for legacy dimension " + dimension);
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/math/Integer2D.java b/src/main/java/zone/moddev/mc/basepower/math/Integer2D.java
similarity index 95%
rename from src/main/java/zone/moddev/mc/poweradvantage/math/Integer2D.java
rename to src/main/java/zone/moddev/mc/basepower/math/Integer2D.java
index 987a8d9f..7722b0b1 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/math/Integer2D.java
+++ b/src/main/java/zone/moddev/mc/basepower/math/Integer2D.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.math;
+package zone.moddev.mc.basepower.math;
/**
* This class is used to store 2D integer coordinates
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/math/package-info.java b/src/main/java/zone/moddev/mc/basepower/math/package-info.java
similarity index 55%
rename from src/main/java/zone/moddev/mc/poweradvantage/math/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/math/package-info.java
index 72c1ee2a..2ec83a06 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/math/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/math/package-info.java
@@ -3,4 +3,4 @@
This package contains helper classes.
*/
-package zone.moddev.mc.poweradvantage.math;
\ No newline at end of file
+package zone.moddev.mc.basepower.math;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrations.java b/src/main/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrations.java
similarity index 67%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrations.java
rename to src/main/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrations.java
index ce56da31..6185a607 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrations.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrations.java
@@ -1,16 +1,16 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import cyano.poweradvantage.api.migration.LegacyMigrationApi;
import cyano.poweradvantage.api.simple.BlockSimplePowerMachine;
-import net.minecraft.block.Block;
-import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.block.BlockState;
-import net.minecraft.util.ResourceLocation;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.blocks.BlockPowerSwitch;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyor;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyorFilter;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.StillBlock;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.resources.ResourceLocation;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.blocks.BlockPowerSwitch;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyorFilter;
+import zone.moddev.mc.basepower.machines.fluidmachines.StillBlock;
/** Registers PowerAdvantage's 1.10 and 1.12 identities with the shared hook. */
public final class AdvantageLegacyMigrations {
@@ -20,7 +20,7 @@ private AdvantageLegacyMigrations() {}
public static synchronized void registerPowerAdvantage() {
if (registered) return;
- LegacyMigrationApi.registerNamespace(PowerAdvantage.MODID);
+ LegacyMigrationApi.registerNamespaceAlias("poweradvantage", PowerAdvantage.MODID);
for (String path : new String[] {
"fluid_drain", "fluid_discharge", "fluid_storage_tank", "fluid_metal_tank", "still",
@@ -55,21 +55,22 @@ public static synchronized void registerPowerAdvantage() {
registerTile("rf_quantum_converter_tileentity");
registerTile("tr_electricity_converter_tileentity");
- LegacyMigrationApi.registerFluidAlias("crude_oil", "poweradvantage:crude_oil");
- LegacyMigrationApi.registerFluidAlias("refined_oil", "poweradvantage:refined_oil");
+ LegacyMigrationApi.registerFluidAlias("crude_oil", "basepower:crude_oil");
+ LegacyMigrationApi.registerFluidAlias("refined_oil", "basepower:refined_oil");
+ LegacyMigrationApi.registerFluidAlias("poweradvantage:crude_oil", "basepower:crude_oil");
+ LegacyMigrationApi.registerFluidAlias("poweradvantage:refined_oil", "basepower:refined_oil");
+ LegacyMigrationApi.registerFluidAlias("poweradvantage:flowing_crude_oil", "basepower:flowing_crude_oil");
+ LegacyMigrationApi.registerFluidAlias("poweradvantage:flowing_refined_oil", "basepower:flowing_refined_oil");
LegacyMigrationApi.registerFluidAlias("mineralogy_crude_oil", "mineralogy:crude_oil");
LegacyMigrationApi.registerLegacyFluidBucket("crude_oil", id("crude_oil_bucket"));
- LegacyMigrationApi.registerLegacyFluidBucket("poweradvantage:crude_oil", id("crude_oil_bucket"));
+ LegacyMigrationApi.registerLegacyFluidBucket("basepower:crude_oil", id("crude_oil_bucket"));
LegacyMigrationApi.registerLegacyFluidBucket("refined_oil", id("refined_oil_bucket"));
- LegacyMigrationApi.registerLegacyFluidBucket("poweradvantage:refined_oil", id("refined_oil_bucket"));
+ LegacyMigrationApi.registerLegacyFluidBucket("basepower:refined_oil", id("refined_oil_bucket"));
registered = true;
}
private static void registerTile(String path) {
- String current = id(path).toString();
- LegacyMigrationApi.registerTileEntityAlias(current, current);
- LegacyMigrationApi.registerTileEntityAlias(PowerAdvantage.MODID + "." + path, current);
- LegacyMigrationApi.registerTileEntityAlias("minecraft:" + PowerAdvantage.MODID + "." + path, current);
+ LegacyMigrationApi.registerTileEntityAliases(id(path));
}
private static BlockState decodeState(Block block, int metadata) {
@@ -80,8 +81,8 @@ private static BlockState decodeState(Block block, int metadata) {
if (block instanceof BlockSimplePowerMachine) {
return ((BlockSimplePowerMachine) block).getStateFromMeta(metadata);
}
- if (block instanceof FlowingFluidBlock) {
- return block.defaultBlockState().setValue(FlowingFluidBlock.LEVEL, Integer.valueOf(metadata & 15));
+ if (block instanceof LiquidBlock) {
+ return block.defaultBlockState().setValue(LiquidBlock.LEVEL, Integer.valueOf(metadata & 15));
}
return block.defaultBlockState();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityDataFixes.java b/src/main/java/zone/moddev/mc/basepower/migration/LegacyEntityDataFixes.java
similarity index 67%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityDataFixes.java
rename to src/main/java/zone/moddev/mc/basepower/migration/LegacyEntityDataFixes.java
index 40f513ad..4185d6a6 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityDataFixes.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/LegacyEntityDataFixes.java
@@ -1,17 +1,17 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import com.mojang.datafixers.DataFixUtils;
import com.mojang.datafixers.DataFixer;
import com.mojang.serialization.Dynamic;
import java.util.Set;
import java.util.UUID;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTDynamicOps;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.TypeReferences;
-import net.minecraft.util.datafix.fixes.EntityUUID;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtOps;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.fixes.References;
+import net.minecraft.util.datafix.fixes.EntityUUIDFix;
/** Isolates vanilla entity choices from mod choices during the chunk datafix. */
final class LegacyEntityDataFixes {
@@ -26,41 +26,42 @@ final class LegacyEntityDataFixes {
private LegacyEntityDataFixes() {}
- static void prepare(CompoundNBT root) {
+ static void prepare(CompoundTag root) {
if (root.contains(STAGED)) return;
int version = root.contains("DataVersion", 99) ? root.getInt("DataVersion") : -1;
int current = SharedConstants.getCurrentVersion().getWorldVersion();
- if (version >= current || !root.contains("Level", 10)) return;
- CompoundNBT level = root.getCompound("Level");
+ if (version >= current) return;
+ CompoundTag level = entityOwner(root);
+ if (level == null) return;
if (!level.contains("Entities")) return;
requireCompoundList(level, "Entities");
- ListNBT entities = level.getList("Entities", 10);
+ ListTag entities = level.getList("Entities", 10);
if (entities.isEmpty()) return;
- DataFixer fixer = DataFixesManager.getDataFixer();
+ DataFixer fixer = DataFixers.getDataFixer();
Set> vanillaIds = fixer.getSchema(DataFixUtils.makeKey(version))
- .findChoiceType(TypeReferences.ENTITY).types().keySet();
- ListNBT fixed = new ListNBT();
+ .findChoiceType(References.ENTITY).types().keySet();
+ ListTag fixed = new ListTag();
for (int index = 0; index < entities.size(); index++) {
fixed.add(upgrade(entities.getCompound(index), version, current, fixer, vanillaIds));
}
// Keep these out of vanilla's mixed-choice traversal and avoid fixing them twice.
root.put(STAGED, fixed);
- level.put("Entities", new ListNBT());
+ level.put("Entities", new ListTag());
}
- private static CompoundNBT upgrade(CompoundNBT source, int version, int current,
+ private static CompoundTag upgrade(CompoundTag source, int version, int current,
DataFixer fixer, Set> vanillaIds) {
- CompoundNBT entity = source.copy();
+ CompoundTag entity = source.copy();
renameForgeAttributes(entity);
boolean hasPassengers = source.contains("Passengers");
- ListNBT passengers = source.getList("Passengers", 10);
+ ListTag passengers = source.getList("Passengers", 10);
entity.remove("Passengers");
- Dynamic> dynamic = new Dynamic<>(NBTDynamicOps.INSTANCE, entity);
+ Dynamic> dynamic = new Dynamic<>(NbtOps.INSTANCE, entity);
if (vanillaIds.contains(entity.getString("id"))) {
- entity = (CompoundNBT) fixer.update(TypeReferences.ENTITY, dynamic, version, current).getValue();
+ entity = (CompoundTag) fixer.update(References.ENTITY, dynamic, version, current).getValue();
} else {
// All entities inherit this root UUID format, including unknown mod types.
- entity = (CompoundNBT) EntityUUID.updateEntityUUID(dynamic).getValue();
+ entity = (CompoundTag) EntityUUIDFix.updateEntityUUID(dynamic).getValue();
}
// Vanilla's UUID fixer rejects zero halves, although they are valid UUID bits.
if (source.hasUUID("UUID")) {
@@ -74,7 +75,7 @@ private static CompoundNBT upgrade(CompoundNBT source, int version, int current,
}
if (hasPassengers) {
requireCompoundList(source, "Passengers");
- ListNBT fixed = new ListNBT();
+ ListTag fixed = new ListTag();
for (int index = 0; index < passengers.size(); index++) {
fixed.add(upgrade(passengers.getCompound(index), version, current, fixer, vanillaIds));
}
@@ -83,35 +84,35 @@ private static CompoundNBT upgrade(CompoundNBT source, int version, int current,
return entity;
}
- static void preparePlayerAttributes(CompoundNBT player) {
+ static void preparePlayerAttributes(CompoundTag player) {
renameForgeAttributes(player);
if (!player.contains("RootVehicle")) return;
if (!player.contains("RootVehicle", 10)) throw new IllegalStateException("Malformed player RootVehicle");
- CompoundNBT vehicle = player.getCompound("RootVehicle");
+ CompoundTag vehicle = player.getCompound("RootVehicle");
if (!vehicle.contains("Entity")) return;
if (!vehicle.contains("Entity", 10)) throw new IllegalStateException("Malformed player RootVehicle.Entity");
prepareAttributeTree(vehicle.getCompound("Entity"));
}
- private static void prepareAttributeTree(CompoundNBT entity) {
+ private static void prepareAttributeTree(CompoundTag entity) {
renameForgeAttributes(entity);
if (!entity.contains("Passengers")) return;
requireCompoundList(entity, "Passengers");
- ListNBT passengers = entity.getList("Passengers", 10);
+ ListTag passengers = entity.getList("Passengers", 10);
for (int index = 0; index < passengers.size(); index++) {
prepareAttributeTree(passengers.getCompound(index));
}
}
- private static void renameForgeAttributes(CompoundNBT entity) {
+ private static void renameForgeAttributes(CompoundTag entity) {
if (!entity.contains("Attributes")) return;
requireCompoundList(entity, "Attributes");
- ListNBT attributes = entity.getList("Attributes", 10);
+ ListTag attributes = entity.getList("Attributes", 10);
for (String[] alias : FORGE_ATTRIBUTES) {
- CompoundNBT legacy = null;
+ CompoundTag legacy = null;
int identities = 0;
for (int index = 0; index < attributes.size(); index++) {
- CompoundNBT attribute = attributes.getCompound(index);
+ CompoundTag attribute = attributes.getCompound(index);
if (attribute.getString("Name").equals(alias[0])) {
legacy = attribute;
identities++;
@@ -124,13 +125,13 @@ private static void renameForgeAttributes(CompoundNBT entity) {
}
}
- static void finish(CompoundNBT root) {
+ static void finish(CompoundTag root) {
if (root == null || !root.contains(STAGED)) return;
- if (!root.contains(STAGED, 9) || !root.contains("Level", 10)) {
+ if (!root.contains(STAGED, 9) || entityOwner(root) == null) {
throw new IllegalStateException("Malformed staged Advantage entity migration");
}
requireCompoundList(root, STAGED);
- CompoundNBT level = root.getCompound("Level");
+ CompoundTag level = entityOwner(root);
if (level.contains("Entities")) requireCompoundList(level, "Entities");
if (!level.getList("Entities", 10).isEmpty()) {
throw new IllegalStateException("Entity data appeared during isolated Advantage migration");
@@ -139,9 +140,18 @@ static void finish(CompoundNBT root) {
root.remove(STAGED);
}
- private static void requireCompoundList(CompoundNBT owner, String key) {
+ private static CompoundTag entityOwner(CompoundTag root) {
+ if (root.contains("Level", 10)) return root.getCompound("Level");
+ if (!root.contains("Position", 11)) return null;
+ if (root.getIntArray("Position").length != 2) {
+ throw new IllegalStateException("Saved entity chunk has no containing chunk coordinates");
+ }
+ return root;
+ }
+
+ private static void requireCompoundList(CompoundTag owner, String key) {
if (!owner.contains(key, 9)) throw new IllegalStateException("Malformed entity list: " + key);
- ListNBT list = (ListNBT) owner.get(key);
+ ListTag list = (ListTag) owner.get(key);
if (!list.isEmpty() && list.getElementType() != 10) {
throw new IllegalStateException("Non-compound entity list: " + key);
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemDataFixes.java b/src/main/java/zone/moddev/mc/basepower/migration/LegacyMachineItemDataFixes.java
similarity index 67%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemDataFixes.java
rename to src/main/java/zone/moddev/mc/basepower/migration/LegacyMachineItemDataFixes.java
index b80f117b..9da5c62d 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemDataFixes.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/LegacyMachineItemDataFixes.java
@@ -1,18 +1,18 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import cyano.poweradvantage.api.migration.LegacyMigrationApi;
import com.mojang.datafixers.DataFixer;
import com.mojang.serialization.Dynamic;
import java.util.ArrayList;
import java.util.Objects;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.INBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTDynamicOps;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.TypeReferences;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.Tag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtOps;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.fixes.References;
/** Vanilla cannot traverse inventories behind unknown mod block-entity choices. */
final class LegacyMachineItemDataFixes {
@@ -20,13 +20,13 @@ final class LegacyMachineItemDataFixes {
private LegacyMachineItemDataFixes() {}
- static void prepare(CompoundNBT root) {
+ static void prepare(CompoundTag root) {
int version = root.contains("DataVersion", 99) ? root.getInt("DataVersion") : -1;
int current = SharedConstants.getCurrentVersion().getWorldVersion();
if (version >= current || root.getBoolean(PREPARED) || !root.contains("Level", 10)) return;
- ListNBT tiles = root.getCompound("Level").getList("TileEntities", 10);
+ ListTag tiles = root.getCompound("Level").getList("TileEntities", 10);
for (int index = 0; index < tiles.size(); index++) {
- CompoundNBT tile = tiles.getCompound(index);
+ CompoundTag tile = tiles.getCompound(index);
ResourceLocation id = ResourceLocation.tryParse(tile.getString("id"));
if (id != null && LegacyMigrationApi.handlesNamespace(id.getNamespace())) {
rewrite(tile, version, current);
@@ -35,16 +35,16 @@ static void prepare(CompoundNBT root) {
root.putBoolean(PREPARED, true);
}
- private static INBT rewrite(INBT value, int version, int current) {
- if (value instanceof CompoundNBT) {
- CompoundNBT compound = (CompoundNBT) value;
+ private static Tag rewrite(Tag value, int version, int current) {
+ if (value instanceof CompoundTag) {
+ CompoundTag compound = (CompoundTag) value;
ResourceLocation id = ResourceLocation.tryParse(compound.getString("id"));
if (compound.contains("Count", 99) && id != null) {
if (supported(id)) {
- DataFixer fixer = DataFixesManager.getDataFixer();
- CompoundNBT input = version < 704 ? upgradeTo704(compound, version, fixer) : compound.copy();
- CompoundNBT fixed = (CompoundNBT) fixer.update(TypeReferences.ITEM_STACK,
- new Dynamic<>(NBTDynamicOps.INSTANCE, input), Math.max(version, 704), current).getValue();
+ DataFixer fixer = DataFixers.getDataFixer();
+ CompoundTag input = version < 704 ? upgradeTo704(compound, version, fixer) : compound.copy();
+ CompoundTag fixed = (CompoundTag) fixer.update(References.ITEM_STACK,
+ new Dynamic<>(NbtOps.INSTANCE, input), Math.max(version, 704), current).getValue();
// The native item schema also fixes its nested vanilla inventories.
// Do not visit them again with the old version and reset tool damage.
return preserve(compound, fixed);
@@ -54,30 +54,30 @@ private static INBT rewrite(INBT value, int version, int current) {
for (String key : new ArrayList<>(compound.getAllKeys())) {
compound.put(key, rewrite(compound.get(key), version, current));
}
- } else if (value instanceof ListNBT) {
- ListNBT list = (ListNBT) value;
+ } else if (value instanceof ListTag) {
+ ListTag list = (ListTag) value;
for (int index = 0; index < list.size(); index++) list.set(index, rewrite(list.get(index), version, current));
}
return value;
}
- static CompoundNBT upgradeTo704(CompoundNBT source, int version, DataFixer fixer) {
+ static CompoundTag upgradeTo704(CompoundTag source, int version, DataFixer fixer) {
// A root ITEM_STACK hits the unchecked 704 hook conversion too early.
// Native PLAYER.Inventory lets the nested block-entity choice rename run.
- CompoundNBT player = new CompoundNBT();
- ListNBT inventory = new ListNBT();
+ CompoundTag player = new CompoundTag();
+ ListTag inventory = new ListTag();
inventory.add(source.copy());
player.put("Inventory", inventory);
- Object converted = fixer.update(TypeReferences.PLAYER, new Dynamic<>(NBTDynamicOps.INSTANCE, player),
+ Object converted = fixer.update(References.PLAYER, new Dynamic<>(NbtOps.INSTANCE, player),
version, 704).getValue();
- if (!(converted instanceof CompoundNBT)) {
+ if (!(converted instanceof CompoundTag)) {
throw new IllegalStateException("Native item envelope is not a player compound");
}
- INBT items = ((CompoundNBT) converted).get("Inventory");
- if (!(items instanceof ListNBT) || ((ListNBT) items).size() != 1 || ((ListNBT) items).getElementType() != 10) {
+ Tag items = ((CompoundTag) converted).get("Inventory");
+ if (!(items instanceof ListTag) || ((ListTag) items).size() != 1 || ((ListTag) items).getElementType() != 10) {
throw new IllegalStateException("Native item envelope changed singleton inventory cardinality or type");
}
- CompoundNBT result = ((ListNBT) items).getCompound(0);
+ CompoundTag result = ((ListTag) items).getCompound(0);
ResourceLocation id = ResourceLocation.tryParse(result.getString("id"));
if (!result.contains("id", 8) || id == null || id.getPath().isEmpty() || !result.contains("Count", 99)
|| !result.get("Count").equals(source.get("Count"))
@@ -92,9 +92,9 @@ private static boolean supported(ResourceLocation id) {
|| id.getNamespace().equals("mmdlib") || LegacyMigrationApi.handlesNamespace(id.getNamespace());
}
- private static INBT preserve(INBT original, INBT result) {
- if (original instanceof CompoundNBT && result instanceof CompoundNBT) {
- CompoundNBT before = (CompoundNBT) original, after = (CompoundNBT) result;
+ private static Tag preserve(Tag original, Tag result) {
+ if (original instanceof CompoundTag && result instanceof CompoundTag) {
+ CompoundTag before = (CompoundTag) original, after = (CompoundTag) result;
ResourceLocation id = ResourceLocation.tryParse(before.getString("id"));
if (before.contains("Count", 99) && id != null) {
if (!after.contains("Count", 99) || before.getInt("Count") != after.getInt("Count")
@@ -109,10 +109,10 @@ private static INBT preserve(INBT original, INBT result) {
for (String key : new ArrayList<>(before.getAllKeys())) {
if (after.contains(key)) after.put(key, preserve(before.get(key), after.get(key)));
}
- } else if (original instanceof ListNBT && result instanceof ListNBT) {
- ListNBT before = (ListNBT) original, after = (ListNBT) result;
- boolean inventory = before.stream().anyMatch(value -> value instanceof CompoundNBT
- && ((CompoundNBT) value).contains("Count", 99) && ((CompoundNBT) value).contains("id", 8));
+ } else if (original instanceof ListTag && result instanceof ListTag) {
+ ListTag before = (ListTag) original, after = (ListTag) result;
+ boolean inventory = before.stream().anyMatch(value -> value instanceof CompoundTag
+ && ((CompoundTag) value).contains("Count", 99) && ((CompoundTag) value).contains("id", 8));
if (inventory && before.size() != after.size()) {
throw new IllegalStateException("Native item migration changed inventory cardinality");
}
@@ -123,9 +123,9 @@ private static INBT preserve(INBT original, INBT result) {
return result;
}
- private static void restoreNamedEnchantments(CompoundNBT source, CompoundNBT target, String oldKey, String newKey) {
- ListNBT before = source.getCompound("tag").getList(oldKey, 10);
- ListNBT after = target.getCompound("tag").getList(newKey, 10);
+ private static void restoreNamedEnchantments(CompoundTag source, CompoundTag target, String oldKey, String newKey) {
+ ListTag before = source.getCompound("tag").getList(oldKey, 10);
+ ListTag after = target.getCompound("tag").getList(newKey, 10);
for (int index = 0; index < before.size(); index++) {
if (!before.getCompound(index).contains("id", 8)) continue;
if (after.size() != before.size()) {
@@ -137,7 +137,7 @@ private static void restoreNamedEnchantments(CompoundNBT source, CompoundNBT tar
}
}
- static void finish(CompoundNBT root) {
+ static void finish(CompoundTag root) {
if (root != null) root.remove(PREPARED);
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixes.java b/src/main/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixes.java
similarity index 61%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixes.java
rename to src/main/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixes.java
index b86ab28f..0ef7b81f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixes.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixes.java
@@ -1,36 +1,36 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import com.mojang.datafixers.DataFixer;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.INBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DefaultTypeReferences;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.Tag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixTypes;
/** Keeps saved Forge enchantment names across the native numeric player fixers. */
public final class LegacyPlayerDataFixes {
private LegacyPlayerDataFixes() {}
- public static CompoundNBT update(DataFixer fixer, DefaultTypeReferences type, CompoundNBT source, int version) {
- if (type != DefaultTypeReferences.PLAYER) throw new IllegalArgumentException("Expected native PLAYER type");
- CompoundNBT result = source.copy();
+ public static CompoundTag update(DataFixer fixer, DataFixTypes type, CompoundTag source, int version) {
+ if (type != DataFixTypes.PLAYER) throw new IllegalArgumentException("Expected native PLAYER type");
+ CompoundTag result = source.copy();
int current = SharedConstants.getCurrentVersion().getWorldVersion();
if (version >= current) return result;
LegacyEntityDataFixes.preparePlayerAttributes(result);
if (version < 704) {
// Re-read the native namespaced container schema before later choice fixes.
- result = NBTUtil.update(fixer, type, result, version, 704);
+ result = NbtUtils.update(fixer, type, result, version, 704);
version = 704;
}
- result = NBTUtil.update(fixer, type, result, version, current);
+ result = NbtUtils.update(fixer, type, result, version, current);
preserveNames(source, result);
return result;
}
- private static void preserveNames(INBT original, INBT result) {
- if (original instanceof CompoundNBT && result instanceof CompoundNBT) {
- CompoundNBT before = (CompoundNBT) original, after = (CompoundNBT) result;
+ private static void preserveNames(Tag original, Tag result) {
+ if (original instanceof CompoundTag && result instanceof CompoundTag) {
+ CompoundTag before = (CompoundTag) original, after = (CompoundTag) result;
if (isStack(before)) {
if (!before.get("Count").equals(after.get("Count"))
|| (before.contains("Slot") != after.contains("Slot"))
@@ -46,8 +46,8 @@ else if (containsStack(before.get(key))) {
throw new IllegalStateException("Native player migration removed an inventory branch");
}
}
- } else if (original instanceof ListNBT && result instanceof ListNBT) {
- ListNBT before = (ListNBT) original, after = (ListNBT) result;
+ } else if (original instanceof ListTag && result instanceof ListTag) {
+ ListTag before = (ListTag) original, after = (ListTag) result;
boolean inventory = containsStack(before) || containsStack(after);
if (inventory && before.size() != after.size()) {
throw new IllegalStateException("Native player migration changed inventory cardinality");
@@ -60,25 +60,25 @@ else if (containsStack(before.get(key))) {
}
}
- private static boolean isStack(INBT value) {
- return value instanceof CompoundNBT && ((CompoundNBT) value).contains("id")
- && ((CompoundNBT) value).contains("Count", 99);
+ private static boolean isStack(Tag value) {
+ return value instanceof CompoundTag && ((CompoundTag) value).contains("id")
+ && ((CompoundTag) value).contains("Count", 99);
}
- private static boolean containsStack(INBT value) {
+ private static boolean containsStack(Tag value) {
if (isStack(value)) return true;
- if (value instanceof CompoundNBT) {
- CompoundNBT compound = (CompoundNBT) value;
+ if (value instanceof CompoundTag) {
+ CompoundTag compound = (CompoundTag) value;
for (String key : compound.getAllKeys()) if (containsStack(compound.get(key))) return true;
- } else if (value instanceof ListNBT) {
- for (INBT child : (ListNBT) value) if (containsStack(child)) return true;
+ } else if (value instanceof ListTag) {
+ for (Tag child : (ListTag) value) if (containsStack(child)) return true;
}
return false;
}
- private static void restoreNamed(CompoundNBT source, CompoundNBT target, String oldKey, String newKey) {
- ListNBT before = source.getCompound("tag").getList(oldKey, 10);
- ListNBT after = target.getCompound("tag").getList(newKey, 10);
+ private static void restoreNamed(CompoundTag source, CompoundTag target, String oldKey, String newKey) {
+ ListTag before = source.getCompound("tag").getList(oldKey, 10);
+ ListTag after = target.getCompound("tag").getList(newKey, 10);
for (int index = 0; index < before.size(); index++) {
if (!before.getCompound(index).contains("id", 8)) continue;
if (before.size() != after.size()) {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyWorldDataHook.java b/src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldDataHook.java
similarity index 72%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyWorldDataHook.java
rename to src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldDataHook.java
index 99a5f885..0b23f1fa 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/LegacyWorldDataHook.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldDataHook.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import java.io.File;
import java.io.FileInputStream;
@@ -25,21 +25,21 @@
import cpw.mods.modlauncher.api.INameMappingService;
import cyano.poweradvantage.api.migration.LegacyMigrationApi;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.nbt.CompressedStreamTools;
-import net.minecraft.nbt.INBT;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.datafix.fixes.BlockStateFlatteningMap;
-import net.minecraft.world.storage.SaveFormat.LevelSave;
-import net.minecraft.world.storage.IServerConfiguration;
-import net.minecraftforge.fml.WorldPersistenceHooks;
-import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.nbt.NbtIo;
+import net.minecraft.nbt.Tag;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.util.datafix.fixes.BlockStateData;
+import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess;
+import net.minecraft.world.level.storage.WorldData;
+import net.minecraftforge.fmllegacy.WorldPersistenceHooks;
+import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import net.minecraftforge.registries.ForgeRegistries;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/**
* Shared Advantage pre-flattening migration hook for Minecraft 1.10 and 1.12
@@ -48,7 +48,7 @@
public final class LegacyWorldDataHook implements WorldPersistenceHooks.WorldPersistenceHook {
private static final LegacyWorldDataHook INSTANCE = new LegacyWorldDataHook();
private static final ResourceLocation BLOCK_REGISTRY = new ResourceLocation("minecraft", "blocks");
- private static final Map LEGACY_WORLD_DATA = new ConcurrentHashMap<>();
+ private static final Map LEGACY_WORLD_DATA = new ConcurrentHashMap<>();
private static final BitSet LEGACY_BLOCK_IDS = new BitSet();
private static final Map LEGACY_ENCHANTMENTS = new LinkedHashMap<>();
private static final Set LEGACY_CHUNKS = Collections.newSetFromMap(new ConcurrentHashMap<>());
@@ -76,23 +76,42 @@ public static synchronized void prepareLegacyWorld(File levelDat) {
LEGACY_BLOCK_COUNTS.clear();
removeRetiredProfessionSnapshot(levelDat);
File source = legacyRegistrySource(levelDat);
- if (source == null) return;
- try (FileInputStream input = new FileInputStream(source)) {
- CompoundNBT root = CompressedStreamTools.readCompressed(input);
- if (!root.contains("FML", 10)) return;
- prepareLegacyData(levelDat.getParentFile(), root.getCompound("FML"));
- migrateLoosePlayerData(levelDat, root);
+ try {
+ if (source != null) {
+ try (FileInputStream input = new FileInputStream(source)) {
+ CompoundTag registryArchive = NbtIo.readCompressed(input);
+ prepareLegacyData(levelDat.getParentFile(), registryArchive.getCompound("FML"));
+ }
+ }
+ if (levelDat.isFile()) {
+ // A backup can supply registry IDs, but never replace newer world data.
+ try (FileInputStream current = new FileInputStream(levelDat)) {
+ CompoundTag root = NbtIo.readCompressed(current);
+ if (source != null || hasAdvantageNamespaceAliases(root)) migrateLoosePlayerData(levelDat, root);
+ }
+ }
} catch (IOException exception) {
- PowerAdvantage.LOGGER.warn("Could not inspect '{}' for legacy Advantage registry data", source, exception);
+ throw new IllegalStateException("Could not prepare legacy Advantage data in " + levelDat, exception);
+ }
+ }
+
+ private static boolean hasAdvantageNamespaceAliases(CompoundTag root) {
+ CompoundTag registries = root.getCompound("fml").getCompound("Registries");
+ for (String registry : registries.getAllKeys()) {
+ for (Tag entry : registries.getCompound(registry).getList("ids", Tag.TAG_COMPOUND)) {
+ ResourceLocation id = safeId(((CompoundTag) entry).getString("K"));
+ if (id != null && !LegacyMigrationApi.registryTarget(id).equals(id)) return true;
+ }
}
+ return false;
}
private static void removeRetiredProfessionSnapshot(File levelDat) {
if (!levelDat.isFile()) return;
try {
- CompoundNBT root;
+ CompoundTag root;
try (FileInputStream input = new FileInputStream(levelDat)) {
- root = CompressedStreamTools.readCompressed(input);
+ root = NbtIo.readCompressed(input);
}
boolean changed = removeRetiredVanillaProfessionRegistry(root);
changed |= renameFlattenedBiomeRegistry(root);
@@ -102,13 +121,13 @@ private static void removeRetiredProfessionSnapshot(File levelDat) {
}
}
- static boolean renameFlattenedBiomeRegistry(CompoundNBT root) {
+ static boolean renameFlattenedBiomeRegistry(CompoundTag root) {
// Uppercase FML remains the untouched pre-flattening registry archive.
if (root.getCompound("Data").getInt("DataVersion") < 1519) return false;
- CompoundNBT registries = root.getCompound("fml").getCompound("Registries");
+ CompoundTag registries = root.getCompound("fml").getCompound("Registries");
String old = "minecraft:biomes", current = "minecraft:worldgen/biome";
if (!registries.contains(old, 10)) return false;
- CompoundNBT snapshot = registries.getCompound(old);
+ CompoundTag snapshot = registries.getCompound(old);
if (registries.contains(current) && !snapshot.equals(registries.get(current))) {
throw new IllegalStateException("Conflicting old and current biome registry snapshots; preserve the world backup and resolve the registry conflict before loading");
}
@@ -117,22 +136,22 @@ static boolean renameFlattenedBiomeRegistry(CompoundNBT root) {
return true;
}
- static boolean removeRetiredVanillaProfessionRegistry(CompoundNBT root) {
+ static boolean removeRetiredVanillaProfessionRegistry(CompoundTag root) {
boolean changed = false;
for (String namespace : new String[] {"fml", "FML"}) {
- CompoundNBT registries = root.getCompound(namespace).getCompound("Registries");
+ CompoundTag registries = root.getCompound(namespace).getCompound("Registries");
String key = "minecraft:villagerprofessions";
if (!registries.contains(key, 10)) continue;
- CompoundNBT snapshot = registries.getCompound(key);
+ CompoundTag snapshot = registries.getCompound(key);
if (!snapshot.contains("ids", 9)) continue;
boolean vanillaOnly = true;
- for (INBT entry : (ListNBT) snapshot.get("ids")) {
- if (!(entry instanceof CompoundNBT) || !Arrays.asList("minecraft:farmer", "minecraft:librarian",
+ for (Tag entry : (ListTag) snapshot.get("ids")) {
+ if (!(entry instanceof CompoundTag) || !Arrays.asList("minecraft:farmer", "minecraft:librarian",
"minecraft:priest", "minecraft:smith", "minecraft:butcher", "minecraft:nitwit")
- .contains(((CompoundNBT) entry).getString("K"))) vanillaOnly = false;
+ .contains(((CompoundTag) entry).getString("K"))) vanillaOnly = false;
}
for (String list : new String[] {"aliases", "overrides", "dummied"}) {
- if (snapshot.contains(list, 9) && !((ListNBT) snapshot.get(list)).isEmpty()) vanillaOnly = false;
+ if (snapshot.contains(list, 9) && !((ListTag) snapshot.get(list)).isEmpty()) vanillaOnly = false;
}
if (snapshot.getIntArray("blocked").length > 0 || !vanillaOnly) continue;
// Vanilla fixes the villagers and offers. Remove only the retired vanilla ID index.
@@ -143,11 +162,13 @@ static boolean removeRetiredVanillaProfessionRegistry(CompoundNBT root) {
}
/** Called by the coremod immediately after a legacy chunk NBT is read. */
- public static synchronized void prepareLegacyChunk(CompoundNBT root) {
+ public static synchronized void prepareLegacyChunk(CompoundTag root) {
if (root == null) return;
migrateLegacyNbt(root);
- if (!legacyWorldActive || !root.contains("Level", 10)) return;
- CompoundNBT level = root.getCompound("Level");
+ if (!root.contains("Level", Tag.TAG_COMPOUND)) return;
+ CompoundTag level = root.getCompound("Level");
+ remapFlattenedPalette(level);
+ if (!legacyWorldActive) return;
int legacyBlocks = countLegacyBlocks(level);
if (legacyBlocks > 0) {
LEGACY_BLOCK_COUNTS.put(Long.valueOf(chunkKey(level.getInt("xPos"), level.getInt("zPos"))),
@@ -158,13 +179,41 @@ public static synchronized void prepareLegacyChunk(CompoundNBT root) {
level.putBoolean(PRESERVE_CHUNK_MARKER, true);
}
+ static void remapFlattenedPalette(CompoundTag level) {
+ for (Tag section : level.getList("Sections", Tag.TAG_COMPOUND)) {
+ for (Tag state : ((CompoundTag) section).getList("Palette", Tag.TAG_COMPOUND)) {
+ CompoundTag blockState = (CompoundTag) state;
+ ResourceLocation original = safeId(blockState.getString("Name"));
+ if (original == null) continue;
+ ResourceLocation target = LegacyMigrationApi.blockTarget(original);
+ if (target.equals(original)) continue;
+ if (!ForgeRegistries.BLOCKS.containsKey(target)) {
+ throw new IllegalStateException("No replacement for saved Advantage block " + original);
+ }
+ blockState.putString("Name", target.toString());
+ }
+ }
+ }
+
/** Detaches pending-save data before either mod's migration hook can mutate it. */
- public static CompoundNBT copyChunkForMigration(CompoundNBT root) {
+ public static CompoundTag copyChunkForMigration(CompoundTag root) {
return root == null ? null : root.copy();
}
+ /** Native 1.17 stores entities separately; never mutate an I/O worker's cached data. */
+ public static CompoundTag prepareEntityChunkForMigration(CompoundTag source) {
+ if (source == null || !source.contains("Position", 11)
+ || source.getIntArray("Position").length != 2 || !source.contains("Entities", 9)) {
+ throw new IllegalStateException("Malformed saved entity chunk; refusing unsafe construction");
+ }
+ CompoundTag root = source.copy();
+ migrateLegacyNbt(root);
+ LegacyEntityDataFixes.prepare(root);
+ return root;
+ }
+
/** Called after all mods' entry hooks, immediately before native chunk datafixing. */
- public static void prepareLegacyEntities(CompoundNBT root) {
+ public static void prepareLegacyEntities(CompoundTag root) {
if (root != null) {
LegacyMachineItemDataFixes.prepare(root);
LegacyEntityDataFixes.prepare(root);
@@ -172,11 +221,11 @@ public static void prepareLegacyEntities(CompoundNBT root) {
}
/** Called after vanilla datafixing, before a legacy chunk is returned. */
- public static CompoundNBT finalizeLegacyChunk(CompoundNBT root) {
+ public static CompoundTag finalizeLegacyChunk(CompoundTag root) {
LegacyEntityDataFixes.finish(root);
LegacyMachineItemDataFixes.finish(root);
if (root != null && root.contains("Level", 10)) {
- CompoundNBT level = root.getCompound("Level");
+ CompoundTag level = root.getCompound("Level");
if (level.getBoolean(PRESERVE_CHUNK_MARKER)) {
level.putString("Status", "full");
level.remove(PRESERVE_CHUNK_MARKER);
@@ -185,7 +234,7 @@ public static CompoundNBT finalizeLegacyChunk(CompoundNBT root) {
return root;
}
- public static boolean shouldBlockWorldgenWrite(net.minecraft.util.math.BlockPos position) {
+ public static boolean shouldBlockWorldgenWrite(net.minecraft.core.BlockPos position) {
return legacyWorldActive && position != null
&& LEGACY_CHUNKS.contains(Long.valueOf(chunkKey(position.getX() >> 4, position.getZ() >> 4)));
}
@@ -193,19 +242,19 @@ public static boolean shouldBlockWorldgenWrite(net.minecraft.util.math.BlockPos
@Override public String getModId() { return "FML"; }
@Override
- public CompoundNBT getDataForWriting(LevelSave handler, IServerConfiguration info) {
- CompoundNBT legacy = LEGACY_WORLD_DATA.get(worldKey(handler.getWorldDir().toFile()));
- return legacy == null ? new CompoundNBT() : legacy.copy();
+ public CompoundTag getDataForWriting(LevelStorageAccess handler, WorldData info) {
+ CompoundTag legacy = LEGACY_WORLD_DATA.get(worldKey(handler.getWorldDir().toFile()));
+ return legacy == null ? new CompoundTag() : legacy.copy();
}
@Override
- public void readData(LevelSave handler, IServerConfiguration info, CompoundNBT tag) {
+ public void readData(LevelStorageAccess handler, WorldData info, CompoundTag tag) {
prepareLegacyData(handler.getWorldDir().toFile(), tag);
}
- private static synchronized void prepareLegacyData(File worldDirectory, CompoundNBT tag) {
+ private static synchronized void prepareLegacyData(File worldDirectory, CompoundTag tag) {
if (!tag.contains("Registries", 10)) return;
- CompoundNBT registries = tag.getCompound("Registries");
+ CompoundTag registries = tag.getCompound("Registries");
if (!registries.contains(BLOCK_REGISTRY.toString(), 10)) return;
installLegacyEnchantments(registries);
String key = worldKey(worldDirectory);
@@ -221,16 +270,19 @@ private static synchronized void prepareLegacyData(File worldDirectory, Compound
}
}
- private static int installLegacyBlockStates(CompoundNBT snapshot) {
+ private static int installLegacyBlockStates(CompoundTag snapshot) {
LEGACY_BLOCK_IDS.clear();
Map ids = new LinkedHashMap<>();
- ListNBT savedIds = snapshot.getList("ids", 10);
+ ListTag savedIds = snapshot.getList("ids", 10);
int highestState = 0;
for (int index = 0; index < savedIds.size(); index++) {
- CompoundNBT entry = savedIds.getCompound(index);
+ CompoundTag entry = savedIds.getCompound(index);
ResourceLocation id = safeId(normalizeLegacyRegistryName(entry.getString("K")));
if (id == null || !LegacyMigrationApi.handlesNamespace(id.getNamespace())) continue;
int numeric = entry.getInt("V");
+ if (numeric < 0 || numeric > 4095) {
+ throw new IllegalStateException("Invalid legacy block ID for " + id + ": " + numeric);
+ }
ids.put(id, Integer.valueOf(numeric));
LEGACY_BLOCK_IDS.set(numeric);
highestState = Math.max(highestState, (numeric << 4) | 15);
@@ -242,40 +294,40 @@ private static int installLegacyBlockStates(CompoundNBT snapshot) {
for (Map.Entry entry : ids.entrySet()) {
ResourceLocation target = LegacyMigrationApi.blockTarget(entry.getKey());
Block block = ForgeRegistries.BLOCKS.getValue(target);
- if (block == null) {
+ if (!ForgeRegistries.BLOCKS.containsKey(target) || block == null) {
throw new IllegalStateException("No Advantage replacement for legacy block " + entry.getKey()
+ " (expected " + target + ")");
}
for (int metadata = 0; metadata < 16; metadata++) {
BlockState state = LegacyMigrationApi.decodeBlockState(entry.getKey(), block, metadata);
table[(entry.getValue().intValue() << 4) | metadata] =
- BlockStateFlatteningMap.parse(NBTUtil.writeBlockState(state).toString());
+ BlockStateData.parse(NbtUtils.writeBlockState(state).toString());
mapped++;
}
}
return mapped;
}
- private static void installLegacyEnchantments(CompoundNBT registries) {
+ private static void installLegacyEnchantments(CompoundTag registries) {
LEGACY_ENCHANTMENTS.clear();
- ListNBT entries = registries.getCompound("minecraft:enchantments").getList("ids", 10);
+ ListTag entries = registries.getCompound("minecraft:enchantments").getList("ids", 10);
for (int index = 0; index < entries.size(); index++) {
- CompoundNBT entry = entries.getCompound(index);
+ CompoundTag entry = entries.getCompound(index);
ResourceLocation name = safeId(entry.getString("K"));
if (name != null) LEGACY_ENCHANTMENTS.put(Integer.valueOf(entry.getInt("V")), name.toString());
}
}
/** Resolve saved IDs, not today's registry order or vanilla's conflicting numeric IDs. */
- static boolean migrateLegacyEnchantments(CompoundNBT compound, Map savedIds) {
+ static boolean migrateLegacyEnchantments(CompoundTag compound, Map savedIds) {
boolean changed = migrateEnchantmentList(compound, "StoredEnchantments", savedIds);
changed |= migrateEnchantmentList(compound, "Enchantments", savedIds);
if (compound.contains("ench", 9)) {
- ListNBT enchantments = compound.getList("ench", 10);
+ ListTag enchantments = compound.getList("ench", 10);
if (!enchantments.isEmpty() && !savedIds.isEmpty()) {
// A partial conversion would leave an unreadable mixed old/new list.
for (int index = 0; index < enchantments.size(); index++) {
- CompoundNBT enchantment = enchantments.getCompound(index);
+ CompoundTag enchantment = enchantments.getCompound(index);
if (enchantment.contains("id", 99)
&& !savedIds.containsKey(Integer.valueOf(enchantment.getInt("id")))) {
throw new IllegalStateException("Missing saved enchantment mapping for " + enchantment.getInt("id"));
@@ -290,22 +342,26 @@ static boolean migrateLegacyEnchantments(CompoundNBT compound, Map savedIds) {
+ private static boolean migrateEnchantmentList(CompoundTag compound, String key, Map savedIds) {
boolean changed = false;
- ListNBT list = compound.getList(key, 10);
+ ListTag list = compound.getList(key, 10);
for (int index = 0; index < list.size(); index++) {
- CompoundNBT enchantment = list.getCompound(index);
- if (!enchantment.contains("id", 99)) continue;
- String name = savedIds.get(Integer.valueOf(enchantment.getInt("id")));
- if (name != null) {
- enchantment.putString("id", name);
+ CompoundTag enchantment = list.getCompound(index);
+ boolean numeric = enchantment.contains("id", 99);
+ String name = numeric ? savedIds.get(Integer.valueOf(enchantment.getInt("id")))
+ : enchantment.getString("id");
+ ResourceLocation id = safeId(name);
+ if (id == null) continue;
+ String target = LegacyMigrationApi.registryTarget(id).toString();
+ if (numeric || !target.equals(name)) {
+ enchantment.putString("id", target);
changed = true;
}
}
return changed;
}
- private static void migrateLoosePlayerData(File levelDat, CompoundNBT root) throws IOException {
+ private static void migrateLoosePlayerData(File levelDat, CompoundTag root) throws IOException {
boolean changed = migrateLegacyNbt(root) > 0;
if (changed && levelDat.isFile()) writeWithBackup(levelDat, root);
File playerData = new File(levelDat.getParentFile(), "playerdata");
@@ -314,16 +370,16 @@ private static void migrateLoosePlayerData(File levelDat, CompoundNBT root) thro
Arrays.sort(files);
for (File file : files) {
try (FileInputStream input = new FileInputStream(file)) {
- CompoundNBT player = CompressedStreamTools.readCompressed(input);
+ CompoundTag player = NbtIo.readCompressed(input);
if (migrateLegacyNbt(player) > 0) writeWithBackup(file, player);
}
}
}
- private static int migrateLegacyNbt(INBT value) {
+ private static int migrateLegacyNbt(Tag value) {
int changed = 0;
- if (value instanceof CompoundNBT) {
- CompoundNBT compound = (CompoundNBT) value;
+ if (value instanceof CompoundTag) {
+ CompoundTag compound = (CompoundTag) value;
String id = compound.getString("id");
String vanillaBlockEntity = VANILLA_BLOCK_ENTITY_IDS.get(id);
if (vanillaBlockEntity != null) {
@@ -341,7 +397,7 @@ private static int migrateLegacyNbt(INBT value) {
}
if ("forge:bucketfilled".equalsIgnoreCase(id) && compound.contains("tag", 10)) {
- CompoundNBT tag = compound.getCompound("tag");
+ CompoundTag tag = compound.getCompound("tag");
ResourceLocation bucket = LegacyMigrationApi.bucketTarget(tag.getString("FluidName"));
if (bucket != null) {
compound.putString("id", bucket.toString());
@@ -355,13 +411,17 @@ private static int migrateLegacyNbt(INBT value) {
if (oldId != null && LegacyMigrationApi.handlesNamespace(oldId.getNamespace())) {
ResourceLocation target = LegacyMigrationApi.itemTarget(oldId);
if (!target.equals(oldId)) {
+ if (!ForgeRegistries.ITEMS.containsKey(target)) {
+ throw new IllegalStateException("No replacement for saved Advantage item "
+ + oldId + " (expected " + target + ")");
+ }
compound.putString("id", target.toString());
changed++;
}
if (LegacyMigrationApi.isDurableItem(oldId)
&& compound.contains("Damage", 99) && compound.getInt("Damage") > 0) {
- CompoundNBT tag = compound.contains("tag", 10)
- ? compound.getCompound("tag") : new CompoundNBT();
+ CompoundTag tag = compound.contains("tag", 10)
+ ? compound.getCompound("tag") : new CompoundTag();
if (!tag.contains("Damage", 99)) {
tag.putInt("Damage", compound.getInt("Damage"));
compound.put("tag", tag);
@@ -376,17 +436,17 @@ private static int migrateLegacyNbt(INBT value) {
if (migrateLegacyEnchantments(compound, LEGACY_ENCHANTMENTS)) changed++;
if (LegacyMigrationApi.migrateRegisteredNbt(compound)) changed++;
for (String key : new ArrayList<>(compound.getAllKeys())) {
- INBT child = compound.get(key);
+ Tag child = compound.get(key);
if (child != null) changed += migrateLegacyNbt(child);
}
- } else if (value instanceof ListNBT) {
- ListNBT list = (ListNBT) value;
+ } else if (value instanceof ListTag) {
+ ListTag list = (ListTag) value;
for (int index = 0; index < list.size(); index++) changed += migrateLegacyNbt(list.get(index));
}
return changed;
}
- private static int migrateFluidName(CompoundNBT compound, String key) {
+ private static int migrateFluidName(CompoundTag compound, String key) {
if (!compound.contains(key, 8)) return 0;
String oldName = compound.getString(key);
String target = LegacyMigrationApi.fluidTarget(oldName);
@@ -399,15 +459,15 @@ private static File legacyRegistrySource(File levelDat) {
for (File candidate : new File[] { levelDat, new File(levelDat.getParentFile(), "level.dat_old") }) {
if (!candidate.isFile()) continue;
try (FileInputStream input = new FileInputStream(candidate)) {
- CompoundNBT root = CompressedStreamTools.readCompressed(input);
+ CompoundTag root = NbtIo.readCompressed(input);
if (root.contains("FML", 10) && containsLegacyRegistryEntry(root)) return candidate;
} catch (IOException ignored) {}
}
return null;
}
- private static boolean containsLegacyRegistryEntry(CompoundNBT root) {
- ListNBT ids = root.getCompound("FML").getCompound("Registries")
+ private static boolean containsLegacyRegistryEntry(CompoundTag root) {
+ ListTag ids = root.getCompound("FML").getCompound("Registries")
.getCompound(BLOCK_REGISTRY.toString()).getList("ids", 10);
for (int index = 0; index < ids.size(); index++) {
ResourceLocation id = safeId(normalizeLegacyRegistryName(ids.getCompound(index).getString("K")));
@@ -416,11 +476,11 @@ private static boolean containsLegacyRegistryEntry(CompoundNBT root) {
return false;
}
- private static int countLegacyBlocks(CompoundNBT level) {
+ private static int countLegacyBlocks(CompoundTag level) {
int found = 0;
- ListNBT sections = level.getList("Sections", 10);
+ ListTag sections = level.getList("Sections", 10);
for (int sectionIndex = 0; sectionIndex < sections.size(); sectionIndex++) {
- CompoundNBT section = sections.getCompound(sectionIndex);
+ CompoundTag section = sections.getCompound(sectionIndex);
byte[] blocks = section.getByteArray("Blocks");
if (blocks.length != 4096) continue;
byte[] add = section.getByteArray("Add");
@@ -472,12 +532,12 @@ private static int indexLegacyChunks(File worldDirectory) {
@SuppressWarnings("unchecked")
private static Dynamic>[] expandFlatteningTable(int requiredLength) {
try {
- String fieldName = ObfuscationReflectionHelper.remapName(INameMappingService.Domain.FIELD, "field_199200_b");
- Field valuesField = BlockStateFlatteningMap.class.getDeclaredField(fieldName);
+ String fieldName = ObfuscationReflectionHelper.remapName(INameMappingService.Domain.FIELD, "f_14934_");
+ Field valuesField = BlockStateData.class.getDeclaredField(fieldName);
valuesField.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(valuesField, valuesField.getModifiers() & ~Modifier.FINAL);
+ if (Modifier.isFinal(valuesField.getModifiers())) {
+ throw new IllegalStateException("The Advantage flattening-table hook did not run");
+ }
Dynamic>[] current = (Dynamic>[]) valuesField.get(null);
if (current.length >= requiredLength) return current;
Dynamic>[] expanded = Arrays.copyOf(current, requiredLength);
@@ -488,12 +548,12 @@ private static Dynamic>[] expandFlatteningTable(int requiredLength) {
}
}
- private static void writeWithBackup(File file, CompoundNBT data) throws IOException {
- File backup = new File(file.getParentFile(), file.getName() + ".poweradvantage-legacy-backup");
+ private static void writeWithBackup(File file, CompoundTag data) throws IOException {
+ File backup = new File(file.getParentFile(), file.getName() + ".basepower-legacy-backup");
if (!backup.exists()) Files.copy(file.toPath(), backup.toPath(), StandardCopyOption.COPY_ATTRIBUTES);
- File temporary = new File(file.getParentFile(), file.getName() + ".poweradvantage.tmp");
+ File temporary = new File(file.getParentFile(), file.getName() + ".basepower.tmp");
try (FileOutputStream output = new FileOutputStream(temporary)) {
- CompressedStreamTools.writeCompressed(data, output);
+ NbtIo.writeCompressed(data, output);
}
try {
Files.move(temporary.toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING,
@@ -504,7 +564,7 @@ private static void writeWithBackup(File file, CompoundNBT data) throws IOExcept
}
private static void writeMigrationReport(File worldDirectory, int states, int chunks) {
- File report = new File(worldDirectory, "poweradvantage-migration-report.txt");
+ File report = new File(worldDirectory, "basepower-migration-report.txt");
if (report.exists()) return;
List lines = Arrays.asList(
"Advantage 1.14 legacy migration",
diff --git a/src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadata.java b/src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadata.java
new file mode 100644
index 00000000..ecca8515
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadata.java
@@ -0,0 +1,69 @@
+package zone.moddev.mc.basepower.migration;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+import cyano.poweradvantage.api.migration.LegacyMigrationApi;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtIo;
+import net.minecraft.nbt.StringTag;
+import net.minecraft.nbt.Tag;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraftforge.fml.ModList;
+
+/** Translate renamed mods before vanilla selects packs or Forge reads its saved mod list. */
+public final class LegacyWorldMetadata {
+ private LegacyWorldMetadata() {}
+
+ public static CompoundTag read(File levelDat) throws IOException {
+ CompoundTag root = NbtIo.readCompressed(levelDat);
+ remap(root, ModList.get()::isLoaded);
+ return root;
+ }
+
+ static void remap(CompoundTag root, Predicate loaded) {
+ ListTag mods = root.getCompound("fml").getList("LoadingModList", Tag.TAG_COMPOUND);
+ Set recordedMods = new HashSet<>();
+ for (int i = 0; i < mods.size(); ++i) recordedMods.add(mods.getCompound(i).getString("ModId"));
+ for (int i = 0; i < mods.size(); ++i) {
+ CompoundTag mod = mods.getCompound(i);
+ String id = mod.getString("ModId");
+ String target = target(id, loaded);
+ if (target.equals(id)) continue;
+ if (recordedMods.add(target)) mod.putString("ModId", target);
+ else mods.remove(i--);
+ }
+
+ CompoundTag packs = root.getCompound("Data").getCompound("DataPacks");
+ ListTag enabled = packs.getList("Enabled", Tag.TAG_STRING);
+ ListTag disabled = packs.getList("Disabled", Tag.TAG_STRING);
+ Set recordedPacks = new HashSet<>();
+ enabled.forEach(pack -> recordedPacks.add(pack.getAsString()));
+ disabled.forEach(pack -> recordedPacks.add(pack.getAsString()));
+ remapPacks(enabled, recordedPacks, loaded);
+ remapPacks(disabled, recordedPacks, loaded);
+ }
+
+ private static void remapPacks(ListTag packs, Set recorded, Predicate loaded) {
+ for (int i = 0; i < packs.size(); ++i) {
+ String pack = packs.getString(i);
+ if (!pack.startsWith("mod:")) continue;
+ String replacement = "mod:" + target(pack.substring(4), loaded);
+ if (replacement.equals(pack)) continue;
+ if (recorded.add(replacement)) packs.set(i, StringTag.valueOf(replacement));
+ else packs.remove(i--);
+ }
+ }
+
+ private static String target(String id, Predicate loaded) {
+ if (id.isEmpty() || id.indexOf(':') >= 0) return id;
+ ResourceLocation key = ResourceLocation.tryParse(id + ":metadata");
+ if (key == null) return id;
+ String replacement = LegacyMigrationApi.registryTarget(key).getNamespace();
+ return !replacement.equals(id) && loaded.test(replacement) && !loaded.test(id) ? replacement : id;
+ }
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemaps.java b/src/main/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemaps.java
similarity index 50%
rename from src/main/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemaps.java
rename to src/main/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemaps.java
index 5d04fde8..eafecda3 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemaps.java
+++ b/src/main/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemaps.java
@@ -1,36 +1,91 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
-import net.minecraft.entity.EntityType;
-import net.minecraft.entity.ai.brain.memory.MemoryModuleType;
-import net.minecraft.item.Item;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.SoundEvent;
-import net.minecraft.world.biome.Biome;
+import java.util.function.UnaryOperator;
+import cyano.poweradvantage.api.migration.LegacyMigrationApi;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.ai.memory.MemoryModuleType;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.item.enchantment.Enchantment;
+import net.minecraft.world.inventory.MenuType;
+import net.minecraft.world.item.crafting.RecipeSerializer;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.world.level.biome.Biome;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.registries.IForgeRegistryEntry;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.ForgeRegistries;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/** Vanilla's data fixers rename saved data, but not Forge's registry snapshot. */
public final class VanillaRegistryRemaps {
private VanillaRegistryRemaps() {}
public static void register() {
+ MinecraftForge.EVENT_BUS.addGenericListener(Block.class, VanillaRegistryRemaps::blocks);
MinecraftForge.EVENT_BUS.addGenericListener(Item.class, VanillaRegistryRemaps::items);
MinecraftForge.EVENT_BUS.addGenericListener(EntityType.class, VanillaRegistryRemaps::entities);
MinecraftForge.EVENT_BUS.addGenericListener(SoundEvent.class, VanillaRegistryRemaps::sounds);
MinecraftForge.EVENT_BUS.addGenericListener(Biome.class, VanillaRegistryRemaps::biomes);
MinecraftForge.EVENT_BUS.addGenericListener(MemoryModuleType.class, VanillaRegistryRemaps::memories);
+ MinecraftForge.EVENT_BUS.addGenericListener(BlockEntityType.class, VanillaRegistryRemaps::blockEntities);
+ MinecraftForge.EVENT_BUS.addGenericListener(Fluid.class, VanillaRegistryRemaps::fluids);
+ MinecraftForge.EVENT_BUS.addGenericListener(Enchantment.class, VanillaRegistryRemaps::enchantments);
+ MinecraftForge.EVENT_BUS.addGenericListener(MenuType.class, VanillaRegistryRemaps::menus);
+ MinecraftForge.EVENT_BUS.addGenericListener(RecipeSerializer.class, VanillaRegistryRemaps::recipeSerializers);
}
- private static void items(RegistryEvent.MissingMappings- event) { remap(event, ForgeRegistries.ITEMS); }
- private static void entities(RegistryEvent.MissingMappings> event) { remap(event, ForgeRegistries.ENTITIES); }
+ private static void blocks(RegistryEvent.MissingMappings event) {
+ remap(event, ForgeRegistries.BLOCKS);
+ remapAdvantage(event, ForgeRegistries.BLOCKS, LegacyMigrationApi::blockTarget);
+ }
+ private static void items(RegistryEvent.MissingMappings
- event) {
+ remap(event, ForgeRegistries.ITEMS);
+ remapAdvantage(event, ForgeRegistries.ITEMS, LegacyMigrationApi::itemTarget);
+ }
+ private static void entities(RegistryEvent.MissingMappings> event) {
+ remap(event, ForgeRegistries.ENTITIES);
+ remapAdvantage(event, ForgeRegistries.ENTITIES,
+ id -> new ResourceLocation(LegacyMigrationApi.entityTarget(id.toString())));
+ }
private static void sounds(RegistryEvent.MissingMappings event) { remap(event, ForgeRegistries.SOUND_EVENTS); }
private static void biomes(RegistryEvent.MissingMappings event) { remap(event, ForgeRegistries.BIOMES); }
private static void memories(RegistryEvent.MissingMappings> event) { remap(event, ForgeRegistries.MEMORY_MODULE_TYPES); }
+ private static void blockEntities(RegistryEvent.MissingMappings> event) {
+ remapAdvantage(event, ForgeRegistries.BLOCK_ENTITIES,
+ id -> new ResourceLocation(LegacyMigrationApi.tileTarget(id.toString())));
+ }
+ private static void fluids(RegistryEvent.MissingMappings event) {
+ remapAdvantage(event, ForgeRegistries.FLUIDS,
+ id -> new ResourceLocation(LegacyMigrationApi.fluidTarget(id.toString())));
+ }
+ private static void enchantments(RegistryEvent.MissingMappings event) {
+ remapAdvantage(event, ForgeRegistries.ENCHANTMENTS, LegacyMigrationApi::registryTarget);
+ }
+ private static void menus(RegistryEvent.MissingMappings> event) {
+ remapAdvantage(event, ForgeRegistries.CONTAINERS, LegacyMigrationApi::registryTarget);
+ }
+ private static void recipeSerializers(RegistryEvent.MissingMappings> event) {
+ remapAdvantage(event, ForgeRegistries.RECIPE_SERIALIZERS, LegacyMigrationApi::registryTarget);
+ }
+
+ private static > void remapAdvantage(RegistryEvent.MissingMappings event,
+ IForgeRegistry active, UnaryOperator replacement) {
+ for (RegistryEvent.MissingMappings.Mapping mapping : event.getAllMappings()) {
+ if (mapping.getAction() != RegistryEvent.MissingMappings.Action.DEFAULT) continue;
+ ResourceLocation target = replacement.apply(mapping.key);
+ if (!mapping.key.equals(target) && active.containsKey(target)) {
+ mapping.remap(active.getValue(target));
+ PowerAdvantage.LOGGER.info("Migrated Advantage registry entry {} to {}", mapping.key, target);
+ }
+ }
+ }
+
static > void remap(RegistryEvent.MissingMappings event, IForgeRegistry active) {
for (RegistryEvent.MissingMappings.Mapping mapping : event.getMappings("minecraft")) {
if (mapping.getAction() != RegistryEvent.MissingMappings.Action.DEFAULT) continue;
@@ -62,7 +117,10 @@ static boolean retiredTransientMemory(ResourceLocation registry, ResourceLocatio
static ResourceLocation replacement(ResourceLocation registry, ResourceLocation old) {
if (!"minecraft".equals(old.getNamespace())) return null;
String target = null;
- if (registry.equals(new ResourceLocation("minecraft:entity_type")) && old.getPath().equals("zombie_pigman")) {
+ if ((registry.equals(new ResourceLocation("minecraft:block")) || registry.equals(new ResourceLocation("minecraft:item")))
+ && old.getPath().equals("grass_path")) {
+ target = "dirt_path";
+ } else if (registry.equals(new ResourceLocation("minecraft:entity_type")) && old.getPath().equals("zombie_pigman")) {
target = "zombified_piglin";
} else if (registry.equals(new ResourceLocation("minecraft:item")) && old.getPath().equals("zombie_pigman_spawn_egg")) {
target = "zombified_piglin_spawn_egg";
@@ -74,6 +132,7 @@ static ResourceLocation replacement(ResourceLocation registry, ResourceLocation
}
// The former single Nether biome becomes Nether Wastes in 1.16.
if (old.getPath().equals("music.nether")) target = "music.nether.nether_wastes";
+ if (old.getPath().equals("item.sweet_berries.pick_from_bush")) target = "block.sweet_berry_bush.pick_berries";
}
return target == null ? null : new ResourceLocation("minecraft", target);
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/package-info.java b/src/main/java/zone/moddev/mc/basepower/package-info.java
similarity index 81%
rename from src/main/java/zone/moddev/mc/poweradvantage/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/package-info.java
index b594f496..e4cdd203 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/package-info.java
@@ -2,4 +2,4 @@
This package contains the main mod class. If you are making an add-on mod, you probably want to use
classes from the cyano.poweradvantage.api.simple package
*/
-package zone.moddev.mc.poweradvantage;
\ No newline at end of file
+package zone.moddev.mc.basepower;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPack.java b/src/main/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPack.java
new file mode 100644
index 00000000..87bf29bb
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPack.java
@@ -0,0 +1,94 @@
+package zone.moddev.mc.basepower.recipe;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Predicate;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.packs.PackResources;
+import net.minecraft.server.packs.PackType;
+import net.minecraft.server.packs.metadata.MetadataSectionSerializer;
+import net.minecraft.server.packs.metadata.pack.PackMetadataSection;
+import net.minecraftforge.fml.ModList;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.RecipeMode;
+
+/** Additive native tags: server policy is resolved and synchronized by vanilla. */
+final class MaterialPolicyPack implements PackResources {
+ private static final String NAME = "Power Advantage material aliases";
+ private final Map resources = new LinkedHashMap<>();
+
+ MaterialPolicyPack() {
+ // Pack instances are created for each reload, after common config loading.
+ this(PowerAdvantage.plasticIsAlsoRubber,
+ PowerAdvantage.recipeMode == RecipeMode.NORMAL && ModList.get().isLoaded("baseelectric"));
+ }
+
+ MaterialPolicyPack(boolean plasticIsRubber, boolean normalSolder) {
+ JsonArray rubber = new JsonArray();
+ if (plasticIsRubber) rubber.add("basepower:bioplastic_ingot");
+ put("rubber", rubber);
+ put("ingots/rubber", rubber);
+ JsonArray solder = new JsonArray();
+ if (normalSolder) {
+ for (String metal : new String[] {"lead", "tin", "silver"}) {
+ JsonObject optional = new JsonObject();
+ optional.addProperty("id", "#forge:ingots/" + metal);
+ optional.addProperty("required", false);
+ solder.add(optional);
+ }
+ }
+ put("solder", solder);
+ }
+
+ private void put(String path, JsonArray values) {
+ JsonObject tag = new JsonObject();
+ tag.addProperty("replace", false);
+ tag.add("values", values);
+ resources.put(new ResourceLocation("forge", "tags/items/" + path + ".json"), tag.toString());
+ }
+
+ @Override public InputStream getRootResource(String name) throws FileNotFoundException {
+ throw new FileNotFoundException(name);
+ }
+
+ @Override public InputStream getResource(PackType type, ResourceLocation id) throws FileNotFoundException {
+ if (!hasResource(type, id)) throw new FileNotFoundException(id.toString());
+ return new ByteArrayInputStream(resources.get(id).getBytes(StandardCharsets.UTF_8));
+ }
+
+ @Override public Collection getResources(PackType type, String namespace,
+ String prefix, int depth, Predicate filter) {
+ if (type != PackType.SERVER_DATA) return Collections.emptyList();
+ java.util.List found = new java.util.ArrayList<>();
+ for (ResourceLocation id : resources.keySet()) {
+ String path = id.getPath();
+ if (namespace.equals(id.getNamespace()) && path.startsWith(prefix + "/")
+ && filter.test(path.substring(path.lastIndexOf('/') + 1))) found.add(id);
+ }
+ return found;
+ }
+
+ @Override public boolean hasResource(PackType type, ResourceLocation id) {
+ return type == PackType.SERVER_DATA && resources.containsKey(id);
+ }
+ @Override public Set getNamespaces(PackType type) {
+ return type == PackType.SERVER_DATA ? Collections.singleton("forge") : Collections.emptySet();
+ }
+ @Override @SuppressWarnings("unchecked")
+ public T getMetadataSection(MetadataSectionSerializer serializer) {
+ return serializer == PackMetadataSection.SERIALIZER
+ ? (T)new PackMetadataSection(new TextComponent(NAME), 7) : null;
+ }
+ @Override public String getName() { return NAME; }
+ @Override public void close() {}
+}
diff --git a/src/main/java/zone/moddev/mc/basepower/recipe/MaterialTags.java b/src/main/java/zone/moddev/mc/basepower/recipe/MaterialTags.java
new file mode 100644
index 00000000..721cfbc7
--- /dev/null
+++ b/src/main/java/zone/moddev/mc/basepower/recipe/MaterialTags.java
@@ -0,0 +1,58 @@
+package zone.moddev.mc.basepower.recipe;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import net.minecraft.world.item.Item;
+import net.minecraft.tags.Tag;
+import net.minecraft.tags.TagCollection;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import net.minecraftforge.fml.ModList;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.RecipeMode;
+import zone.moddev.mc.basepower.init.Items;
+
+/** Config-dependent aliases resolved by the server's native tag reload. */
+public final class MaterialTags {
+ private MaterialTags() {}
+
+ public static void registerPack(net.minecraftforge.event.AddPackFindersEvent event) {
+ if (event.getPackType() != net.minecraft.server.packs.PackType.SERVER_DATA) return;
+ event.addRepositorySource((consumer, constructor) -> {
+ net.minecraft.server.packs.repository.Pack pack = net.minecraft.server.packs.repository.Pack.create(
+ "basepower:material_policy", true, MaterialPolicyPack::new, constructor,
+ net.minecraft.server.packs.repository.Pack.Position.BOTTOM,
+ net.minecraft.server.packs.repository.PackSource.BUILT_IN);
+ if (pack != null) consumer.accept(pack);
+ });
+ }
+
+ static TagCollection
- applyPolicy(TagCollection
- tags, Item plastic,
+ boolean rubber, boolean solder) {
+ if (!rubber && !solder) return tags;
+ Map> result = new LinkedHashMap<>(tags.getAllTags());
+ if (rubber) {
+ append(result, "forge:rubber", java.util.Collections.singleton(plastic));
+ append(result, "forge:ingots/rubber", java.util.Collections.singleton(plastic));
+ }
+ if (solder) {
+ for (String metal : new String[] {"lead", "tin", "silver"}) {
+ append(result, "forge:solder", tags.getTagOrEmpty(
+ new ResourceLocation("forge", "ingots/" + metal)).getValues());
+ }
+ }
+ return TagCollection.of(result);
+ }
+
+ private static void append(Map> tags, String name,
+ java.util.Collection
- additions) {
+ ResourceLocation id = new ResourceLocation(name);
+ Set
- values = new LinkedHashSet<>();
+ Tag
- existing = tags.get(id);
+ if (existing != null) values.addAll(existing.getValues());
+ for (Item item : additions) if (item != null) values.add(item);
+ tags.put(id, Tag.fromSet(values));
+ }
+}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/recipe/PartsLoot.java b/src/main/java/zone/moddev/mc/basepower/recipe/PartsLoot.java
similarity index 64%
rename from src/main/java/zone/moddev/mc/poweradvantage/recipe/PartsLoot.java
rename to src/main/java/zone/moddev/mc/basepower/recipe/PartsLoot.java
index 78b7c0b3..cc1bef70 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/recipe/PartsLoot.java
+++ b/src/main/java/zone/moddev/mc/basepower/recipe/PartsLoot.java
@@ -1,15 +1,15 @@
-package zone.moddev.mc.poweradvantage.recipe;
+package zone.moddev.mc.basepower.recipe;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.loot.ConstantRange;
-import net.minecraft.loot.LootPool;
-import net.minecraft.loot.TableLootEntry;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
+import net.minecraft.world.level.storage.loot.LootPool;
+import net.minecraft.world.level.storage.loot.entries.LootTableReference;
import net.minecraftforge.event.LootTableLoadEvent;
import net.minecraftforge.fml.ModList;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
/** Forge emits this event for bundled tables, leaving user data-pack tables untouched. */
public final class PartsLoot {
@@ -24,17 +24,17 @@ public static void onLoad(LootTableLoadEvent event) {
mod -> ModList.get().isLoaded(mod));
}
- static void addPools(net.minecraft.loot.LootTable table, ResourceLocation name,
+ static void addPools(net.minecraft.world.level.storage.loot.LootTable table, ResourceLocation name,
boolean enabled, java.util.function.Predicate loaded) {
if (!"minecraft".equals(name.getNamespace()) || !CHESTS.contains(name.getPath())
|| !enabled) return;
- for (String mod : new String[] {"poweradvantage", "steamadvantage", "electricadvantage"}) {
+ for (String mod : new String[] {"basepower", "basesteam", "baseelectric"}) {
if (!loaded.test(mod)
- || (mod.equals("poweradvantage") && name.getPath().equals("chests/end_city_treasure"))) continue;
+ || (mod.equals("basepower") && name.getPath().equals("chests/end_city_treasure"))) continue;
String poolName = mod + ":legacy_parts";
if (table.getPool(poolName) != null) continue;
- table.addPool(LootPool.lootPool().name(poolName) .setRolls(ConstantRange.exactly(1))
- .add(TableLootEntry.lootTableReference(new ResourceLocation(mod, "chests/advantage_parts"))).build());
+ table.addPool(LootPool.lootPool().name(poolName) .setRolls(ConstantValue.exactly(1))
+ .add(LootTableReference.lootTableReference(new ResourceLocation(mod, "chests/advantage_parts"))).build());
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeConditions.java b/src/main/java/zone/moddev/mc/basepower/recipe/RecipeConditions.java
similarity index 77%
rename from src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeConditions.java
rename to src/main/java/zone/moddev/mc/basepower/recipe/RecipeConditions.java
index bb129c3f..515af461 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeConditions.java
+++ b/src/main/java/zone/moddev/mc/basepower/recipe/RecipeConditions.java
@@ -1,15 +1,15 @@
-package zone.moddev.mc.poweradvantage.recipe;
+package zone.moddev.mc.basepower.recipe;
import com.google.gson.JsonObject;
import java.util.Locale;
import net.minecraft.tags.ItemTags;
-import net.minecraft.util.JSONUtils;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.GsonHelper;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.common.crafting.conditions.ICondition;
import net.minecraftforge.common.crafting.conditions.IConditionSerializer;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.RecipeMode;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import zone.moddev.mc.basepower.RecipeMode;
/** Registers the data-pack conditions used by PowerAdvantage recipe modes. */
public final class RecipeConditions {
@@ -40,8 +40,8 @@ private Condition(ResourceLocation id, String value) {
switch (id.getPath()) {
case "recipe_mode": return PowerAdvantage.recipeMode == RecipeMode.valueOf(value.toUpperCase(Locale.ROOT));
case "not_recipe_mode": return PowerAdvantage.recipeMode != RecipeMode.valueOf(value.toUpperCase(Locale.ROOT));
- case "tag_empty": return net.minecraft.tags.TagCollectionManager.getInstance().getItems().getTagOrEmpty(new ResourceLocation(value)).getValues().isEmpty();
- case "tag_not_empty": return !net.minecraft.tags.TagCollectionManager.getInstance().getItems().getTagOrEmpty(new ResourceLocation(value)).getValues().isEmpty();
+ case "tag_empty": return net.minecraft.tags.SerializationTags.getInstance().getOrEmpty(net.minecraft.core.Registry.ITEM_REGISTRY).getTagOrEmpty(new ResourceLocation(value)).getValues().isEmpty();
+ case "tag_not_empty": return !net.minecraft.tags.SerializationTags.getInstance().getOrEmpty(net.minecraft.core.Registry.ITEM_REGISTRY).getTagOrEmpty(new ResourceLocation(value)).getValues().isEmpty();
default: throw new IllegalStateException("Unknown Advantage condition " + id);
}
}
@@ -57,7 +57,7 @@ private Serializer(String name) {
}
@Override public ResourceLocation getID() { return id; }
- @Override public Condition read(JsonObject json) { return new Condition(id, JSONUtils.getAsString(json, key)); }
+ @Override public Condition read(JsonObject json) { return new Condition(id, GsonHelper.getAsString(json, key)); }
@Override public void write(JsonObject json, Condition condition) { json.addProperty(key, condition.value); }
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeDiscovery.java b/src/main/java/zone/moddev/mc/basepower/recipe/RecipeDiscovery.java
similarity index 72%
rename from src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeDiscovery.java
rename to src/main/java/zone/moddev/mc/basepower/recipe/RecipeDiscovery.java
index 7215be3d..08d0401f 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/recipe/RecipeDiscovery.java
+++ b/src/main/java/zone/moddev/mc/basepower/recipe/RecipeDiscovery.java
@@ -1,28 +1,28 @@
-package zone.moddev.mc.poweradvantage.recipe;
+package zone.moddev.mc.basepower.recipe;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.advancements.Advancement;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.item.crafting.IRecipe;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.event.entity.player.PlayerEvent;
/** Retains earned discoveries when recipe modes or material providers change. */
public final class RecipeDiscovery {
private static final Set NAMESPACES = new HashSet<>(Arrays.asList(
- "poweradvantage", "steamadvantage", "electricadvantage"));
+ "basepower", "basesteam", "baseelectric"));
private RecipeDiscovery() {}
public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
- if (!(event.getPlayer() instanceof ServerPlayerEntity)) return;
- ServerPlayerEntity player = (ServerPlayerEntity) event.getPlayer();
+ if (!(event.getPlayer() instanceof ServerPlayer)) return;
+ ServerPlayer player = (ServerPlayer) event.getPlayer();
// Disabled recipes have no reward to grant. Replay only already-earned
// discoveries when that exact recipe becomes available on a later login.
- for (IRecipe recipe : player.getServer().getRecipeManager().getRecipes()) {
+ for (Recipe recipe : player.getServer().getRecipeManager().getRecipes()) {
if (!NAMESPACES.contains(recipe.getId().getNamespace()) || recipe.isSpecial()
|| player .getRecipeBook().contains(recipe)) continue;
Advancement advancement = player.getServer().getAdvancements().getAdvancement(
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/FuelRegistry.java b/src/main/java/zone/moddev/mc/basepower/registry/FuelRegistry.java
similarity index 93%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/FuelRegistry.java
rename to src/main/java/zone/moddev/mc/basepower/registry/FuelRegistry.java
index b510345e..6b73b291 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/FuelRegistry.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/FuelRegistry.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.registry;
+package zone.moddev.mc.basepower.registry;
-import net.minecraft.block.Block;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.AbstractFurnaceTileEntity;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
import net.minecraftforge.event.ForgeEventFactory;
import java.util.*;
@@ -13,7 +13,7 @@
/**
* The fuel registry keeps track of the cooking time for new burnables added by PowerAdvantage. The
- * actual registration of these burnables occurs in
zone.moddev.mc.poweradvantage.init.Fuels
+ * actual registration of these burnables occurs in zone.moddev.mc.basepower.init.Fuels
* @author DrCyano
*
*/
@@ -142,8 +142,8 @@ public static short getActualBurntimeForItem(ItemStack fuel){
if(fuel == null || fuel.isEmpty()) return 0;
int custom = getInstance().getBurnTime(fuel);
if (custom > 0) return (short) Math.min(Short.MAX_VALUE, custom);
- Integer vanilla = AbstractFurnaceTileEntity.getFuel().get(fuel.getItem());
- int burnTime = ForgeEventFactory.getItemBurnTime(fuel, vanilla == null ? 0 : vanilla.intValue());
+ Integer vanilla = AbstractFurnaceBlockEntity.getFuel().get(fuel.getItem());
+ int burnTime = ForgeEventFactory.getItemBurnTime(fuel, vanilla == null ? 0 : vanilla.intValue(), net.minecraft.world.item.crafting.RecipeType.SMELTING);
return (short) Math.min(Short.MAX_VALUE, Math.max(0, burnTime));
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/ITileEntityGUI.java b/src/main/java/zone/moddev/mc/basepower/registry/ITileEntityGUI.java
similarity index 72%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/ITileEntityGUI.java
rename to src/main/java/zone/moddev/mc/basepower/registry/ITileEntityGUI.java
index b850b37c..ab581433 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/ITileEntityGUI.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/ITileEntityGUI.java
@@ -1,7 +1,7 @@
-package zone.moddev.mc.poweradvantage.registry;
+package zone.moddev.mc.basepower.registry;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -20,7 +20,7 @@ public interface ITileEntityGUI {
* @param player The player that is going to use the GUI
* @return An instance of net.minecraft.inventory.container.Container
*/
- public abstract net.minecraft.inventory.container.Container getContainer(TileEntity e, PlayerEntity player);
+ public abstract net.minecraft.world.inventory.AbstractContainerMenu getContainer(BlockEntity e, Player player);
/**
* Gets an instance of net.minecraft.client.gui.screen.inventory.ContainerScreen for
@@ -31,5 +31,5 @@ public interface ITileEntityGUI {
* @return An instance of net.minecraft.client.gui.screen.inventory.ContainerScreen
*/
@OnlyIn(Dist.CLIENT)
- public abstract net.minecraft.client.gui.screen.inventory.ContainerScreen getContainerGUI(TileEntity e, PlayerEntity player);
+ public abstract net.minecraft.client.gui.screens.inventory.AbstractContainerScreen getContainerGUI(BlockEntity e, Player player);
}
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/MachineGUIRegistry.java b/src/main/java/zone/moddev/mc/basepower/registry/MachineGUIRegistry.java
similarity index 54%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/MachineGUIRegistry.java
rename to src/main/java/zone/moddev/mc/basepower/registry/MachineGUIRegistry.java
index 2ca207ce..7843c737 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/MachineGUIRegistry.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/MachineGUIRegistry.java
@@ -1,30 +1,30 @@
-package zone.moddev.mc.poweradvantage.registry;
+package zone.moddev.mc.basepower.registry;
import cyano.poweradvantage.api.GUIBlock;
import cyano.poweradvantage.api.simple.SimpleMachineGUI;
-import net.minecraft.block.Block;
-import net.minecraft.client.gui.ScreenManager;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.entity.player.PlayerInventory;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.container.Container;
-import net.minecraft.inventory.container.ContainerType;
-import net.minecraft.inventory.container.INamedContainerProvider;
-import net.minecraft.network.PacketBuffer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.TranslationTextComponent;
-import net.minecraft.world.World;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.client.gui.screens.MenuScreens;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.Container;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.inventory.MenuType;
+import net.minecraft.world.MenuProvider;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.network.NetworkHooks;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import net.minecraftforge.fmllegacy.network.NetworkHooks;
+import zone.moddev.mc.basepower.PowerAdvantage;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -36,7 +36,7 @@ public final class MachineGUIRegistry {
private static final MachineGUIRegistry INSTANCE = new MachineGUIRegistry();
private static final AtomicInteger NEXT_ID = new AtomicInteger(1);
private static final Map DEFINITIONS = new ConcurrentHashMap<>();
- public static ContainerType TYPE;
+ public static MenuType TYPE;
private MachineGUIRegistry() {}
@@ -51,23 +51,23 @@ public static int addGUI(ITileEntityGUI gui) {
public void removeGUI(int id) { DEFINITIONS.remove(id); }
@SubscribeEvent
- public static void registerTypes(RegistryEvent.Register> event) {
+ public static void registerTypes(RegistryEvent.Register> event) {
TYPE = IForgeContainerType.create(MachineGUIRegistry::createClientContainer);
TYPE.setRegistryName(PowerAdvantage.MODID, "machine");
event.getRegistry().register(TYPE);
}
private static SimpleMachineGUI.Container createClientContainer(
- int windowId, PlayerInventory inventory, PacketBuffer data) {
+ int windowId, Inventory inventory, FriendlyByteBuf data) {
BlockPos pos = data.readBlockPos();
- World world = inventory.player.level;
- TileEntity tile = world.getBlockEntity(pos);
+ Level world = inventory.player.level;
+ BlockEntity tile = world.getBlockEntity(pos);
Block block = world.getBlockState(pos).getBlock();
- if (!(block instanceof GUIBlock) || !(tile instanceof IInventory)) {
+ if (!(block instanceof GUIBlock) || !(tile instanceof Container)) {
throw new IllegalStateException("Missing machine for container at " + pos);
}
// Resolve the local block's definition; numeric registration order is not a network identity.
- return definition(((GUIBlock) block).getGuiID()).createMenu(windowId, inventory, (IInventory) tile);
+ return definition(((GUIBlock) block).getGuiID()).createMenu(windowId, inventory, (Container) tile);
}
private static SimpleMachineGUI definition(int id) {
@@ -80,42 +80,42 @@ private static SimpleMachineGUI definition(int id) {
@OnlyIn(Dist.CLIENT)
public static void registerScreens() {
- ScreenManager.register(TYPE,
+ MenuScreens.register(TYPE,
(container, inventory, title) -> container.createScreen(inventory, title));
}
- public static void open(ServerPlayerEntity player, World world, BlockPos pos, int id) {
- TileEntity tile = world.getBlockEntity(pos);
- if (world.isClientSide || player.level != world || !(tile instanceof IInventory)) return;
+ public static void open(ServerPlayer player, Level world, BlockPos pos, int id) {
+ BlockEntity tile = world.getBlockEntity(pos);
+ if (world.isClientSide || player.level != world || !(tile instanceof Container)) return;
SimpleMachineGUI gui = definition(id);
- NetworkHooks.openGui(player, new INamedContainerProvider() {
- @Override public Container createMenu(int windowId, PlayerInventory inventory, PlayerEntity owner) {
- return gui.createMenu(windowId, inventory, (IInventory) tile);
+ NetworkHooks.openGui(player, new MenuProvider() {
+ @Override public AbstractContainerMenu createMenu(int windowId, Inventory inventory, Player owner) {
+ return gui.createMenu(windowId, inventory, (Container) tile);
}
- @Override public ITextComponent getDisplayName() {
+ @Override public Component getDisplayName() {
return menuTitle(tile, world.getBlockState(pos).getBlock());
}
}, pos);
}
- static ITextComponent menuTitle(TileEntity tile, Block block) {
- if (tile instanceof net.minecraft.util.INameable) {
- ITextComponent customName = ((net.minecraft.util.INameable) tile).getCustomName();
+ static Component menuTitle(BlockEntity tile, Block block) {
+ if (tile instanceof net.minecraft.world.Nameable) {
+ Component customName = ((net.minecraft.world.Nameable) tile).getCustomName();
if (customName != null) return customName;
}
- return new TranslationTextComponent(block.getDescriptionId());
+ return new TranslatableComponent(block.getDescriptionId());
}
- public Object getServerGuiElement(int id, PlayerEntity player, World world, int x, int y, int z) {
+ public Object getServerGuiElement(int id, Player player, Level world, int x, int y, int z) {
ITileEntityGUI gui = DEFINITIONS.get(id);
- TileEntity tile = world.getBlockEntity(new BlockPos(x, y, z));
+ BlockEntity tile = world.getBlockEntity(new BlockPos(x, y, z));
return gui == null || tile == null ? null : gui.getContainer(tile, player);
}
@OnlyIn(Dist.CLIENT)
- public Object getClientGuiElement(int id, PlayerEntity player, World world, int x, int y, int z) {
+ public Object getClientGuiElement(int id, Player player, Level world, int x, int y, int z) {
ITileEntityGUI gui = DEFINITIONS.get(id);
- TileEntity tile = world.getBlockEntity(new BlockPos(x, y, z));
+ BlockEntity tile = world.getBlockEntity(new BlockPos(x, y, z));
return gui == null || tile == null ? null : gui.getContainerGUI(tile, player);
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/package-info.java b/src/main/java/zone/moddev/mc/basepower/registry/package-info.java
similarity index 67%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/registry/package-info.java
index d71055ea..d22177c1 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/package-info.java
@@ -2,4 +2,4 @@
This package contains registry classes for registering content related to
PowerAdvantage.
*/
-package zone.moddev.mc.poweradvantage.registry;
\ No newline at end of file
+package zone.moddev.mc.basepower.registry;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipe.java b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipe.java
similarity index 97%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipe.java
rename to src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipe.java
index 5762008b..c0f848cb 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipe.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipe.java
@@ -1,10 +1,10 @@
-package zone.moddev.mc.poweradvantage.registry.still.recipe;
+package zone.moddev.mc.basepower.registry.still.recipe;
import java.util.Collection;
import java.util.LinkedList;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.core.Registry;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipeRegistry.java b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipeRegistry.java
similarity index 95%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipeRegistry.java
rename to src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipeRegistry.java
index 61b4b6a1..5015b2a6 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/DistillationRecipeRegistry.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/DistillationRecipeRegistry.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.registry.still.recipe;
+package zone.moddev.mc.basepower.registry.still.recipe;
import java.util.ArrayList;
import java.util.HashMap;
@@ -7,12 +7,12 @@
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import net.minecraft.fluid.Fluid;
+import zone.moddev.mc.basepower.PowerAdvantage;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import zone.moddev.mc.poweradvantage.init.Fluids;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import zone.moddev.mc.basepower.init.Fluids;
/**
* This class handles all of the recipes for machines that "smelt" fluids.
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/ExplicitFluidReference.java b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/ExplicitFluidReference.java
similarity index 90%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/ExplicitFluidReference.java
rename to src/main/java/zone/moddev/mc/basepower/registry/still/recipe/ExplicitFluidReference.java
index d3d6e5e2..716b7ffa 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/ExplicitFluidReference.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/ExplicitFluidReference.java
@@ -1,8 +1,8 @@
-package zone.moddev.mc.poweradvantage.registry.still.recipe;
+package zone.moddev.mc.basepower.registry.still.recipe;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
/**
* Implementation of FluidReference that compares specific fluids (fluids of same name but different
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/FluidReference.java b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/FluidReference.java
similarity index 95%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/FluidReference.java
rename to src/main/java/zone/moddev/mc/basepower/registry/still/recipe/FluidReference.java
index ac62fc97..56c2c05b 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/FluidReference.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/FluidReference.java
@@ -1,6 +1,6 @@
-package zone.moddev.mc.poweradvantage.registry.still.recipe;
+package zone.moddev.mc.basepower.registry.still.recipe;
-import net.minecraft.fluid.Fluid;
+import net.minecraft.world.level.material.Fluid;
import cyano.poweradvantage.api.fluid.FluidStack;
/**
* This is a simple class used to identify fluids by either registry name or explicit object
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/RegistryNameFluidReference.java b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/RegistryNameFluidReference.java
similarity index 87%
rename from src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/RegistryNameFluidReference.java
rename to src/main/java/zone/moddev/mc/basepower/registry/still/recipe/RegistryNameFluidReference.java
index 447161d3..e539c931 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/registry/still/recipe/RegistryNameFluidReference.java
+++ b/src/main/java/zone/moddev/mc/basepower/registry/still/recipe/RegistryNameFluidReference.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.registry.still.recipe;
+package zone.moddev.mc.basepower.registry.still.recipe;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import zone.moddev.mc.poweradvantage.init.Fluids;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
+import zone.moddev.mc.basepower.init.Fluids;
public class RegistryNameFluidReference extends FluidReference {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/AdvantageFluidAdapter.java b/src/main/java/zone/moddev/mc/basepower/util/AdvantageFluidAdapter.java
similarity index 91%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/AdvantageFluidAdapter.java
rename to src/main/java/zone/moddev/mc/basepower/util/AdvantageFluidAdapter.java
index cfd65bca..e7faf21d 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/AdvantageFluidAdapter.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/AdvantageFluidAdapter.java
@@ -1,21 +1,21 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTankInfo;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
/** A side-bound foreign capability; reacquire it after removal or capability invalidation. */
final class AdvantageFluidAdapter implements IAdvantageFluidHandler {
- private final TileEntity tile;
+ private final BlockEntity tile;
private final Direction side;
- AdvantageFluidAdapter(TileEntity tile, Direction side) {
+ AdvantageFluidAdapter(BlockEntity tile, Direction side) {
this.tile = tile;
this.side = side;
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidContainerHelper.java b/src/main/java/zone/moddev/mc/basepower/util/FluidContainerHelper.java
similarity index 58%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/FluidContainerHelper.java
rename to src/main/java/zone/moddev/mc/basepower/util/FluidContainerHelper.java
index c6b37316..5c9360b8 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidContainerHelper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/FluidContainerHelper.java
@@ -1,28 +1,28 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.item.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Hand;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.core.Direction;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.core.Registry;
/** Uses Forge's container handling for buckets and capability-based fluid containers. */
public final class FluidContainerHelper {
private FluidContainerHelper() {}
- public static boolean interact(PlayerEntity player, Hand hand,
+ public static boolean interact(Player player, InteractionHand hand,
IAdvantageFluidHandler handler, Direction face) {
if (player.level.isClientSide) return false;
return net.minecraftforge.fluids.FluidUtil.interactWithFluidHandler(player, hand,
new ForgeFluidAdapter(handler, face, () -> {
- if (handler instanceof net.minecraft.tileentity.TileEntity)
- ((net.minecraft.tileentity.TileEntity) handler).setChanged();
+ if (handler instanceof net.minecraft.world.level.block.entity.BlockEntity)
+ ((net.minecraft.world.level.block.entity.BlockEntity) handler).setChanged();
}));
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidHandlerHelper.java b/src/main/java/zone/moddev/mc/basepower/util/FluidHandlerHelper.java
similarity index 68%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/FluidHandlerHelper.java
rename to src/main/java/zone/moddev/mc/basepower/util/FluidHandlerHelper.java
index 27aeb4c9..e904588d 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidHandlerHelper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/FluidHandlerHelper.java
@@ -1,21 +1,21 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
/** Looks up the stable Advantage fluid handler exposed by local machines. */
public final class FluidHandlerHelper {
private FluidHandlerHelper() {}
- public static IAdvantageFluidHandler getHandler(TileEntity tileEntity, Direction face) {
+ public static IAdvantageFluidHandler getHandler(BlockEntity tileEntity, Direction face) {
if (tileEntity == null || tileEntity.isRemoved()) return null;
if (tileEntity instanceof IAdvantageFluidHandler) return (IAdvantageFluidHandler) tileEntity;
return tileEntity.getCapability(net.minecraftforge.fluids.capability.CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, face).isPresent()
? new AdvantageFluidAdapter(tileEntity, face) : null;
}
- public static boolean hasHandler(TileEntity tileEntity, Direction face) {
+ public static boolean hasHandler(BlockEntity tileEntity, Direction face) {
return getHandler(tileEntity, face) != null;
}
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidIdHelper.java b/src/main/java/zone/moddev/mc/basepower/util/FluidIdHelper.java
similarity index 80%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/FluidIdHelper.java
rename to src/main/java/zone/moddev/mc/basepower/util/FluidIdHelper.java
index b0429f59..45f122c2 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/FluidIdHelper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/FluidIdHelper.java
@@ -1,8 +1,8 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.Registry;
public final class FluidIdHelper {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapter.java b/src/main/java/zone/moddev/mc/basepower/util/ForgeFluidAdapter.java
similarity index 98%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapter.java
rename to src/main/java/zone/moddev/mc/basepower/util/ForgeFluidAdapter.java
index 91ecbaad..a6418031 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapter.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/ForgeFluidAdapter.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTankInfo;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.util.Direction;
+import net.minecraft.core.Direction;
import net.minecraftforge.fluids.capability.IFluidHandler;
/** Exposes the stable Advantage contract through Forge's native fluid capability. */
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/HashCodeHelper.java b/src/main/java/zone/moddev/mc/basepower/util/HashCodeHelper.java
similarity index 96%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/HashCodeHelper.java
rename to src/main/java/zone/moddev/mc/basepower/util/HashCodeHelper.java
index efed6360..c7b3a122 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/HashCodeHelper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/HashCodeHelper.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
public abstract class HashCodeHelper {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/InventoryLocks.java b/src/main/java/zone/moddev/mc/basepower/util/InventoryLocks.java
similarity index 65%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/InventoryLocks.java
rename to src/main/java/zone/moddev/mc/basepower/util/InventoryLocks.java
index 2e66edf8..081a5be8 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/InventoryLocks.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/InventoryLocks.java
@@ -1,20 +1,20 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import java.lang.reflect.Field;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.LockableTileEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.entity.BaseContainerBlockEntity;
import net.minecraft.world.LockCode;
-import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
+import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
/** Keeps automation from bypassing vanilla container locks. */
public final class InventoryLocks {
// Ordinary inventories need no vanilla field access or Forge name remapper.
private static final class Fields {
- static final Field CODE = ObfuscationReflectionHelper.findField(LockableTileEntity.class, "field_174901_a");
+ static final Field CODE = ObfuscationReflectionHelper.findField(BaseContainerBlockEntity.class, "f_58621_");
static final Field FIRST = ObfuscationReflectionHelper.findField(
- net.minecraft.inventory.DoubleSidedInventory.class, "field_70477_b");
+ net.minecraft.world.CompoundContainer.class, "f_18910_");
static final Field SECOND = ObfuscationReflectionHelper.findField(
- net.minecraft.inventory.DoubleSidedInventory.class, "field_70478_c");
+ net.minecraft.world.CompoundContainer.class, "f_18911_");
}
private InventoryLocks() {}
@@ -22,9 +22,9 @@ private InventoryLocks() {}
public static boolean isLocked(Object inventory) {
if (inventory instanceof InventoryWrapper) return ((InventoryWrapper) inventory).isLocked();
try {
- if (inventory instanceof net.minecraft.inventory.DoubleSidedInventory)
+ if (inventory instanceof net.minecraft.world.CompoundContainer)
return isLocked(Fields.FIRST.get(inventory)) || isLocked(Fields.SECOND.get(inventory));
- return inventory instanceof LockableTileEntity
+ return inventory instanceof BaseContainerBlockEntity
&& !((LockCode) Fields.CODE.get(inventory)) .unlocksWith(ItemStack.EMPTY);
} catch (IllegalAccessException failure) {
throw new IllegalStateException("Cannot inspect vanilla inventory lock", failure);
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/InventoryWrapper.java b/src/main/java/zone/moddev/mc/basepower/util/InventoryWrapper.java
similarity index 57%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/InventoryWrapper.java
rename to src/main/java/zone/moddev/mc/basepower/util/InventoryWrapper.java
index 2957a9ca..d0aef060 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/InventoryWrapper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/InventoryWrapper.java
@@ -1,41 +1,41 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.inventory.Inventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Direction;
-import net.minecraft.util.INameable;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.Container;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.SimpleContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.core.Direction;
+import net.minecraft.world.Nameable;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
/** Gives ordinary inventories the sided interface used by conveyors. */
-public class InventoryWrapper implements ISidedInventory, INameable {
+public class InventoryWrapper implements WorldlyContainer, Nameable {
private static final int[] NO_SLOTS = new int[0];
private static final InventoryWrapper NULL_INVENTORY = new InventoryWrapper();
- private final IInventory inventory;
+ private final Container inventory;
private final int[] slots;
- protected InventoryWrapper() { this(new Inventory(0)); }
+ protected InventoryWrapper() { this(new SimpleContainer(0)); }
- protected InventoryWrapper(IInventory inventory) {
+ protected InventoryWrapper(Container inventory) {
this.inventory = inventory;
slots = new int[inventory.getContainerSize()];
for (int i = 0; i < slots.length; i++) slots[i] = i;
}
- public static ISidedInventory wrap(IInventory inventory) {
+ public static WorldlyContainer wrap(Container inventory) {
if (inventory == null) return NULL_INVENTORY;
- return inventory instanceof ISidedInventory ? (ISidedInventory) inventory : new InventoryWrapper(inventory);
+ return inventory instanceof WorldlyContainer ? (WorldlyContainer) inventory : new InventoryWrapper(inventory);
}
public boolean isLocked() { return InventoryLocks.isLocked(inventory); }
- @Override public ITextComponent getName() {
- return inventory instanceof INameable ? ((INameable) inventory).getName() : new StringTextComponent("Inventory");
+ @Override public Component getName() {
+ return inventory instanceof Nameable ? ((Nameable) inventory).getName() : new TextComponent("Inventory");
}
- @Override public ITextComponent getCustomName() {
- return inventory instanceof INameable ? ((INameable) inventory).getCustomName() : null;
+ @Override public Component getCustomName() {
+ return inventory instanceof Nameable ? ((Nameable) inventory).getCustomName() : null;
}
@Override public void clearContent() { inventory.clearContent(); }
@Override public boolean isEmpty() { return inventory.isEmpty(); }
@@ -46,11 +46,11 @@ public static ISidedInventory wrap(IInventory inventory) {
@Override public ItemStack removeItemNoUpdate(int slot) { return inventory.removeItemNoUpdate(slot); }
@Override public void setItem(int slot, ItemStack stack) { inventory.setItem(slot, stack); }
@Override public boolean canPlaceItem(int slot, ItemStack stack) { return inventory.canPlaceItem(slot, stack); }
- @Override public boolean stillValid(PlayerEntity player) {
+ @Override public boolean stillValid(Player player) {
return slots.length != 0 && inventory.stillValid(player);
}
- @Override public void startOpen(PlayerEntity player) { inventory.startOpen(player); }
- @Override public void stopOpen(PlayerEntity player) { inventory.stopOpen(player); }
+ @Override public void startOpen(Player player) { inventory.startOpen(player); }
+ @Override public void stopOpen(Player player) { inventory.stopOpen(player); }
@Override public void setChanged() { inventory.setChanged(); }
@Override public int[] getSlotsForFace(Direction face) { return isLocked() ? NO_SLOTS : slots; }
@Override public boolean canPlaceItemThroughFace(int slot, ItemStack stack, Direction face) {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/MachineCapabilities.java b/src/main/java/zone/moddev/mc/basepower/util/MachineCapabilities.java
similarity index 75%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/MachineCapabilities.java
rename to src/main/java/zone/moddev/mc/basepower/util/MachineCapabilities.java
index 4ae0301b..6551a015 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/MachineCapabilities.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/MachineCapabilities.java
@@ -1,12 +1,12 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
import java.util.HashMap;
import java.util.Map;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.ISidedInventory;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
+import net.minecraft.world.Container;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
@@ -16,12 +16,12 @@
/** Lazily built sided adapters, discarded when a machine is removed or unloaded. */
public final class MachineCapabilities {
- private final TileEntity owner;
+ private final BlockEntity owner;
private final Map> fluids = new HashMap<>();
private final Map> items = new HashMap<>();
private boolean valid = true;
- public MachineCapabilities(TileEntity owner) { this.owner = owner; }
+ public MachineCapabilities(BlockEntity owner) { this.owner = owner; }
public LazyOptional get(Capability capability, Direction face) {
if (!valid || owner.isRemoved()) return LazyOptional.empty();
@@ -29,9 +29,9 @@ public LazyOptional get(Capability capability, Direction face) {
return fluids.computeIfAbsent(face, side -> LazyOptional.of(() ->
new ForgeFluidAdapter((IAdvantageFluidHandler) owner, side, owner::setChanged))).cast();
}
- if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && owner instanceof IInventory) {
- return items.computeIfAbsent(face, side -> LazyOptional.of(() -> side != null && owner instanceof ISidedInventory
- ? new SidedInvWrapper((ISidedInventory) owner, side) : new InvWrapper((IInventory) owner))).cast();
+ if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && owner instanceof Container) {
+ return items.computeIfAbsent(face, side -> LazyOptional.of(() -> side != null && owner instanceof WorldlyContainer
+ ? new SidedInvWrapper((WorldlyContainer) owner, side) : new InvWrapper((Container) owner))).cast();
}
return LazyOptional.empty();
}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/PowerHelper.java b/src/main/java/zone/moddev/mc/basepower/util/PowerHelper.java
similarity index 76%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/PowerHelper.java
rename to src/main/java/zone/moddev/mc/basepower/util/PowerHelper.java
index 0b1b170e..5b6b7db8 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/PowerHelper.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/PowerHelper.java
@@ -1,11 +1,11 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
+import zone.moddev.mc.basepower.PowerAdvantage;
import cyano.poweradvantage.api.ITypedConduit;
import cyano.poweradvantage.api.PowerConnectorContext;
-import net.minecraft.block.ITileEntityProvider;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.block.EntityBlock;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.core.Direction;
import net.minecraftforge.energy.CapabilityEnergy;
/**
@@ -27,9 +27,9 @@ public static boolean areConnectable(PowerConnectorContext connection) {
// both blocks are Power Advantage conductors
return ((ITypedConduit) connection.thisBlock.getBlock()).canAcceptConnection(connection)
&& ((ITypedConduit) connection.otherBlock.getBlock()).canAcceptConnection(connection.reverse());
- } else if (connection.otherBlock.getBlock() instanceof ITileEntityProvider
+ } else if (connection.otherBlock.getBlock() instanceof EntityBlock
&& PowerAdvantage.forgeEnergyConversionTable.containsKey(connection.powerType)) {
- TileEntity tile = connection.world.getBlockEntity(connection.otherBlockPosition);
+ BlockEntity tile = connection.world.getBlockEntity(connection.otherBlockPosition);
if (tile == null) return false;
for (Direction side : Direction.values()) {
if (tile.getCapability(CapabilityEnergy.ENERGY, side).isPresent()) return true;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleHashMap.java b/src/main/java/zone/moddev/mc/basepower/util/ReversibleHashMap.java
similarity index 97%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleHashMap.java
rename to src/main/java/zone/moddev/mc/basepower/util/ReversibleHashMap.java
index f9df4fe0..0ff74bf7 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleHashMap.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/ReversibleHashMap.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import java.util.Collection;
import java.util.Map;
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleMap.java b/src/main/java/zone/moddev/mc/basepower/util/ReversibleMap.java
similarity index 81%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleMap.java
rename to src/main/java/zone/moddev/mc/basepower/util/ReversibleMap.java
index d8b39b04..fce0f4ca 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/ReversibleMap.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/ReversibleMap.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
public interface ReversibleMap extends java.util.Map {
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/util/package-info.java b/src/main/java/zone/moddev/mc/basepower/util/package-info.java
similarity index 55%
rename from src/main/java/zone/moddev/mc/poweradvantage/util/package-info.java
rename to src/main/java/zone/moddev/mc/basepower/util/package-info.java
index 8346da0c..e2fb4a05 100644
--- a/src/main/java/zone/moddev/mc/poweradvantage/util/package-info.java
+++ b/src/main/java/zone/moddev/mc/basepower/util/package-info.java
@@ -3,4 +3,4 @@
This package contains helper classes.
*/
-package zone.moddev.mc.poweradvantage.util;
\ No newline at end of file
+package zone.moddev.mc.basepower.util;
\ No newline at end of file
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/client/ClientOilRenderer.java b/src/main/java/zone/moddev/mc/poweradvantage/client/ClientOilRenderer.java
deleted file mode 100644
index 71680232..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/client/ClientOilRenderer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package zone.moddev.mc.poweradvantage.client;
-
-import net.minecraft.client.renderer.texture.AtlasTexture;
-import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.renderer.RenderTypeLookup;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.api.distmarker.OnlyIn;
-import net.minecraftforge.client.event.TextureStitchEvent;
-import net.minecraftforge.common.MinecraftForge;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-
-/** Forge FluidAttributes handle rendering; only the custom atlas sprites need stitching. */
-@OnlyIn(Dist.CLIENT)
-public final class ClientOilRenderer {
- private ClientOilRenderer() {}
-
- public static void register() {
- MinecraftForge.EVENT_BUS.addListener(ClientOilRenderer::stitch);
- }
-
- public static void configureRenderLayers() {
- RenderTypeLookup.setRenderLayer(zone.moddev.mc.poweradvantage.init.Blocks.steel_frame,
- RenderType.cutout());
- for (net.minecraft.fluid.Fluid fluid : new net.minecraft.fluid.Fluid[] {
- zone.moddev.mc.poweradvantage.init.Fluids.crude_oil,
- zone.moddev.mc.poweradvantage.init.Fluids.flowing_crude_oil,
- zone.moddev.mc.poweradvantage.init.Fluids.refined_oil,
- zone.moddev.mc.poweradvantage.init.Fluids.flowing_refined_oil}) {
- RenderTypeLookup.setRenderLayer(fluid, RenderType.translucent());
- }
- RenderTypeLookup.setRenderLayer(zone.moddev.mc.poweradvantage.init.Blocks.crude_oil_block,
- RenderType.translucent());
- RenderTypeLookup.setRenderLayer(zone.moddev.mc.poweradvantage.init.Blocks.refined_oil_block,
- RenderType.translucent());
- }
-
- private static void stitch(TextureStitchEvent.Pre event) {
- if (!AtlasTexture.LOCATION_BLOCKS.equals(event.getMap().location())) return;
- for (String name : new String[] {"crude_oil_still", "crude_oil_flow", "refined_oil_still", "refined_oil_flow"}) {
- event.addSprite(new ResourceLocation(PowerAdvantage.MODID, "blocks/" + name));
- }
- }
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityBlockFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityBlockFilter.java
deleted file mode 100644
index addda744..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityBlockFilter.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import net.minecraft.item.BlockItem;
-import net.minecraft.item.ItemStack;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntityBlockFilter extends TileEntityConveyorFilter {
- public TileEntityBlockFilter() { super(Entities.FILTER_BLOCK, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null) return false;
- return item.getItem() instanceof BlockItem;
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFoodFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFoodFilter.java
deleted file mode 100644
index 727d2b78..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFoodFilter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import net.minecraft.item.ItemStack;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntityFoodFilter extends TileEntityConveyorFilter {
- public TileEntityFoodFilter() { super(Entities.FILTER_FOOD, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null) return false;
- return !item.isEmpty() && item.getItem().isEdible();
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFuelFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFuelFilter.java
deleted file mode 100644
index 821382e1..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityFuelFilter.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.AbstractFurnaceTileEntity;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntityFuelFilter extends TileEntityConveyorFilter {
- public TileEntityFuelFilter() { super(Entities.FILTER_FUEL, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null) return false;
- return AbstractFurnaceTileEntity.isFuel(item);
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOverflowFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOverflowFilter.java
deleted file mode 100644
index 59d11d0e..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityOverflowFilter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import zone.moddev.mc.poweradvantage.util.InventoryWrapper;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntityOverflowFilter extends TileEntityConveyorFilter {
- public TileEntityOverflowFilter() { super(Entities.FILTER_OVERFLOW, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null || item.getItem() == null) return false;
- boolean canDrop = canInsert(item, Direction.DOWN);
- boolean canPass = canInsert(item, this.getFacing());
- if (canPass) {
- return canDrop;
- } else {
- return true;
- }
- }
-
- private boolean canInsert(ItemStack item, Direction f) {
- TileEntity target = getLevel().getBlockEntity(getBlockPos().relative(f));
- if (target instanceof IInventory) {
- return canInsertItemInto(item, InventoryWrapper.wrap((IInventory) target), f.getOpposite());
- } else {
- return false;
- }
- }
-
- @Override
- protected boolean isValidItemFor(ItemStack item, TileEntity target, Direction side) {
- // do all of the logic in the matchesFilter method
- return true;
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityPlantFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityPlantFilter.java
deleted file mode 100644
index 74fe9856..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntityPlantFilter.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.IGrowable;
-import net.minecraft.item.BlockItem;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.IPlantable;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntityPlantFilter extends TileEntityConveyorFilter {
- public TileEntityPlantFilter() { super(Entities.FILTER_PLANT, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null) return false;
- if (item.getItem() instanceof IPlantable) return true;
- if (item.getItem() instanceof BlockItem) {
- Block b = ((BlockItem) item.getItem()).getBlock();
- if (b instanceof IPlantable) return true;
- if (b instanceof IGrowable) return true;
-
- }
- return false;
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntitySmeltableFilter.java b/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntitySmeltableFilter.java
deleted file mode 100644
index 60cb6b68..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/machines/conveyors/TileEntitySmeltableFilter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
-
-import net.minecraft.inventory.Inventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.item.crafting.IRecipeType;
-import zone.moddev.mc.poweradvantage.init.Entities;
-
-public class TileEntitySmeltableFilter extends TileEntityConveyorFilter {
- public TileEntitySmeltableFilter() { super(Entities.FILTER_SMELT, 1); }
-
- @Override
- public boolean matchesFilter(ItemStack item) {
- if (item == null || item.isEmpty() || level == null) return false;
- Inventory probe = new Inventory(1);
- probe.setItem(0, item.copy());
- return level.getRecipeManager().getRecipeFor(IRecipeType.SMELTING, probe, level).isPresent();
- }
-
-}
diff --git a/src/main/java/zone/moddev/mc/poweradvantage/recipe/MaterialTags.java b/src/main/java/zone/moddev/mc/poweradvantage/recipe/MaterialTags.java
deleted file mode 100644
index 09fc4cc6..00000000
--- a/src/main/java/zone/moddev/mc/poweradvantage/recipe/MaterialTags.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package zone.moddev.mc.poweradvantage.recipe;
-
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-import net.minecraft.item.Item;
-import net.minecraft.tags.ITag;
-import net.minecraft.tags.ITagCollection;
-import net.minecraft.tags.TagCollectionReader;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.Registry;
-import net.minecraftforge.event.AddReloadListenerEvent;
-import net.minecraftforge.fml.ModList;
-import zone.moddev.mc.poweradvantage.PowerAdvantage;
-import zone.moddev.mc.poweradvantage.RecipeMode;
-import zone.moddev.mc.poweradvantage.init.Items;
-
-/** Config-dependent aliases resolved by the server's native tag reload. */
-public final class MaterialTags {
- private MaterialTags() {}
-
- public static void installReader(AddReloadListenerEvent event) {
- // The event runs during construction, before the first reload starts.
- // Clients receive the server's resolved tags and never apply local policy.
- event.getDataPackRegistries().tagManager.items = new TagCollectionReader- (
- Registry.ITEM::getOptional, "tags/items", "item") {
- @Override public ITagCollection
- load(Map builders) {
- ITagCollection
- tags = super.load(builders);
- if (ModList.get() == null || Items.bioplastic_ingot == null) return tags;
- return applyPolicy(tags, Items.bioplastic_ingot, PowerAdvantage.plasticIsAlsoRubber,
- PowerAdvantage.recipeMode == RecipeMode.NORMAL
- && ModList.get().isLoaded("electricadvantage"));
- }
- };
- }
-
- static ITagCollection
- applyPolicy(ITagCollection
- tags, Item plastic,
- boolean rubber, boolean solder) {
- if (!rubber && !solder) return tags;
- Map> result = new LinkedHashMap<>(tags.getAllTags());
- if (rubber) {
- append(result, "forge:rubber", java.util.Collections.singleton(plastic));
- append(result, "forge:ingots/rubber", java.util.Collections.singleton(plastic));
- }
- if (solder) {
- for (String metal : new String[] {"lead", "tin", "silver"}) {
- append(result, "forge:solder", tags.getTagOrEmpty(
- new ResourceLocation("forge", "ingots/" + metal)).getValues());
- }
- }
- return ITagCollection.of(result);
- }
-
- private static void append(Map> tags, String name,
- java.util.Collection
- additions) {
- ResourceLocation id = new ResourceLocation(name);
- Set
- values = new LinkedHashSet<>();
- ITag
- existing = tags.get(id);
- if (existing != null) values.addAll(existing.getValues());
- for (Item item : additions) if (item != null) values.add(item);
- tags.put(id, ITag.fromSet(values));
- }
-}
diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg
index 01812572..b133ff28 100644
--- a/src/main/resources/META-INF/accesstransformer.cfg
+++ b/src/main/resources/META-INF/accesstransformer.cfg
@@ -1,3 +1,2 @@
-# Install the config-dependent item tag reader before the native reload begins.
-public net.minecraft.resources.DataPackRegistries tagManager
-public net.minecraft.tags.NetworkTagManager items
+# Install legacy numeric IDs before vanilla flattens pre-1.13 block states.
+public-f net.minecraft.util.datafix.fixes.BlockStateData f_14934_
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index 0438a0c6..d8b89c00 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -1,38 +1,38 @@
modLoader="javafml"
loaderVersion="${loader_version_range}"
license="LGPL-3.0-only"
-issueTrackerURL="https://github.com/MinecraftModDevelopmentMods/PowerAdvantage/issues"
+issueTrackerURL="https://github.com/MinecraftModDevelopmentMods/basePower/issues"
[[mods]]
-modId="poweradvantage"
+modId="basepower"
version="${version}"
-displayName="Power Advantage"
-displayURL="https://www.curseforge.com/minecraft/mc-mods/power-advantage"
+displayName="basePower"
+displayURL="https://www.curseforge.com/minecraft/mc-mods/basepower"
authors="DrCyano (aka Cyanobacterium), the MMD Team"
description='''API and shared machines for pressure, electricity, quantum power, fluids, and item transport.'''
-[[dependencies.poweradvantage]]
+[[dependencies.basepower]]
modId="basemetals"
mandatory=false
-versionRange="[3.1.1.116051,4.0.0)"
+versionRange="[3.1.1.117011,4.0.0)"
ordering="AFTER"
side="BOTH"
-[[dependencies.poweradvantage]]
+[[dependencies.basepower]]
modId="orespawn"
mandatory=true
-versionRange="[4.1.0.116051,5.0.0)"
+versionRange="[4.1.0.117011,5.0.0)"
ordering="AFTER"
side="BOTH"
-[[dependencies.poweradvantage]]
+[[dependencies.basepower]]
modId="forge"
mandatory=true
versionRange="${forge_version_range}"
ordering="NONE"
side="BOTH"
-[[dependencies.poweradvantage]]
+[[dependencies.basepower]]
modId="minecraft"
mandatory=true
versionRange="${minecraft_version_range}"
diff --git a/src/main/resources/assets/basepower/blockstates/converter_rf_electricity.json b/src/main/resources/assets/basepower/blockstates/converter_rf_electricity.json
new file mode 100644
index 00000000..1ee2e9b8
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/converter_rf_electricity.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/converter_rf_electricity",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/converter_rf_electricity"
+ },
+ "facing=south": {
+ "model": "basepower:block/converter_rf_electricity",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/converter_rf_electricity",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/converter_rf_quantum.json b/src/main/resources/assets/basepower/blockstates/converter_rf_quantum.json
new file mode 100644
index 00000000..77622a74
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/converter_rf_quantum.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/converter_rf_quantum",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/converter_rf_quantum"
+ },
+ "facing=south": {
+ "model": "basepower:block/converter_rf_quantum",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/converter_rf_quantum",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/converter_rf_steam.json b/src/main/resources/assets/basepower/blockstates/converter_rf_steam.json
new file mode 100644
index 00000000..d78155d1
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/converter_rf_steam.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/converter_rf_steam",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/converter_rf_steam"
+ },
+ "facing=south": {
+ "model": "basepower:block/converter_rf_steam",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/converter_rf_steam",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/converter_tr_electricity.json b/src/main/resources/assets/basepower/blockstates/converter_tr_electricity.json
new file mode 100644
index 00000000..05a2a458
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/converter_tr_electricity.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/converter_tr_electricity",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/converter_tr_electricity"
+ },
+ "facing=south": {
+ "model": "basepower:block/converter_tr_electricity",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/converter_tr_electricity",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/crude_oil.json b/src/main/resources/assets/basepower/blockstates/crude_oil.json
new file mode 100644
index 00000000..5a992550
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/crude_oil.json
@@ -0,0 +1,5 @@
+{
+ "variants": {
+ "": { "model": "basepower:block/crude_oil" }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/fluid_discharge.json b/src/main/resources/assets/basepower/blockstates/fluid_discharge.json
new file mode 100644
index 00000000..6c37194a
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/fluid_discharge.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/fluid_discharge",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/fluid_discharge"
+ },
+ "facing=south": {
+ "model": "basepower:block/fluid_discharge",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/fluid_discharge",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/fluid_drain.json b/src/main/resources/assets/basepower/blockstates/fluid_drain.json
new file mode 100644
index 00000000..ddd09e1a
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/fluid_drain.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/fluid_drain",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/fluid_drain"
+ },
+ "facing=south": {
+ "model": "basepower:block/fluid_drain",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/fluid_drain",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_metal_tank.json b/src/main/resources/assets/basepower/blockstates/fluid_metal_tank.json
similarity index 54%
rename from src/main/resources/assets/poweradvantage/blockstates/fluid_metal_tank.json
rename to src/main/resources/assets/basepower/blockstates/fluid_metal_tank.json
index 5f1ee90e..2458ad8d 100644
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_metal_tank.json
+++ b/src/main/resources/assets/basepower/blockstates/fluid_metal_tank.json
@@ -1,21 +1,21 @@
{
"variants": {
"facing=east": {
- "model": "poweradvantage:block/fluid_metal_tank",
+ "model": "basepower:block/fluid_metal_tank",
"y": 90,
"uvlock": true
},
"facing=north": {
- "model": "poweradvantage:block/fluid_metal_tank",
+ "model": "basepower:block/fluid_metal_tank",
"uvlock": true
},
"facing=south": {
- "model": "poweradvantage:block/fluid_metal_tank",
+ "model": "basepower:block/fluid_metal_tank",
"y": 180,
"uvlock": true
},
"facing=west": {
- "model": "poweradvantage:block/fluid_metal_tank",
+ "model": "basepower:block/fluid_metal_tank",
"y": 270,
"uvlock": true
}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_pipe.json b/src/main/resources/assets/basepower/blockstates/fluid_pipe.json
similarity index 70%
rename from src/main/resources/assets/poweradvantage/blockstates/fluid_pipe.json
rename to src/main/resources/assets/basepower/blockstates/fluid_pipe.json
index 74b70ea6..6299d392 100644
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_pipe.json
+++ b/src/main/resources/assets/basepower/blockstates/fluid_pipe.json
@@ -2,385 +2,385 @@
"__comment": "blockstate parameters MUST be in alphabetical order!",
"variants": {
"down=false,east=false,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 90,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 270,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 180,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 270,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 270,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 270,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_densuw",
+ "model": "basepower:block/fluid_pipe_densuw",
"x": 0,
"y": 0,
"uvlock": false
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_pipe_terminal.json b/src/main/resources/assets/basepower/blockstates/fluid_pipe_terminal.json
similarity index 70%
rename from src/main/resources/assets/poweradvantage/blockstates/fluid_pipe_terminal.json
rename to src/main/resources/assets/basepower/blockstates/fluid_pipe_terminal.json
index e5b42d6d..470261cb 100644
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_pipe_terminal.json
+++ b/src/main/resources/assets/basepower/blockstates/fluid_pipe_terminal.json
@@ -2,385 +2,385 @@
"__comment": "blockstate parameters MUST be in alphabetical order!",
"variants": {
"down=false,east=false,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_0",
+ "model": "basepower:block/fluid_pipe_0",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 90,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 270,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_n",
+ "model": "basepower:block/fluid_pipe_n",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ns",
+ "model": "basepower:block/fluid_pipe_ns",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nw",
+ "model": "basepower:block/fluid_pipe_nw",
"x": 270,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 180,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=true,east=false,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 270,
"y": 90,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_dnu",
+ "model": "basepower:block/fluid_pipe_dnu",
"x": 270,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsw",
+ "model": "basepower:block/fluid_pipe_nsw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=false,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nuw",
+ "model": "basepower:block/fluid_pipe_nuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=false,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 90,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=false,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 90,
"y": 90,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 180,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 90,
"y": 270,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_ensw",
+ "model": "basepower:block/fluid_pipe_ensw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=false,east=true,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=false,east=false,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_nsuw",
+ "model": "basepower:block/fluid_pipe_nsuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=true,west=false": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 270,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=false,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 270,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=false,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 180,
"uvlock": false
},
"down=true,east=true,north=false,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 0,
"uvlock": false
},
"down=true,east=false,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 0,
"y": 90,
"uvlock": false
},
"down=false,east=true,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_desuw",
+ "model": "basepower:block/fluid_pipe_desuw",
"x": 90,
"y": 0,
"uvlock": false
},
"down=true,east=true,north=true,south=true,up=true,west=true": {
- "model": "poweradvantage:block/fluid_pipe_densuw",
+ "model": "basepower:block/fluid_pipe_densuw",
"x": 0,
"y": 0,
"uvlock": false
diff --git a/src/main/resources/assets/basepower/blockstates/fluid_storage_tank.json b/src/main/resources/assets/basepower/blockstates/fluid_storage_tank.json
new file mode 100644
index 00000000..6273f11f
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/fluid_storage_tank.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/fluid_storage_tank",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/fluid_storage_tank"
+ },
+ "facing=south": {
+ "model": "basepower:block/fluid_storage_tank",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/fluid_storage_tank",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/fluid_switch.json b/src/main/resources/assets/basepower/blockstates/fluid_switch.json
new file mode 100644
index 00000000..53aed9b5
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/fluid_switch.json
@@ -0,0 +1,10 @@
+{
+ "variants": {
+ "active=false": {
+ "model": "basepower:block/fluid_switch_off"
+ },
+ "active=true": {
+ "model": "basepower:block/fluid_switch_on"
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/infinite_electricity.json b/src/main/resources/assets/basepower/blockstates/infinite_electricity.json
new file mode 100644
index 00000000..a3dd78ee
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/infinite_electricity.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/infinite_electricity",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/infinite_electricity"
+ },
+ "facing=south": {
+ "model": "basepower:block/infinite_electricity",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/infinite_electricity",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/infinite_quantum.json b/src/main/resources/assets/basepower/blockstates/infinite_quantum.json
new file mode 100644
index 00000000..6f7a8622
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/infinite_quantum.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/infinite_quantum",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/infinite_quantum"
+ },
+ "facing=south": {
+ "model": "basepower:block/infinite_quantum",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/infinite_quantum",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/infinite_steam.json b/src/main/resources/assets/basepower/blockstates/infinite_steam.json
new file mode 100644
index 00000000..1c0c9758
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/infinite_steam.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=east": {
+ "model": "basepower:block/infinite_steam",
+ "y": 90
+ },
+ "facing=north": {
+ "model": "basepower:block/infinite_steam"
+ },
+ "facing=south": {
+ "model": "basepower:block/infinite_steam",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/infinite_steam",
+ "y": 270
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_conveyor.json b/src/main/resources/assets/basepower/blockstates/item_conveyor.json
new file mode 100644
index 00000000..81bb97be
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_conveyor.json
@@ -0,0 +1,27 @@
+{
+ "variants": {
+ "facing=down": {
+ "model": "basepower:block/item_conveyor",
+ "x": 90
+ },
+ "facing=up": {
+ "model": "basepower:block/item_conveyor",
+ "x": 270
+ },
+ "facing=north": {
+ "model": "basepower:block/item_conveyor"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_conveyor",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_conveyor",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_conveyor",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_block.json b/src/main/resources/assets/basepower/blockstates/item_filter_block.json
new file mode 100644
index 00000000..e5da2ad6
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_block.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_block"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_block",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_block",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_block",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_food.json b/src/main/resources/assets/basepower/blockstates/item_filter_food.json
new file mode 100644
index 00000000..aa06924e
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_food.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_food"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_food",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_food",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_food",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_fuel.json b/src/main/resources/assets/basepower/blockstates/item_filter_fuel.json
new file mode 100644
index 00000000..9d4493e6
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_fuel.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_fuel"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_fuel",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_fuel",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_fuel",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_inventory.json b/src/main/resources/assets/basepower/blockstates/item_filter_inventory.json
new file mode 100644
index 00000000..9c5c81fe
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_inventory.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_inventory"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_inventory",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_inventory",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_inventory",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_ore.json b/src/main/resources/assets/basepower/blockstates/item_filter_ore.json
new file mode 100644
index 00000000..5b639c64
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_ore.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_ore"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_ore",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_ore",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_ore",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_overflow.json b/src/main/resources/assets/basepower/blockstates/item_filter_overflow.json
new file mode 100644
index 00000000..454345e7
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_overflow.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_overflow"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_overflow",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_overflow",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_overflow",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_plant.json b/src/main/resources/assets/basepower/blockstates/item_filter_plant.json
new file mode 100644
index 00000000..2731b955
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_plant.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_plant"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_plant",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_plant",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_plant",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/item_filter_smelt.json b/src/main/resources/assets/basepower/blockstates/item_filter_smelt.json
new file mode 100644
index 00000000..bbd7b4a7
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/item_filter_smelt.json
@@ -0,0 +1,19 @@
+{
+ "variants": {
+ "facing=north": {
+ "model": "basepower:block/item_filter_smelt"
+ },
+ "facing=south": {
+ "model": "basepower:block/item_filter_smelt",
+ "y": 180
+ },
+ "facing=west": {
+ "model": "basepower:block/item_filter_smelt",
+ "y": 270
+ },
+ "facing=east": {
+ "model": "basepower:block/item_filter_smelt",
+ "y": 90
+ }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/refined_oil.json b/src/main/resources/assets/basepower/blockstates/refined_oil.json
new file mode 100644
index 00000000..d29bb008
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/refined_oil.json
@@ -0,0 +1,5 @@
+{
+ "variants": {
+ "": { "model": "basepower:block/refined_oil" }
+ }
+}
diff --git a/src/main/resources/assets/basepower/blockstates/steel_frame.json b/src/main/resources/assets/basepower/blockstates/steel_frame.json
new file mode 100644
index 00000000..96d49f38
--- /dev/null
+++ b/src/main/resources/assets/basepower/blockstates/steel_frame.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "basepower:block/steel_frame"
+ }
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/still.json b/src/main/resources/assets/basepower/blockstates/still.json
similarity index 53%
rename from src/main/resources/assets/poweradvantage/blockstates/still.json
rename to src/main/resources/assets/basepower/blockstates/still.json
index 6fe4921b..4d20039f 100644
--- a/src/main/resources/assets/poweradvantage/blockstates/still.json
+++ b/src/main/resources/assets/basepower/blockstates/still.json
@@ -1,33 +1,33 @@
{
"variants": {
"active=false,facing=east": {
- "model": "poweradvantage:block/still_off",
+ "model": "basepower:block/still_off",
"y": 90
},
"active=false,facing=north": {
- "model": "poweradvantage:block/still_off"
+ "model": "basepower:block/still_off"
},
"active=false,facing=south": {
- "model": "poweradvantage:block/still_off",
+ "model": "basepower:block/still_off",
"y": 180
},
"active=false,facing=west": {
- "model": "poweradvantage:block/still_off",
+ "model": "basepower:block/still_off",
"y": 270
},
"active=true,facing=east": {
- "model": "poweradvantage:block/still_on",
+ "model": "basepower:block/still_on",
"y": 90
},
"active=true,facing=north": {
- "model": "poweradvantage:block/still_on"
+ "model": "basepower:block/still_on"
},
"active=true,facing=south": {
- "model": "poweradvantage:block/still_on",
+ "model": "basepower:block/still_on",
"y": 180
},
"active=true,facing=west": {
- "model": "poweradvantage:block/still_on",
+ "model": "basepower:block/still_on",
"y": 270
}
}
diff --git a/src/main/resources/assets/basepower/lang/de_de.json b/src/main/resources/assets/basepower/lang/de_de.json
new file mode 100644
index 00000000..8b91480c
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/de_de.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Große Ofen (formlos)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Große Ofen (geformt)",
+ "tooltip.basepower.empty": "Leer",
+ "tooltip.basepower.buckets_of": "%x Eimer %y",
+ "itemGroup.basepower": "Leistungsvorteil",
+ "tile.basepower.fluid_drain.name": "Ablauf",
+ "tile.basepower.fluid_discharge.name": "Austragsrost",
+ "tile.basepower.fluid_storage_tank.name": "Lagertank",
+ "item.basepower.fluid_storage_tank_item.name": "Speicher",
+ "tile.basepower.fluid_pipe.name": "Rohr",
+ "tile.basepower.item_conveyor.name": "Förderer",
+ "tile.basepower.item_filter_block.name": "Block Auswahl Förder",
+ "tile.basepower.item_filter_food.name": "Lebensmittel Auswahl Förder",
+ "tile.basepower.item_filter_fuel.name": "Brennstoff Auswahl Förder",
+ "tile.basepower.item_filter_inventory.name": "Anpassbare Auswahl Förder",
+ "tile.basepower.item_filter_ore.name": "Erz Auswahl Förder",
+ "tile.basepower.item_filter_plant.name": "Pflanze Auswahl Förder",
+ "tile.basepower.item_filter_smelt.name": "Kochbare Auswahl Förder",
+ "tile.basepower.item_filter_overflow.name": "Überlauf Auswahl Förder",
+ "tile.basepower.steel_frame.name": "Stahlrahmen",
+ "item.basepower.starch.name": "Kartoffelstärke",
+ "item.basepower.bioplastic_ingot.name": "Biokunststoff-Barren",
+ "item.basepower.sprocket.name": "Kettenrad",
+ "tile.basepower.fluid_metal_tank.name": "Metall-Lagertank",
+ "item.basepower.rotator_tool.name": "Drehwerkzeug",
+ "tile.basepower.infinite_steam.name": "Unendlichen Dampfkraft",
+ "tile.basepower.infinite_electricity.name": "Unendliche Elektrische Leistung",
+ "tile.basepower.infinite_quantum.name": "Unendliche Quanten Leistung",
+ "tile.basepower.crude_oil.name": "Rohöl",
+ "fluid.basepower.crude_oil": "Rohöl",
+ "item.bucket.crude_oil": "Eimer Rohöl",
+ "tile.basepower.still.name": "Brennerei",
+ "tile.basepower.refined_oil.name": "Raffiniertes Öl",
+ "fluid.basepower.refined_oil": "Raffiniertes Öl",
+ "item.bucket.refined_oil": "Eimer für Raffiniertes Öl",
+ "tile.basepower.fluid_switch.name": "Ventil",
+ "tile.basepower.converter_rf_steam.name": "Dampf-RF Leistungstransformator",
+ "tile.basepower.converter_rf_electricity.name": "Elektrizität-RF Leistungstransformator",
+ "tile.basepower.converter_rf_quantum.name": "Quant-RF Leistungstransformator",
+ "tile.basepower.converter_tr_electricity.name": "Elektrizität-EU Leistungstransformator",
+ "block.basepower.fluid_drain": "Ablauf",
+ "block.basepower.fluid_discharge": "Austragsrost",
+ "block.basepower.fluid_storage_tank": "Lagertank",
+ "item.basepower.fluid_storage_tank_item": "Speicher",
+ "block.basepower.fluid_pipe": "Rohr",
+ "block.basepower.item_conveyor": "Förderer",
+ "block.basepower.item_filter_block": "Block Auswahl Förder",
+ "block.basepower.item_filter_food": "Lebensmittel Auswahl Förder",
+ "block.basepower.item_filter_fuel": "Brennstoff Auswahl Förder",
+ "block.basepower.item_filter_inventory": "Anpassbare Auswahl Förder",
+ "block.basepower.item_filter_ore": "Erz Auswahl Förder",
+ "block.basepower.item_filter_plant": "Pflanze Auswahl Förder",
+ "block.basepower.item_filter_smelt": "Kochbare Auswahl Förder",
+ "block.basepower.item_filter_overflow": "Überlauf Auswahl Förder",
+ "block.basepower.steel_frame": "Stahlrahmen",
+ "item.basepower.starch": "Kartoffelstärke",
+ "item.basepower.bioplastic_ingot": "Biokunststoff-Barren",
+ "item.basepower.sprocket": "Kettenrad",
+ "block.basepower.fluid_metal_tank": "Metall-Lagertank",
+ "item.basepower.rotator_tool": "Drehwerkzeug",
+ "block.basepower.infinite_steam": "Unendlichen Dampfkraft",
+ "block.basepower.infinite_electricity": "Unendliche Elektrische Leistung",
+ "block.basepower.infinite_quantum": "Unendliche Quanten Leistung",
+ "block.basepower.crude_oil": "Rohöl",
+ "block.basepower.still": "Brennerei",
+ "block.basepower.refined_oil": "Raffiniertes Öl",
+ "block.basepower.fluid_switch": "Ventil",
+ "block.basepower.converter_rf_steam": "Dampf-RF Leistungstransformator",
+ "block.basepower.converter_rf_electricity": "Elektrizität-RF Leistungstransformator",
+ "block.basepower.converter_rf_quantum": "Quant-RF Leistungstransformator",
+ "block.basepower.converter_tr_electricity": "Elektrizität-EU Leistungstransformator",
+ "item.basepower.crude_oil_bucket": "Eimer Rohöl",
+ "item.basepower.refined_oil_bucket": "Eimer für Raffiniertes Öl",
+ "block.basepower.fluid_pipe_terminal": "Rohr"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_au.json b/src/main/resources/assets/basepower/lang/en_au.json
new file mode 100644
index 00000000..6db16d71
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_au.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "Power Advantage",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item.name": "Storage Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Crude Oil",
+ "fluid.basepower.crude_oil": "Crude Oil",
+ "item.bucket.crude_oil": "Bucket of Crude Oil",
+ "tile.basepower.still.name": "Distillation Furnace",
+ "tile.basepower.refined_oil.name": "Refined Oil",
+ "fluid.basepower.refined_oil": "Refined Oil",
+ "item.bucket.refined_oil": "Bucket of Refined Oil",
+ "tile.basepower.fluid_switch.name": "Fluid Switch Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item": "Storage Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Crude Oil",
+ "block.basepower.still": "Distillation Furnace",
+ "block.basepower.refined_oil": "Refined Oil",
+ "block.basepower.fluid_switch": "Fluid Switch Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket of Crude Oil",
+ "item.basepower.refined_oil_bucket": "Bucket of Refined Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_ca.json b/src/main/resources/assets/basepower/lang/en_ca.json
new file mode 100644
index 00000000..6db16d71
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_ca.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "Power Advantage",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item.name": "Storage Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Crude Oil",
+ "fluid.basepower.crude_oil": "Crude Oil",
+ "item.bucket.crude_oil": "Bucket of Crude Oil",
+ "tile.basepower.still.name": "Distillation Furnace",
+ "tile.basepower.refined_oil.name": "Refined Oil",
+ "fluid.basepower.refined_oil": "Refined Oil",
+ "item.bucket.refined_oil": "Bucket of Refined Oil",
+ "tile.basepower.fluid_switch.name": "Fluid Switch Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item": "Storage Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Crude Oil",
+ "block.basepower.still": "Distillation Furnace",
+ "block.basepower.refined_oil": "Refined Oil",
+ "block.basepower.fluid_switch": "Fluid Switch Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket of Crude Oil",
+ "item.basepower.refined_oil_bucket": "Bucket of Refined Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_en.json b/src/main/resources/assets/basepower/lang/en_en.json
new file mode 100644
index 00000000..6db16d71
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_en.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "Power Advantage",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item.name": "Storage Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Crude Oil",
+ "fluid.basepower.crude_oil": "Crude Oil",
+ "item.bucket.crude_oil": "Bucket of Crude Oil",
+ "tile.basepower.still.name": "Distillation Furnace",
+ "tile.basepower.refined_oil.name": "Refined Oil",
+ "fluid.basepower.refined_oil": "Refined Oil",
+ "item.bucket.refined_oil": "Bucket of Refined Oil",
+ "tile.basepower.fluid_switch.name": "Fluid Switch Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item": "Storage Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Crude Oil",
+ "block.basepower.still": "Distillation Furnace",
+ "block.basepower.refined_oil": "Refined Oil",
+ "block.basepower.fluid_switch": "Fluid Switch Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket of Crude Oil",
+ "item.basepower.refined_oil_bucket": "Bucket of Refined Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_gb.json b/src/main/resources/assets/basepower/lang/en_gb.json
new file mode 100644
index 00000000..6db16d71
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_gb.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "Power Advantage",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item.name": "Storage Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Crude Oil",
+ "fluid.basepower.crude_oil": "Crude Oil",
+ "item.bucket.crude_oil": "Bucket of Crude Oil",
+ "tile.basepower.still.name": "Distillation Furnace",
+ "tile.basepower.refined_oil.name": "Refined Oil",
+ "fluid.basepower.refined_oil": "Refined Oil",
+ "item.bucket.refined_oil": "Bucket of Refined Oil",
+ "tile.basepower.fluid_switch.name": "Fluid Switch Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item": "Storage Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Crude Oil",
+ "block.basepower.still": "Distillation Furnace",
+ "block.basepower.refined_oil": "Refined Oil",
+ "block.basepower.fluid_switch": "Fluid Switch Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket of Crude Oil",
+ "item.basepower.refined_oil_bucket": "Bucket of Refined Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_pt.json b/src/main/resources/assets/basepower/lang/en_pt.json
new file mode 100644
index 00000000..313bb19a
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_pt.json
@@ -0,0 +1,77 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "Power Advantage",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item.name": "Storage Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Black Gold",
+ "fluid.basepower.crude_oil": "Black Gold",
+ "item.bucket.crude_oil": "Bucket o' Black Gold",
+ "tile.basepower.still.name": "'Stillery",
+ "tile.basepower.refined_oil.name": "Lamp Oil",
+ "fluid.basepower.refined_oil": "Lamp Oil",
+ "item.bucket.refined_oil": "Bucket o' Lamp Oil",
+ "tile.basepower.fluid_switch.name": "Big Red Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "item.basepower.fluid_storage_tank_item": "Storage Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Black Gold",
+ "block.basepower.still": "'Stillery",
+ "block.basepower.refined_oil": "Lamp Oil",
+ "block.basepower.fluid_switch": "Big Red Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket o' Black Gold",
+ "item.basepower.refined_oil_bucket": "Bucket o' Lamp Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/en_us.json b/src/main/resources/assets/basepower/lang/en_us.json
new file mode 100644
index 00000000..497c2e5f
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/en_us.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
+ "tooltip.basepower.empty": "Empty",
+ "tooltip.basepower.buckets_of": "%x buckets of %y",
+ "itemGroup.basepower": "basePower",
+ "tile.basepower.fluid_drain.name": "Drain",
+ "tile.basepower.fluid_discharge.name": "Discharge Grate",
+ "tile.basepower.fluid_storage_tank.name": "Portable Fluid Tank",
+ "tile.basepower.fluid_pipe.name": "Pipe",
+ "tile.basepower.item_conveyor.name": "Conveyor",
+ "tile.basepower.item_filter_block.name": "Block Filter Conveyor",
+ "tile.basepower.item_filter_food.name": "Food Filter Conveyor",
+ "tile.basepower.item_filter_fuel.name": "Fuel Filter Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filter Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filter Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filter Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Furnace Filter Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Overflow Filter Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Starch",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic Ingot",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Metal Fluid Tank",
+ "item.basepower.rotator_tool.name": "Rotation Wrench",
+ "tile.basepower.infinite_steam.name": "Unlimited Steam Power",
+ "tile.basepower.infinite_electricity.name": "Unlimited Electrical Power",
+ "tile.basepower.infinite_quantum.name": "Unlimited Quantum Power",
+ "tile.basepower.crude_oil.name": "Crude Oil",
+ "fluid.basepower.crude_oil": "Crude Oil",
+ "item.bucket.crude_oil": "Bucket of Crude Oil",
+ "tile.basepower.still.name": "Distillation Furnace",
+ "tile.basepower.refined_oil.name": "Refined Oil",
+ "fluid.basepower.refined_oil": "Refined Oil",
+ "item.bucket.refined_oil": "Bucket of Refined Oil",
+ "tile.basepower.fluid_switch.name": "Fluid Switch Valve",
+ "tile.basepower.converter_rf_steam.name": "Steam-RF Transformer",
+ "tile.basepower.converter_rf_electricity.name": "Electricity-RF Transformer",
+ "tile.basepower.converter_rf_quantum.name": "Quantum-RF Transformer",
+ "tile.basepower.converter_tr_electricity.name": "Electricity-EU Transformer",
+ "block.basepower.fluid_drain": "Drain",
+ "block.basepower.fluid_discharge": "Discharge Grate",
+ "block.basepower.fluid_storage_tank": "Portable Fluid Tank",
+ "block.basepower.fluid_pipe": "Pipe",
+ "block.basepower.item_conveyor": "Conveyor",
+ "block.basepower.item_filter_block": "Block Filter Conveyor",
+ "block.basepower.item_filter_food": "Food Filter Conveyor",
+ "block.basepower.item_filter_fuel": "Fuel Filter Conveyor",
+ "block.basepower.item_filter_inventory": "Filter Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filter Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filter Conveyor",
+ "block.basepower.item_filter_smelt": "Furnace Filter Conveyor",
+ "block.basepower.item_filter_overflow": "Overflow Filter Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Starch",
+ "item.basepower.bioplastic_ingot": "Bioplastic Ingot",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Metal Fluid Tank",
+ "item.basepower.rotator_tool": "Rotation Wrench",
+ "block.basepower.infinite_steam": "Unlimited Steam Power",
+ "block.basepower.infinite_electricity": "Unlimited Electrical Power",
+ "block.basepower.infinite_quantum": "Unlimited Quantum Power",
+ "block.basepower.crude_oil": "Crude Oil",
+ "block.basepower.still": "Distillation Furnace",
+ "block.basepower.refined_oil": "Refined Oil",
+ "block.basepower.fluid_switch": "Fluid Switch Valve",
+ "block.basepower.converter_rf_steam": "Steam-RF Transformer",
+ "block.basepower.converter_rf_electricity": "Electricity-RF Transformer",
+ "block.basepower.converter_rf_quantum": "Quantum-RF Transformer",
+ "block.basepower.converter_tr_electricity": "Electricity-EU Transformer",
+ "item.basepower.crude_oil_bucket": "Bucket of Crude Oil",
+ "item.basepower.refined_oil_bucket": "Bucket of Refined Oil",
+ "block.basepower.fluid_pipe_terminal": "Pipe"
+}
diff --git a/src/main/resources/assets/basepower/lang/es_es.json b/src/main/resources/assets/basepower/lang/es_es.json
new file mode 100644
index 00000000..38214908
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/es_es.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Gran Horno (no forma)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Gran Horno (en forma)",
+ "tooltip.basepower.empty": "Vacío",
+ "tooltip.basepower.buckets_of ": "%x cubos de %y",
+ "itemGroup.basepower": "Ventaja de Energía",
+ "tile.basepower.fluid_drain.name": "Drenaje",
+ "tile.basepower.fluid_discharge.name": "Descarga Grate",
+ "tile.basepower.fluid_storage_tank.name": "Tanque de almacenamiento",
+ "item.basepower.fluid_storage_tank_item.name": "Tanque de almacenamiento",
+ "tile.basepower.fluid_pipe.name": "Tubo",
+ "tile.basepower.item_conveyor.name": "Transportadores",
+ "tile.basepower.item_filter_block.name": "Bloquear Filtro Transportadores",
+ "tile.basepower.item_filter_food.name": "Filtro Alimentos Transportadores",
+ "tile.basepower.item_filter_fuel.name": "Filtro de combustible Transportadores",
+ "tile.basepower.item_filter_inventory.name": "Filtro Transportadores",
+ "tile.basepower.item_filter_ore.name": "Ore Transportadores Filtro",
+ "tile.basepower.item_filter_plant.name": "Plantable Transportadores Filtro",
+ "tile.basepower.item_filter_smelt.name": "Horno Filtro Transportadores",
+ "tile.basepower.item_filter_overflow.name": "Desbordamiento Filtro Transportadores",
+ "tile.basepower.steel_frame.name": "Marco de Acero",
+ "item.basepower.starch.name": "Almidón",
+ "item.basepower.bioplastic_ingot.name": "Bioplástico Lingote",
+ "item.basepower.sprocket.name": "Piñón",
+ "tile.basepower.fluid_metal_tank.name": "Tanque de Almacenamiento de Acero",
+ "item.basepower.rotator_tool.name": "Herramienta de Rotación",
+ "tile.basepower.infinite_steam.name": "La Energía de Vapor Infinito",
+ "tile.basepower.infinite_electricity.name": "Energía Eléctrica Infinito",
+ "tile.basepower.infinite_quantum.name": "Cuántica Infinito",
+ "tile.basepower.crude_oil.name": "Petróleo Crudo",
+ "fluid.basepower.crude_oil": "Petróleo Crudo",
+ "item.bucket.crude_oil.name": "Cubo de Crudo",
+ "tile.basepower.still.name": "Destilería",
+ "tile.basepower.refined_oil.name": "Refinado de Petróleo",
+ "fluid.basepower.refined_oil": "Refinado de Petróleo",
+ "item.bucket.refined_oil.name": "Cubo de Refinado de Petróleo",
+ "tile.basepower.fluid_switch.name": "Válvula",
+ "tile.basepower.converter_rf_steam.name": "Vapor-RF Transformador",
+ "tile.basepower.converter_rf_electricity.name": "Electricidad-RF Transformador",
+ "tile.basepower.converter_rf_quantum.name": "Cuántico-RF Transformador",
+ "tile.basepower.converter_tr_electricity.name": "Electricidad-EU Transformador",
+ "block.basepower.fluid_drain": "Drenaje",
+ "block.basepower.fluid_discharge": "Descarga Grate",
+ "block.basepower.fluid_storage_tank": "Tanque de almacenamiento",
+ "item.basepower.fluid_storage_tank_item": "Tanque de almacenamiento",
+ "block.basepower.fluid_pipe": "Tubo",
+ "block.basepower.item_conveyor": "Transportadores",
+ "block.basepower.item_filter_block": "Bloquear Filtro Transportadores",
+ "block.basepower.item_filter_food": "Filtro Alimentos Transportadores",
+ "block.basepower.item_filter_fuel": "Filtro de combustible Transportadores",
+ "block.basepower.item_filter_inventory": "Filtro Transportadores",
+ "block.basepower.item_filter_ore": "Ore Transportadores Filtro",
+ "block.basepower.item_filter_plant": "Plantable Transportadores Filtro",
+ "block.basepower.item_filter_smelt": "Horno Filtro Transportadores",
+ "block.basepower.item_filter_overflow": "Desbordamiento Filtro Transportadores",
+ "block.basepower.steel_frame": "Marco de Acero",
+ "item.basepower.starch": "Almidón",
+ "item.basepower.bioplastic_ingot": "Bioplástico Lingote",
+ "item.basepower.sprocket": "Piñón",
+ "block.basepower.fluid_metal_tank": "Tanque de Almacenamiento de Acero",
+ "item.basepower.rotator_tool": "Herramienta de Rotación",
+ "block.basepower.infinite_steam": "La Energía de Vapor Infinito",
+ "block.basepower.infinite_electricity": "Energía Eléctrica Infinito",
+ "block.basepower.infinite_quantum": "Cuántica Infinito",
+ "block.basepower.crude_oil": "Petróleo Crudo",
+ "block.basepower.still": "Destilería",
+ "block.basepower.refined_oil": "Refinado de Petróleo",
+ "block.basepower.fluid_switch": "Válvula",
+ "block.basepower.converter_rf_steam": "Vapor-RF Transformador",
+ "block.basepower.converter_rf_electricity": "Electricidad-RF Transformador",
+ "block.basepower.converter_rf_quantum": "Cuántico-RF Transformador",
+ "block.basepower.converter_tr_electricity": "Electricidad-EU Transformador",
+ "block.basepower.fluid_pipe_terminal": "Tubo"
+}
diff --git a/src/main/resources/assets/basepower/lang/es_mx.json b/src/main/resources/assets/basepower/lang/es_mx.json
new file mode 100644
index 00000000..bc2cf1af
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/es_mx.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Gran Horno (no forma)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Gran Horno (en forma)",
+ "tooltip.basepower.empty": "Vacío",
+ "tooltip.basepower.buckets_of": "%x cubos de %y",
+ "itemGroup.basepower": "Ventaja de Energía",
+ "tile.basepower.fluid_drain.name": "Drenaje",
+ "tile.basepower.fluid_discharge.name": "Descarga Grate",
+ "tile.basepower.fluid_storage_tank.name": "Tanque de almacenamiento",
+ "item.basepower.fluid_storage_tank_item.name": "Tanque de almacenamiento",
+ "tile.basepower.fluid_pipe.name": "Tubo",
+ "tile.basepower.item_conveyor.name": "Transportadores",
+ "tile.basepower.item_filter_block.name": "Bloquear Filtro Transportadores",
+ "tile.basepower.item_filter_food.name": "Filtro Alimentos Transportadores",
+ "tile.basepower.item_filter_fuel.name": "Filtro de combustible Transportadores",
+ "tile.basepower.item_filter_inventory.name": "Filtro Transportadores",
+ "tile.basepower.item_filter_ore.name": "Ore Transportadores Filtro",
+ "tile.basepower.item_filter_plant.name": "Plantable Transportadores Filtro",
+ "tile.basepower.item_filter_smelt.name": "Horno Filtro Transportadores",
+ "tile.basepower.item_filter_overflow.name": "Desbordamiento Filtro Transportadores",
+ "tile.basepower.steel_frame.name": "Marco de Acero",
+ "item.basepower.starch.name": "Almidón",
+ "item.basepower.bioplastic_ingot.name": "Bioplástico Lingote",
+ "item.basepower.sprocket.name": "Piñón",
+ "tile.basepower.fluid_metal_tank.name": "Tanque de Almacenamiento de Acero",
+ "item.basepower.rotator_tool.name": "Herramienta de Rotación",
+ "tile.basepower.infinite_steam.name": "La Energía de Vapor Infinito",
+ "tile.basepower.infinite_electricity.name": "Energía Eléctrica Infinito",
+ "tile.basepower.infinite_quantum.name": "Cuántica Infinito",
+ "tile.basepower.crude_oil.name": "Petróleo Crudo",
+ "fluid.basepower.crude_oil": "Petróleo Crudo",
+ "item.bucket.crude_oil.name": "Cubo de Crudo",
+ "tile.basepower.still.name": "Destilería",
+ "tile.basepower.refined_oil.name": "Refinado de Petróleo",
+ "fluid.basepower.refined_oil": "Refinado de Petróleo",
+ "item.bucket.refined_oil.name": "Cubo de Refinado de Petróleo",
+ "tile.basepower.fluid_switch.name": "Válvula",
+ "tile.basepower.converter_rf_steam.name": "Vapor-RF Transformador",
+ "tile.basepower.converter_rf_electricity.name": "Electricidad-RF Transformador",
+ "tile.basepower.converter_rf_quantum.name": "Cuántico-RF Transformador",
+ "tile.basepower.converter_tr_electricity.name": "Electricidad-EU Transformador",
+ "block.basepower.fluid_drain": "Drenaje",
+ "block.basepower.fluid_discharge": "Descarga Grate",
+ "block.basepower.fluid_storage_tank": "Tanque de almacenamiento",
+ "item.basepower.fluid_storage_tank_item": "Tanque de almacenamiento",
+ "block.basepower.fluid_pipe": "Tubo",
+ "block.basepower.item_conveyor": "Transportadores",
+ "block.basepower.item_filter_block": "Bloquear Filtro Transportadores",
+ "block.basepower.item_filter_food": "Filtro Alimentos Transportadores",
+ "block.basepower.item_filter_fuel": "Filtro de combustible Transportadores",
+ "block.basepower.item_filter_inventory": "Filtro Transportadores",
+ "block.basepower.item_filter_ore": "Ore Transportadores Filtro",
+ "block.basepower.item_filter_plant": "Plantable Transportadores Filtro",
+ "block.basepower.item_filter_smelt": "Horno Filtro Transportadores",
+ "block.basepower.item_filter_overflow": "Desbordamiento Filtro Transportadores",
+ "block.basepower.steel_frame": "Marco de Acero",
+ "item.basepower.starch": "Almidón",
+ "item.basepower.bioplastic_ingot": "Bioplástico Lingote",
+ "item.basepower.sprocket": "Piñón",
+ "block.basepower.fluid_metal_tank": "Tanque de Almacenamiento de Acero",
+ "item.basepower.rotator_tool": "Herramienta de Rotación",
+ "block.basepower.infinite_steam": "La Energía de Vapor Infinito",
+ "block.basepower.infinite_electricity": "Energía Eléctrica Infinito",
+ "block.basepower.infinite_quantum": "Cuántica Infinito",
+ "block.basepower.crude_oil": "Petróleo Crudo",
+ "block.basepower.still": "Destilería",
+ "block.basepower.refined_oil": "Refinado de Petróleo",
+ "block.basepower.fluid_switch": "Válvula",
+ "block.basepower.converter_rf_steam": "Vapor-RF Transformador",
+ "block.basepower.converter_rf_electricity": "Electricidad-RF Transformador",
+ "block.basepower.converter_rf_quantum": "Cuántico-RF Transformador",
+ "block.basepower.converter_tr_electricity": "Electricidad-EU Transformador",
+ "block.basepower.fluid_pipe_terminal": "Tubo"
+}
diff --git a/src/main/resources/assets/basepower/lang/it_it.json b/src/main/resources/assets/basepower/lang/it_it.json
new file mode 100644
index 00000000..d96d2666
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/it_it.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Grande Fornace (informe)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Grande Fornace (forma)",
+ "tooltip.basepower.empty": "vuoto",
+ "tooltip.basepower.buckets_of": "%x secchi d'%y",
+ "itemGroup.basepower": "Potenza Advantage",
+ "tile.basepower.fluid_drain.name": "Scarico",
+ "tile.basepower.fluid_discharge.name": "Griglia di scarico",
+ "tile.basepower.fluid_storage_tank.name": "Serbatoio",
+ "item.basepower.fluid_storage_tank_item.name": "Serbatoio",
+ "tile.basepower.fluid_pipe.name": "Tubo",
+ "tile.basepower.item_conveyor.name": "Trasportatore",
+ "tile.basepower.item_filter_block.name": "Filtro di blocco trasportatore",
+ "tile.basepower.item_filter_food.name": "Filtro alimentare Conveyor",
+ "tile.basepower.item_filter_fuel.name": "carburante Filtro Conveyor",
+ "tile.basepower.item_filter_inventory.name": "Filtro Conveyor",
+ "tile.basepower.item_filter_ore.name": "Ore Filtro Conveyor",
+ "tile.basepower.item_filter_plant.name": "Plantable Filtro Conveyor",
+ "tile.basepower.item_filter_smelt.name": "Forno Filtro Conveyor",
+ "tile.basepower.item_filter_overflow.name": "Straripamento Filtro Conveyor",
+ "tile.basepower.steel_frame.name": "Steel Frame",
+ "item.basepower.starch.name": "Amido",
+ "item.basepower.bioplastic_ingot.name": "Bioplastica Lingotto",
+ "item.basepower.sprocket.name": "Sprocket",
+ "tile.basepower.fluid_metal_tank.name": "Serbatoio in Metallo",
+ "item.basepower.rotator_tool.name": "Strumento di Rotazione",
+ "tile.basepower.infinite_steam.name": "Forza Vapore Infinite",
+ "tile.basepower.infinite_electricity.name": "Elettricità Infinite",
+ "tile.basepower.infinite_quantum.name": "Atomica Infinite",
+ "tile.basepower.crude_oil.name": "Olio a Crudo",
+ "fluid.basepower.crude_oil": "Olio a Crudo",
+ "item.bucket.crude_oil.name": "Secchio di Greggio",
+ "tile.basepower.still.name": "Distilleria",
+ "tile.basepower.refined_oil.name": "Olio Raffinato",
+ "fluid.basepower.refined_oil": "Olio Raffinato",
+ "item.bucket.refined_oil.name": "Secchio di Olio Raffinato",
+ "tile.basepower.fluid_switch.name": "Valvola",
+ "tile.basepower.converter_rf_steam.name": "Vapore-RF Trasformatore",
+ "tile.basepower.converter_rf_electricity.name": "Elettricità-RF Trasformatore",
+ "tile.basepower.converter_rf_quantum.name": "Quantistico-RF Trasformatore",
+ "tile.basepower.converter_tr_electricity.name": "Elettricità-EU Trasformatore",
+ "block.basepower.fluid_drain": "Scarico",
+ "block.basepower.fluid_discharge": "Griglia di scarico",
+ "block.basepower.fluid_storage_tank": "Serbatoio",
+ "item.basepower.fluid_storage_tank_item": "Serbatoio",
+ "block.basepower.fluid_pipe": "Tubo",
+ "block.basepower.item_conveyor": "Trasportatore",
+ "block.basepower.item_filter_block": "Filtro di blocco trasportatore",
+ "block.basepower.item_filter_food": "Filtro alimentare Conveyor",
+ "block.basepower.item_filter_fuel": "carburante Filtro Conveyor",
+ "block.basepower.item_filter_inventory": "Filtro Conveyor",
+ "block.basepower.item_filter_ore": "Ore Filtro Conveyor",
+ "block.basepower.item_filter_plant": "Plantable Filtro Conveyor",
+ "block.basepower.item_filter_smelt": "Forno Filtro Conveyor",
+ "block.basepower.item_filter_overflow": "Straripamento Filtro Conveyor",
+ "block.basepower.steel_frame": "Steel Frame",
+ "item.basepower.starch": "Amido",
+ "item.basepower.bioplastic_ingot": "Bioplastica Lingotto",
+ "item.basepower.sprocket": "Sprocket",
+ "block.basepower.fluid_metal_tank": "Serbatoio in Metallo",
+ "item.basepower.rotator_tool": "Strumento di Rotazione",
+ "block.basepower.infinite_steam": "Forza Vapore Infinite",
+ "block.basepower.infinite_electricity": "Elettricità Infinite",
+ "block.basepower.infinite_quantum": "Atomica Infinite",
+ "block.basepower.crude_oil": "Olio a Crudo",
+ "block.basepower.still": "Distilleria",
+ "block.basepower.refined_oil": "Olio Raffinato",
+ "block.basepower.fluid_switch": "Valvola",
+ "block.basepower.converter_rf_steam": "Vapore-RF Trasformatore",
+ "block.basepower.converter_rf_electricity": "Elettricità-RF Trasformatore",
+ "block.basepower.converter_rf_quantum": "Quantistico-RF Trasformatore",
+ "block.basepower.converter_tr_electricity": "Elettricità-EU Trasformatore",
+ "block.basepower.fluid_pipe_terminal": "Tubo"
+}
diff --git a/src/main/resources/assets/basepower/lang/ja_jp.json b/src/main/resources/assets/basepower/lang/ja_jp.json
new file mode 100644
index 00000000..d6628493
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/ja_jp.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "大型炉(型崩れ)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "大型炉(形)",
+ "tooltip.basepower.empty": "空",
+ "tooltip.basepower.buckets_of": "%yの%xバケット",
+ "itemGroup.basepower": "パワー·アドバンテージ",
+ "tile.basepower.fluid_drain.name": "ドレン",
+ "tile.basepower.fluid_discharge.name": "放電グレート",
+ "tile.basepower.fluid_storage_tank.name": "貯蔵タンク",
+ "item.basepower.fluid_storage_tank_item.name": "貯蔵タンク",
+ "tile.basepower.fluid_pipe.name": "パイプ",
+ "tile.basepower.item_conveyor.name": "コンベア",
+ "tile.basepower.item_filter_block.name": "ブロックフィルタコンベア",
+ "tile.basepower.item_filter_food.name": "フードフィルターコンベア",
+ "tile.basepower.item_filter_fuel.name": "燃料フィルターコンベア",
+ "tile.basepower.item_filter_inventory.name": "フィルタコンベヤー",
+ "tile.basepower.item_filter_ore.name": "鉱石フィルターコンベア",
+ "tile.basepower.item_filter_plant.name": "プラントフィルタコンベヤー",
+ "tile.basepower.item_filter_smelt.name": "炉フィルターコンベア",
+ "tile.basepower.item_filter_overflow.name": "オーバーフローフィルタコンベヤー",
+ "tile.basepower.steel_frame.name": "鉄骨",
+ "item.basepower.starch.name": "デンプン",
+ "item.basepower.bioplastic_ingot.name": "は、バイオプラスチックインゴットを",
+ "item.basepower.sprocket.name": "スプロケット",
+ "tile.basepower.infinite_steam.name": "無限の蒸気動力",
+ "tile.basepower.infinite_electricity.name": "無限の電力",
+ "tile.basepower.infinite_quantum.name": "無限の量子パワー",
+ "tile.basepower.fluid_metal_tank.name": "金属製貯蔵タンク",
+ "item.basepower.rotator_tool.name": "回転ツール",
+ "tile.basepower.crude_oil.name": "原油",
+ "fluid.basepower.crude_oil": "原油",
+ "item.bucket.crude_oil.name": "原油のバケット",
+ "tile.basepower.still.name": "蒸留酒製造所",
+ "tile.basepower.refined_oil.name": "精製油",
+ "fluid.basepower.refined_oil": "精製油",
+ "item.bucket.refined_oil.name": "精製油のバケツ",
+ "tile.basepower.fluid_switch.name": "バルブ",
+ "tile.basepower.converter_rf_steam.name": "蒸気-RFトランス",
+ "tile.basepower.converter_rf_electricity.name": "電気-RFトランス",
+ "tile.basepower.converter_rf_quantum.name": "量子-RFトランス",
+ "tile.basepower.converter_tr_electricity.name": "電気-EUトランス",
+ "block.basepower.fluid_drain": "ドレン",
+ "block.basepower.fluid_discharge": "放電グレート",
+ "block.basepower.fluid_storage_tank": "貯蔵タンク",
+ "item.basepower.fluid_storage_tank_item": "貯蔵タンク",
+ "block.basepower.fluid_pipe": "パイプ",
+ "block.basepower.item_conveyor": "コンベア",
+ "block.basepower.item_filter_block": "ブロックフィルタコンベア",
+ "block.basepower.item_filter_food": "フードフィルターコンベア",
+ "block.basepower.item_filter_fuel": "燃料フィルターコンベア",
+ "block.basepower.item_filter_inventory": "フィルタコンベヤー",
+ "block.basepower.item_filter_ore": "鉱石フィルターコンベア",
+ "block.basepower.item_filter_plant": "プラントフィルタコンベヤー",
+ "block.basepower.item_filter_smelt": "炉フィルターコンベア",
+ "block.basepower.item_filter_overflow": "オーバーフローフィルタコンベヤー",
+ "block.basepower.steel_frame": "鉄骨",
+ "item.basepower.starch": "デンプン",
+ "item.basepower.bioplastic_ingot": "は、バイオプラスチックインゴットを",
+ "item.basepower.sprocket": "スプロケット",
+ "block.basepower.infinite_steam": "無限の蒸気動力",
+ "block.basepower.infinite_electricity": "無限の電力",
+ "block.basepower.infinite_quantum": "無限の量子パワー",
+ "block.basepower.fluid_metal_tank": "金属製貯蔵タンク",
+ "item.basepower.rotator_tool": "回転ツール",
+ "block.basepower.crude_oil": "原油",
+ "block.basepower.still": "蒸留酒製造所",
+ "block.basepower.refined_oil": "精製油",
+ "block.basepower.fluid_switch": "バルブ",
+ "block.basepower.converter_rf_steam": "蒸気-RFトランス",
+ "block.basepower.converter_rf_electricity": "電気-RFトランス",
+ "block.basepower.converter_rf_quantum": "量子-RFトランス",
+ "block.basepower.converter_tr_electricity": "電気-EUトランス",
+ "block.basepower.fluid_pipe_terminal": "パイプ"
+}
diff --git a/src/main/resources/assets/basepower/lang/ko_kr.json b/src/main/resources/assets/basepower/lang/ko_kr.json
new file mode 100644
index 00000000..a3e9b68c
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/ko_kr.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "대형 전기로 (못생긴)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "대형 전기로 (모양)",
+ "tooltip.basepower.empty": "빈",
+ "tooltip.tooltip.basepower.buckets_of": "%는 X 버킷",
+ "itemGroup.basepower": "전원의 장점을 ",
+ "tile.basepower.fluid_drain.name": "드레인",
+ "tile.basepower.fluid_discharge.name": "방전 화격자",
+ "tile.basepower.fluid_storage_tank.name": "저장 탱크",
+ "item.basepower.fluid_storage_tank_item.name": "는 저장 탱크를 ",
+ "tile.basepower.fluid_pipe.name": "파이프",
+ "tile.basepower.item_conveyor.name": "컨베이어",
+ "tile.basepower.item_filter_block.name": "블록 필터 컨베이어",
+ "tile.basepower.item_filter_food.name": "식품 필터 컨베이어",
+ "tile.basepower.item_filter_fuel.name": "연료 필터 컨베이어",
+ "tile.basepower.item_filter_inventory.name": "필터 컨베이어",
+ "tile.basepower.item_filter_ore.name": "광석 필터 컨베이어",
+ "tile.basepower.item_filter_plant.name": "물만 주면 식물이 필터 컨베이어",
+ "tile.basepower.item_filter_smelt.name": "노 필터 컨베이어",
+ "tile.basepower.item_filter_overflow.name": "오버 플로우필터 컨베이어",
+ "tile.basepower.steel_frame.name": "스틸 프레임",
+ "item.basepower.starch.name": "전분",
+ "item.basepower.bioplastic_ingot.name": "는 바이오 플라스틱 잉곳을 ",
+ "item.basepower.sprocket.name": "스프로킷",
+ "tile.basepower.fluid_metal_tank.name": "금속 저장조",
+ "item.basepower.rotator_tool.name": "회전 도구",
+ "tile.basepower.infinite_steam.name": "무한 증기 력",
+ "tile.basepower.infinite_electricity.name": "무한 전력",
+ "tile.basepower.infinite_quantum.name": "무한 양자 전력",
+ "tile.basepower.crude_oil.name": "원유",
+ "fluid.basepower.crude_oil": "원유",
+ "item.bucket.crude_oil.name": "원유의 버킷",
+ "tile.basepower.still.name": "증류소",
+ "tile.basepower.refined_oil.name": "정유",
+ "fluid.basepower.refined_oil": "정유",
+ "item.bucket.refined_oil.name": "정유의 통",
+ "tile.basepower.fluid_switch.name": "판막",
+ "tile.basepower.converter_rf_steam.name": "증기-RF 전원 트랜스",
+ "tile.basepower.converter_rf_electricity.name": "전기-RF 전원 트랜스",
+ "tile.basepower.converter_rf_quantum.name": "양자-RF 전원 트랜스",
+ "tile.basepower.converter_tr_electricity.name": "전기-EU 전원 트랜스",
+ "block.basepower.fluid_drain": "드레인",
+ "block.basepower.fluid_discharge": "방전 화격자",
+ "block.basepower.fluid_storage_tank": "저장 탱크",
+ "item.basepower.fluid_storage_tank_item": "는 저장 탱크를 ",
+ "block.basepower.fluid_pipe": "파이프",
+ "block.basepower.item_conveyor": "컨베이어",
+ "block.basepower.item_filter_block": "블록 필터 컨베이어",
+ "block.basepower.item_filter_food": "식품 필터 컨베이어",
+ "block.basepower.item_filter_fuel": "연료 필터 컨베이어",
+ "block.basepower.item_filter_inventory": "필터 컨베이어",
+ "block.basepower.item_filter_ore": "광석 필터 컨베이어",
+ "block.basepower.item_filter_plant": "물만 주면 식물이 필터 컨베이어",
+ "block.basepower.item_filter_smelt": "노 필터 컨베이어",
+ "block.basepower.item_filter_overflow": "오버 플로우필터 컨베이어",
+ "block.basepower.steel_frame": "스틸 프레임",
+ "item.basepower.starch": "전분",
+ "item.basepower.bioplastic_ingot": "는 바이오 플라스틱 잉곳을 ",
+ "item.basepower.sprocket": "스프로킷",
+ "block.basepower.fluid_metal_tank": "금속 저장조",
+ "item.basepower.rotator_tool": "회전 도구",
+ "block.basepower.infinite_steam": "무한 증기 력",
+ "block.basepower.infinite_electricity": "무한 전력",
+ "block.basepower.infinite_quantum": "무한 양자 전력",
+ "block.basepower.crude_oil": "원유",
+ "block.basepower.still": "증류소",
+ "block.basepower.refined_oil": "정유",
+ "block.basepower.fluid_switch": "판막",
+ "block.basepower.converter_rf_steam": "증기-RF 전원 트랜스",
+ "block.basepower.converter_rf_electricity": "전기-RF 전원 트랜스",
+ "block.basepower.converter_rf_quantum": "양자-RF 전원 트랜스",
+ "block.basepower.converter_tr_electricity": "전기-EU 전원 트랜스",
+ "block.basepower.fluid_pipe_terminal": "파이프"
+}
diff --git a/src/main/resources/assets/basepower/lang/pt_br.json b/src/main/resources/assets/basepower/lang/pt_br.json
new file mode 100644
index 00000000..a2a48dfc
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/pt_br.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "Forno Grande (no forma)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "Forno Grande (em forma)",
+ "tooltip.basepower.empty": "vazio",
+ "tooltip.basepower.buckets_of": "%x baldes de %y",
+ "itemGroup.basepower": "Vantagem de Poder",
+ "tile.basepower.fluid_drain.name": "Dreno",
+ "tile.basepower.fluid_discharge.name": "Grate Discharge",
+ "tile.basepower.fluid_storage_tank.name": "Tanque de armazenamento",
+ "item.basepower.fluid_storage_tank_item.name": "Tanque de armazenamento",
+ "tile.basepower.fluid_pipe.name": "Tubulação",
+ "tile.basepower.item_conveyor.name": "Transportador",
+ "tile.basepower.item_filter_block.name": "Bloquear filtro transportador",
+ "tile.basepower.item_filter_food.name": "Transportador Filtro de Alimentos",
+ "tile.basepower.item_filter_fuel.name": "Filtro de combustível Transportador",
+ "tile.basepower.item_filter_inventory.name": "Transportador Filtro",
+ "tile.basepower.item_filter_ore.name": "Ore Transportadora Filtro",
+ "tile.basepower.item_filter_plant.name": "Plantable Transportadora Filtro",
+ "tile.basepower.item_filter_smelt.name": "Fornalha Filtro Transportador",
+ "tile.basepower.item_filter_overflow.name": "Transbordamento Transportador Filtro",
+ "tile.basepower.steel_frame.name": "Armação de Aço",
+ "item.basepower.starch.name": "Amido",
+ "item.basepower.bioplastic_ingot.name": "Bioplastic lingote",
+ "item.basepower.sprocket.name": "Roda Dentada",
+ "tile.basepower.fluid_metal_tank.name": "Tanque de Armazenamento de Aço",
+ "item.basepower.rotator_tool.name": "Ferramenta de Rotação",
+ "tile.basepower.infinite_steam.name": "Energia a Vapor Infinito",
+ "tile.basepower.infinite_electricity.name": "Energia Elétrica Infinito",
+ "tile.basepower.infinite_quantum.name": "Energia Quantum Infinito",
+ "tile.basepower.crude_oil.name": "Óleo Cru",
+ "fluid.basepower.crude_oil": "Óleo Cru",
+ "item.bucket.crude_oil.name": "Balde de Óleo Cru",
+ "tile.basepower.still.name": "Destilaria",
+ "tile.basepower.refined_oil.name": "Óleo Refinado",
+ "fluid.basepower.refined_oil": "Óleo Refinado",
+ "item.bucket.refined_oil.name": "Balde de Óleo Refinado",
+ "tile.basepower.fluid_switch.name": "Válvula",
+ "tile.basepower.converter_rf_steam.name": "Vapor-RF Transformador",
+ "tile.basepower.converter_rf_electricity.name": "Electricidade-RF Transformador",
+ "tile.basepower.converter_rf_quantum.name": "Quantidade-RF Transformador",
+ "tile.basepower.converter_tr_electricity.name": "Electricidade-EU Transformador",
+ "block.basepower.fluid_drain": "Dreno",
+ "block.basepower.fluid_discharge": "Grate Discharge",
+ "block.basepower.fluid_storage_tank": "Tanque de armazenamento",
+ "item.basepower.fluid_storage_tank_item": "Tanque de armazenamento",
+ "block.basepower.fluid_pipe": "Tubulação",
+ "block.basepower.item_conveyor": "Transportador",
+ "block.basepower.item_filter_block": "Bloquear filtro transportador",
+ "block.basepower.item_filter_food": "Transportador Filtro de Alimentos",
+ "block.basepower.item_filter_fuel": "Filtro de combustível Transportador",
+ "block.basepower.item_filter_inventory": "Transportador Filtro",
+ "block.basepower.item_filter_ore": "Ore Transportadora Filtro",
+ "block.basepower.item_filter_plant": "Plantable Transportadora Filtro",
+ "block.basepower.item_filter_smelt": "Fornalha Filtro Transportador",
+ "block.basepower.item_filter_overflow": "Transbordamento Transportador Filtro",
+ "block.basepower.steel_frame": "Armação de Aço",
+ "item.basepower.starch": "Amido",
+ "item.basepower.bioplastic_ingot": "Bioplastic lingote",
+ "item.basepower.sprocket": "Roda Dentada",
+ "block.basepower.fluid_metal_tank": "Tanque de Armazenamento de Aço",
+ "item.basepower.rotator_tool": "Ferramenta de Rotação",
+ "block.basepower.infinite_steam": "Energia a Vapor Infinito",
+ "block.basepower.infinite_electricity": "Energia Elétrica Infinito",
+ "block.basepower.infinite_quantum": "Energia Quantum Infinito",
+ "block.basepower.crude_oil": "Óleo Cru",
+ "block.basepower.still": "Destilaria",
+ "block.basepower.refined_oil": "Óleo Refinado",
+ "block.basepower.fluid_switch": "Válvula",
+ "block.basepower.converter_rf_steam": "Vapor-RF Transformador",
+ "block.basepower.converter_rf_electricity": "Electricidade-RF Transformador",
+ "block.basepower.converter_rf_quantum": "Quantidade-RF Transformador",
+ "block.basepower.converter_tr_electricity": "Electricidade-EU Transformador",
+ "block.basepower.fluid_pipe_terminal": "Tubulação"
+}
diff --git a/src/main/resources/assets/basepower/lang/zh_cn.json b/src/main/resources/assets/basepower/lang/zh_cn.json
new file mode 100644
index 00000000..631c3180
--- /dev/null
+++ b/src/main/resources/assets/basepower/lang/zh_cn.json
@@ -0,0 +1,75 @@
+{
+ "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
+ "nei.basepower.recipehandler.shapelessfurnace.name": "大熔炉(无形的)",
+ "nei.basepower.recipehandler.shapedfurnace.name": "大熔炉(有形的)",
+ "tooltip.basepower.empty": "空",
+ "tooltip.basepower.buckets_of": "%x水桶的%y",
+ "itemGroup.basepower": "能量优势",
+ "tile.basepower.fluid_drain.name": "抽水机",
+ "tile.basepower.fluid_discharge.name": "排液器",
+ "tile.basepower.fluid_storage_tank.name": "便携式液体储罐",
+ "item.basepower.fluid_storage_tank_item.name": "便携式液体储罐",
+ "tile.basepower.fluid_pipe.name": "液体管",
+ "tile.basepower.item_conveyor.name": "输送机",
+ "tile.basepower.item_filter_block.name": "方块过滤输送机",
+ "tile.basepower.item_filter_food.name": "食品过滤输送机",
+ "tile.basepower.item_filter_fuel.name": "燃料过滤输送机",
+ "tile.basepower.item_filter_inventory.name": "选择过滤输送机",
+ "tile.basepower.item_filter_ore.name": "矿物过滤输送机",
+ "tile.basepower.item_filter_plant.name": "种子过滤输送机",
+ "tile.basepower.item_filter_smelt.name": "熔炉过滤输送机",
+ "tile.basepower.item_filter_overflow.name": "溢出过滤输送机",
+ "tile.basepower.steel_frame.name": "钢框架",
+ "item.basepower.starch.name": "淀粉",
+ "item.basepower.bioplastic_ingot.name": "生物塑料锭",
+ "item.basepower.sprocket.name": "链轮",
+ "tile.basepower.fluid_metal_tank.name": "金属液罐",
+ "item.basepower.rotator_tool.name": "旋转扳手",
+ "tile.basepower.infinite_steam.name": "无限蒸汽动力",
+ "tile.basepower.infinite_electricity.name": "无限电力",
+ "tile.basepower.infinite_quantum.name": "无限量子动力",
+ "tile.basepower.crude_oil.name": "原油",
+ "fluid.basepower.crude_oil": "原油",
+ "item.bucket.crude_oil.name": "原油桶",
+ "tile.basepower.still.name": "酒廠",
+ "tile.basepower.refined_oil.name": "成品油",
+ "fluid.basepower.refined_oil": "成品油",
+ "item.bucket.refined_oil.name": "成品油的桶",
+ "tile.basepower.fluid_switch.name": "閥",
+ "tile.basepower.converter_rf_steam.name": "蒸汽-RF 變壓器",
+ "tile.basepower.converter_rf_electricity.name": "電力-RF 變壓器",
+ "tile.basepower.converter_rf_quantum.name": "量子-RF 變壓器",
+ "tile.basepower.converter_tr_electricity.name": "電力-EU 變壓器",
+ "block.basepower.fluid_drain": "抽水机",
+ "block.basepower.fluid_discharge": "排液器",
+ "block.basepower.fluid_storage_tank": "便携式液体储罐",
+ "item.basepower.fluid_storage_tank_item": "便携式液体储罐",
+ "block.basepower.fluid_pipe": "液体管",
+ "block.basepower.item_conveyor": "输送机",
+ "block.basepower.item_filter_block": "方块过滤输送机",
+ "block.basepower.item_filter_food": "食品过滤输送机",
+ "block.basepower.item_filter_fuel": "燃料过滤输送机",
+ "block.basepower.item_filter_inventory": "选择过滤输送机",
+ "block.basepower.item_filter_ore": "矿物过滤输送机",
+ "block.basepower.item_filter_plant": "种子过滤输送机",
+ "block.basepower.item_filter_smelt": "熔炉过滤输送机",
+ "block.basepower.item_filter_overflow": "溢出过滤输送机",
+ "block.basepower.steel_frame": "钢框架",
+ "item.basepower.starch": "淀粉",
+ "item.basepower.bioplastic_ingot": "生物塑料锭",
+ "item.basepower.sprocket": "链轮",
+ "block.basepower.fluid_metal_tank": "金属液罐",
+ "item.basepower.rotator_tool": "旋转扳手",
+ "block.basepower.infinite_steam": "无限蒸汽动力",
+ "block.basepower.infinite_electricity": "无限电力",
+ "block.basepower.infinite_quantum": "无限量子动力",
+ "block.basepower.crude_oil": "原油",
+ "block.basepower.still": "酒廠",
+ "block.basepower.refined_oil": "成品油",
+ "block.basepower.fluid_switch": "閥",
+ "block.basepower.converter_rf_steam": "蒸汽-RF 變壓器",
+ "block.basepower.converter_rf_electricity": "電力-RF 變壓器",
+ "block.basepower.converter_rf_quantum": "量子-RF 變壓器",
+ "block.basepower.converter_tr_electricity": "電力-EU 變壓器",
+ "block.basepower.fluid_pipe_terminal": "液体管"
+}
diff --git a/src/main/resources/assets/poweradvantage/models/block/converter_rf_electricity.json b/src/main/resources/assets/basepower/models/block/converter_rf_electricity.json
similarity index 94%
rename from src/main/resources/assets/poweradvantage/models/block/converter_rf_electricity.json
rename to src/main/resources/assets/basepower/models/block/converter_rf_electricity.json
index 01a03f62..dbdf82ad 100644
--- a/src/main/resources/assets/poweradvantage/models/block/converter_rf_electricity.json
+++ b/src/main/resources/assets/basepower/models/block/converter_rf_electricity.json
@@ -1,10 +1,10 @@
{
"parent": "block/block",
"textures": {
- "face": "poweradvantage:blocks/steel_frame",
- "core": "poweradvantage:materials/plastic",
- "plug": "poweradvantage:blocks/filter_bottom",
- "particle": "poweradvantage:materials/steel"
+ "face": "basepower:blocks/steel_frame",
+ "core": "basepower:materials/plastic",
+ "plug": "basepower:blocks/filter_bottom",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/poweradvantage/models/block/converter_rf_quantum.json b/src/main/resources/assets/basepower/models/block/converter_rf_quantum.json
similarity index 96%
rename from src/main/resources/assets/poweradvantage/models/block/converter_rf_quantum.json
rename to src/main/resources/assets/basepower/models/block/converter_rf_quantum.json
index 5733e1cb..bd4bfd9b 100644
--- a/src/main/resources/assets/poweradvantage/models/block/converter_rf_quantum.json
+++ b/src/main/resources/assets/basepower/models/block/converter_rf_quantum.json
@@ -1,10 +1,10 @@
{
"parent": "block/block",
"textures": {
- "face": "poweradvantage:blocks/steel_frame",
+ "face": "basepower:blocks/steel_frame",
"core": "minecraft:block/packed_ice",
- "plug": "poweradvantage:blocks/filter_bottom",
- "particle": "poweradvantage:materials/steel"
+ "plug": "basepower:blocks/filter_bottom",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/poweradvantage/models/block/converter_rf_steam.json b/src/main/resources/assets/basepower/models/block/converter_rf_steam.json
similarity index 95%
rename from src/main/resources/assets/poweradvantage/models/block/converter_rf_steam.json
rename to src/main/resources/assets/basepower/models/block/converter_rf_steam.json
index a831250b..b1fe2c85 100644
--- a/src/main/resources/assets/poweradvantage/models/block/converter_rf_steam.json
+++ b/src/main/resources/assets/basepower/models/block/converter_rf_steam.json
@@ -1,10 +1,10 @@
{
"parent": "block/block",
"textures": {
- "face": "poweradvantage:blocks/steel_frame",
- "core": "poweradvantage:materials/brass",
- "plug": "poweradvantage:blocks/filter_bottom",
- "particle": "poweradvantage:materials/steel"
+ "face": "basepower:blocks/steel_frame",
+ "core": "basepower:materials/brass",
+ "plug": "basepower:blocks/filter_bottom",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/basepower/models/block/converter_tr_electricity.json b/src/main/resources/assets/basepower/models/block/converter_tr_electricity.json
new file mode 100644
index 00000000..102f1072
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/converter_tr_electricity.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "basepower:blocks/techreborn_converter"
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/models/block/conveyor_base.json b/src/main/resources/assets/basepower/models/block/conveyor_base.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/conveyor_base.json
rename to src/main/resources/assets/basepower/models/block/conveyor_base.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/crude_oil.json b/src/main/resources/assets/basepower/models/block/crude_oil.json
similarity index 52%
rename from src/main/resources/assets/poweradvantage/models/block/crude_oil.json
rename to src/main/resources/assets/basepower/models/block/crude_oil.json
index 37af9662..7176ee6e 100644
--- a/src/main/resources/assets/poweradvantage/models/block/crude_oil.json
+++ b/src/main/resources/assets/basepower/models/block/crude_oil.json
@@ -1,6 +1,6 @@
{
"parent": "minecraft:block/block",
"textures": {
- "particle": "poweradvantage:blocks/crude_oil_still"
+ "particle": "basepower:blocks/crude_oil_still"
}
}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_discharge.json b/src/main/resources/assets/basepower/models/block/fluid_discharge.json
new file mode 100644
index 00000000..2ee79703
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_discharge.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/cube_bottom_top",
+ "textures": {
+ "top": "basepower:blocks/fluid_discharge_side",
+ "bottom": "basepower:blocks/fluid_discharge_face",
+ "side": "basepower:blocks/fluid_discharge_side"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/block/fluid_drain.json b/src/main/resources/assets/basepower/models/block/fluid_drain.json
new file mode 100644
index 00000000..b076dd00
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_drain.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/cube_bottom_top",
+ "textures": {
+ "top": "basepower:blocks/fluid_drain_face",
+ "bottom": "basepower:blocks/fluid_drain_side",
+ "side": "basepower:blocks/fluid_drain_side"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_metal_tank.json b/src/main/resources/assets/basepower/models/block/fluid_metal_tank.json
similarity index 94%
rename from src/main/resources/assets/poweradvantage/models/block/fluid_metal_tank.json
rename to src/main/resources/assets/basepower/models/block/fluid_metal_tank.json
index 33428415..85fc4abf 100644
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_metal_tank.json
+++ b/src/main/resources/assets/basepower/models/block/fluid_metal_tank.json
@@ -1,10 +1,10 @@
{
"parent": "block/block",
"textures": {
- "top": "poweradvantage:blocks/fluid_metal_tank_top",
- "bottom": "poweradvantage:blocks/fluid_metal_tank_top",
- "side": "poweradvantage:blocks/fluid_metal_tank_side",
- "particle": "poweradvantage:blocks/fluid_metal_tank_side"
+ "top": "basepower:blocks/fluid_metal_tank_top",
+ "bottom": "basepower:blocks/fluid_metal_tank_top",
+ "side": "basepower:blocks/fluid_metal_tank_side",
+ "particle": "basepower:blocks/fluid_metal_tank_side"
},
"elements": [
{
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_0.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_0.json
new file mode 100644
index 00000000..65e3862c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_0.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_0",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_densuw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_densuw.json
new file mode 100644
index 00000000..3de01b0f
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_densuw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_densuw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_desuw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_desuw.json
new file mode 100644
index 00000000..c61fadb9
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_desuw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_desuw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_dnu.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_dnu.json
new file mode 100644
index 00000000..cfb26b68
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_dnu.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_dnu",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_ensw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_ensw.json
new file mode 100644
index 00000000..d0f8c0c8
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_ensw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_ensw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_n.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_n.json
new file mode 100644
index 00000000..2401588e
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_n.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_n",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_ns.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_ns.json
new file mode 100644
index 00000000..b2dc847d
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_ns.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_ns",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_nsuw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_nsuw.json
new file mode 100644
index 00000000..eeaf1cc9
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_nsuw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_nsuw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_nsw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_nsw.json
new file mode 100644
index 00000000..75c2bf60
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_nsw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_nsw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_nuw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_nuw.json
new file mode 100644
index 00000000..4dba871f
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_nuw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_nuw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_pipe_nw.json b/src/main/resources/assets/basepower/models/block/fluid_pipe_nw.json
new file mode 100644
index 00000000..a7aa067c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_pipe_nw.json
@@ -0,0 +1,7 @@
+{
+ "parent": "basepower:block/pipe4_nw",
+ "textures": {
+ "texture": "basepower:blocks/fluid_pipe",
+ "particle": "basepower:materials/iron"
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_storage_tank.json b/src/main/resources/assets/basepower/models/block/fluid_storage_tank.json
similarity index 97%
rename from src/main/resources/assets/poweradvantage/models/block/fluid_storage_tank.json
rename to src/main/resources/assets/basepower/models/block/fluid_storage_tank.json
index c8daff39..70f1e281 100644
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_storage_tank.json
+++ b/src/main/resources/assets/basepower/models/block/fluid_storage_tank.json
@@ -1,9 +1,9 @@
{
"parent": "block/block",
"textures": {
- "walls": "poweradvantage:materials/plastic",
- "supports": "poweradvantage:materials/steel",
- "particle": "poweradvantage:materials/plastic"
+ "walls": "basepower:materials/plastic",
+ "supports": "basepower:materials/steel",
+ "particle": "basepower:materials/plastic"
},
"elements": [
{
diff --git a/src/main/resources/assets/basepower/models/block/fluid_switch_off.json b/src/main/resources/assets/basepower/models/block/fluid_switch_off.json
new file mode 100644
index 00000000..53991a62
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_switch_off.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "basepower:blocks/fluid_switch_off",
+ "particle": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/fluid_switch_on.json b/src/main/resources/assets/basepower/models/block/fluid_switch_on.json
new file mode 100644
index 00000000..b132b591
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/fluid_switch_on.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "basepower:blocks/fluid_switch_on",
+ "particle": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/models/block/infinite_electricity.json b/src/main/resources/assets/basepower/models/block/infinite_electricity.json
similarity index 52%
rename from src/main/resources/assets/poweradvantage/models/block/infinite_electricity.json
rename to src/main/resources/assets/basepower/models/block/infinite_electricity.json
index 40f79af8..83005105 100644
--- a/src/main/resources/assets/poweradvantage/models/block/infinite_electricity.json
+++ b/src/main/resources/assets/basepower/models/block/infinite_electricity.json
@@ -1,6 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
- "all": "poweradvantage:materials/metal_panel"
+ "all": "basepower:materials/metal_panel"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/block/infinite_quantum.json b/src/main/resources/assets/basepower/models/block/infinite_quantum.json
similarity index 52%
rename from src/main/resources/assets/poweradvantage/models/block/infinite_quantum.json
rename to src/main/resources/assets/basepower/models/block/infinite_quantum.json
index 40f79af8..83005105 100644
--- a/src/main/resources/assets/poweradvantage/models/block/infinite_quantum.json
+++ b/src/main/resources/assets/basepower/models/block/infinite_quantum.json
@@ -1,6 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
- "all": "poweradvantage:materials/metal_panel"
+ "all": "basepower:materials/metal_panel"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/block/infinite_steam.json b/src/main/resources/assets/basepower/models/block/infinite_steam.json
similarity index 52%
rename from src/main/resources/assets/poweradvantage/models/block/infinite_steam.json
rename to src/main/resources/assets/basepower/models/block/infinite_steam.json
index 40f79af8..83005105 100644
--- a/src/main/resources/assets/poweradvantage/models/block/infinite_steam.json
+++ b/src/main/resources/assets/basepower/models/block/infinite_steam.json
@@ -1,6 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
- "all": "poweradvantage:materials/metal_panel"
+ "all": "basepower:materials/metal_panel"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/block/item_conveyor.json b/src/main/resources/assets/basepower/models/block/item_conveyor.json
new file mode 100644
index 00000000..9da9824c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_conveyor.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/item_conveyor_top",
+ "side": "basepower:blocks/item_conveyor_side",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_block.json b/src/main/resources/assets/basepower/models/block/item_filter_block.json
new file mode 100644
index 00000000..fadbf83d
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_block.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_block",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_food.json b/src/main/resources/assets/basepower/models/block/item_filter_food.json
new file mode 100644
index 00000000..67b14ad3
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_food.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_food",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_fuel.json b/src/main/resources/assets/basepower/models/block/item_filter_fuel.json
new file mode 100644
index 00000000..41c8e925
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_fuel.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_fuel",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_inventory.json b/src/main/resources/assets/basepower/models/block/item_filter_inventory.json
new file mode 100644
index 00000000..cbec1c3c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_inventory.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_inventory",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_ore.json b/src/main/resources/assets/basepower/models/block/item_filter_ore.json
new file mode 100644
index 00000000..040a4fd8
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_ore.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_ore",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_overflow.json b/src/main/resources/assets/basepower/models/block/item_filter_overflow.json
new file mode 100644
index 00000000..4f71669f
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_overflow.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_overflow",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_plant.json b/src/main/resources/assets/basepower/models/block/item_filter_plant.json
new file mode 100644
index 00000000..1e097b16
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_plant.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_plantable",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/block/item_filter_smelt.json b/src/main/resources/assets/basepower/models/block/item_filter_smelt.json
new file mode 100644
index 00000000..ee436335
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/block/item_filter_smelt.json
@@ -0,0 +1,10 @@
+{
+ "parent": "basepower:block/conveyor_base",
+ "textures": {
+ "top": "basepower:blocks/item_conveyor_top",
+ "bottom": "basepower:blocks/filter_bottom",
+ "side": "basepower:blocks/filter_side_smeltable",
+ "end": "basepower:blocks/item_conveyor_end",
+ "rim": "basepower:materials/steel"
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_0.json b/src/main/resources/assets/basepower/models/block/pipe1_0.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_0.json
rename to src/main/resources/assets/basepower/models/block/pipe1_0.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_densuw.json b/src/main/resources/assets/basepower/models/block/pipe1_densuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_densuw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_densuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_desuw.json b/src/main/resources/assets/basepower/models/block/pipe1_desuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_desuw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_desuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_dnu.json b/src/main/resources/assets/basepower/models/block/pipe1_dnu.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_dnu.json
rename to src/main/resources/assets/basepower/models/block/pipe1_dnu.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_ensw.json b/src/main/resources/assets/basepower/models/block/pipe1_ensw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_ensw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_ensw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_n.json b/src/main/resources/assets/basepower/models/block/pipe1_n.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_n.json
rename to src/main/resources/assets/basepower/models/block/pipe1_n.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_ns.json b/src/main/resources/assets/basepower/models/block/pipe1_ns.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_ns.json
rename to src/main/resources/assets/basepower/models/block/pipe1_ns.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_nsuw.json b/src/main/resources/assets/basepower/models/block/pipe1_nsuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_nsuw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_nsuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_nsw.json b/src/main/resources/assets/basepower/models/block/pipe1_nsw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_nsw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_nsw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_nuw.json b/src/main/resources/assets/basepower/models/block/pipe1_nuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_nuw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_nuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe1_nw.json b/src/main/resources/assets/basepower/models/block/pipe1_nw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe1_nw.json
rename to src/main/resources/assets/basepower/models/block/pipe1_nw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_0.json b/src/main/resources/assets/basepower/models/block/pipe2_0.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_0.json
rename to src/main/resources/assets/basepower/models/block/pipe2_0.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_densuw.json b/src/main/resources/assets/basepower/models/block/pipe2_densuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_densuw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_densuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_desuw.json b/src/main/resources/assets/basepower/models/block/pipe2_desuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_desuw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_desuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_dnu.json b/src/main/resources/assets/basepower/models/block/pipe2_dnu.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_dnu.json
rename to src/main/resources/assets/basepower/models/block/pipe2_dnu.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_ensw.json b/src/main/resources/assets/basepower/models/block/pipe2_ensw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_ensw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_ensw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_n.json b/src/main/resources/assets/basepower/models/block/pipe2_n.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_n.json
rename to src/main/resources/assets/basepower/models/block/pipe2_n.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_ns.json b/src/main/resources/assets/basepower/models/block/pipe2_ns.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_ns.json
rename to src/main/resources/assets/basepower/models/block/pipe2_ns.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_nsuw.json b/src/main/resources/assets/basepower/models/block/pipe2_nsuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_nsuw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_nsuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_nsw.json b/src/main/resources/assets/basepower/models/block/pipe2_nsw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_nsw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_nsw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_nuw.json b/src/main/resources/assets/basepower/models/block/pipe2_nuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_nuw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_nuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe2_nw.json b/src/main/resources/assets/basepower/models/block/pipe2_nw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe2_nw.json
rename to src/main/resources/assets/basepower/models/block/pipe2_nw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_0.json b/src/main/resources/assets/basepower/models/block/pipe3_0.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_0.json
rename to src/main/resources/assets/basepower/models/block/pipe3_0.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_densuw.json b/src/main/resources/assets/basepower/models/block/pipe3_densuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_densuw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_densuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_desuw.json b/src/main/resources/assets/basepower/models/block/pipe3_desuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_desuw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_desuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_dnu.json b/src/main/resources/assets/basepower/models/block/pipe3_dnu.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_dnu.json
rename to src/main/resources/assets/basepower/models/block/pipe3_dnu.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_ensw.json b/src/main/resources/assets/basepower/models/block/pipe3_ensw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_ensw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_ensw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_n.json b/src/main/resources/assets/basepower/models/block/pipe3_n.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_n.json
rename to src/main/resources/assets/basepower/models/block/pipe3_n.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_ns.json b/src/main/resources/assets/basepower/models/block/pipe3_ns.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_ns.json
rename to src/main/resources/assets/basepower/models/block/pipe3_ns.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_nsuw.json b/src/main/resources/assets/basepower/models/block/pipe3_nsuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_nsuw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_nsuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_nsw.json b/src/main/resources/assets/basepower/models/block/pipe3_nsw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_nsw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_nsw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_nuw.json b/src/main/resources/assets/basepower/models/block/pipe3_nuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_nuw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_nuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe3_nw.json b/src/main/resources/assets/basepower/models/block/pipe3_nw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe3_nw.json
rename to src/main/resources/assets/basepower/models/block/pipe3_nw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_0.json b/src/main/resources/assets/basepower/models/block/pipe4_0.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_0.json
rename to src/main/resources/assets/basepower/models/block/pipe4_0.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_densuw.json b/src/main/resources/assets/basepower/models/block/pipe4_densuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_densuw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_densuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_desuw.json b/src/main/resources/assets/basepower/models/block/pipe4_desuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_desuw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_desuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_dnu.json b/src/main/resources/assets/basepower/models/block/pipe4_dnu.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_dnu.json
rename to src/main/resources/assets/basepower/models/block/pipe4_dnu.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_ensw.json b/src/main/resources/assets/basepower/models/block/pipe4_ensw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_ensw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_ensw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_n.json b/src/main/resources/assets/basepower/models/block/pipe4_n.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_n.json
rename to src/main/resources/assets/basepower/models/block/pipe4_n.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_ns.json b/src/main/resources/assets/basepower/models/block/pipe4_ns.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_ns.json
rename to src/main/resources/assets/basepower/models/block/pipe4_ns.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_nsuw.json b/src/main/resources/assets/basepower/models/block/pipe4_nsuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_nsuw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_nsuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_nsw.json b/src/main/resources/assets/basepower/models/block/pipe4_nsw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_nsw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_nsw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_nuw.json b/src/main/resources/assets/basepower/models/block/pipe4_nuw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_nuw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_nuw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/pipe4_nw.json b/src/main/resources/assets/basepower/models/block/pipe4_nw.json
similarity index 100%
rename from src/main/resources/assets/poweradvantage/models/block/pipe4_nw.json
rename to src/main/resources/assets/basepower/models/block/pipe4_nw.json
diff --git a/src/main/resources/assets/poweradvantage/models/block/refined_oil.json b/src/main/resources/assets/basepower/models/block/refined_oil.json
similarity index 51%
rename from src/main/resources/assets/poweradvantage/models/block/refined_oil.json
rename to src/main/resources/assets/basepower/models/block/refined_oil.json
index 81449e23..28f83b65 100644
--- a/src/main/resources/assets/poweradvantage/models/block/refined_oil.json
+++ b/src/main/resources/assets/basepower/models/block/refined_oil.json
@@ -1,6 +1,6 @@
{
"parent": "minecraft:block/block",
"textures": {
- "particle": "poweradvantage:blocks/refined_oil_still"
+ "particle": "basepower:blocks/refined_oil_still"
}
}
diff --git a/src/main/resources/assets/poweradvantage/models/block/steel_frame.json b/src/main/resources/assets/basepower/models/block/steel_frame.json
similarity index 94%
rename from src/main/resources/assets/poweradvantage/models/block/steel_frame.json
rename to src/main/resources/assets/basepower/models/block/steel_frame.json
index 6e5ef049..a423e34b 100644
--- a/src/main/resources/assets/poweradvantage/models/block/steel_frame.json
+++ b/src/main/resources/assets/basepower/models/block/steel_frame.json
@@ -1,8 +1,8 @@
{
"parent": "block/block",
"textures": {
- "face": "poweradvantage:blocks/steel_frame",
- "particle": "poweradvantage:materials/steel"
+ "face": "basepower:blocks/steel_frame",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/poweradvantage/models/block/still_off.json b/src/main/resources/assets/basepower/models/block/still_off.json
similarity index 96%
rename from src/main/resources/assets/poweradvantage/models/block/still_off.json
rename to src/main/resources/assets/basepower/models/block/still_off.json
index 69edeb89..6b62bcb8 100644
--- a/src/main/resources/assets/poweradvantage/models/block/still_off.json
+++ b/src/main/resources/assets/basepower/models/block/still_off.json
@@ -4,8 +4,8 @@
"top": "minecraft:block/furnace_top",
"front": "minecraft:block/furnace_front",
"side": "minecraft:block/furnace_side",
- "tank": "poweradvantage:materials/steel",
- "particle": "poweradvantage:materials/steel"
+ "tank": "basepower:materials/steel",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/poweradvantage/models/block/still_on.json b/src/main/resources/assets/basepower/models/block/still_on.json
similarity index 96%
rename from src/main/resources/assets/poweradvantage/models/block/still_on.json
rename to src/main/resources/assets/basepower/models/block/still_on.json
index ac5eb132..0296244d 100644
--- a/src/main/resources/assets/poweradvantage/models/block/still_on.json
+++ b/src/main/resources/assets/basepower/models/block/still_on.json
@@ -4,8 +4,8 @@
"top": "minecraft:block/furnace_top",
"front": "minecraft:block/furnace_front_on",
"side": "minecraft:block/furnace_side",
- "tank": "poweradvantage:materials/steel",
- "particle": "poweradvantage:materials/steel"
+ "tank": "basepower:materials/steel",
+ "particle": "basepower:materials/steel"
},
"elements": [
{
diff --git a/src/main/resources/assets/basepower/models/item/bioplastic_ingot.json b/src/main/resources/assets/basepower/models/item/bioplastic_ingot.json
new file mode 100644
index 00000000..96b8cfd8
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/bioplastic_ingot.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "basepower:items/bioplastic_ingot"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/bucket_crude_oil.json b/src/main/resources/assets/basepower/models/item/bucket_crude_oil.json
new file mode 100644
index 00000000..bc0182ff
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/bucket_crude_oil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "basepower:items/bucket_crude_oil"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/item/bucket_refined_oil.json b/src/main/resources/assets/basepower/models/item/bucket_refined_oil.json
new file mode 100644
index 00000000..145160a4
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/bucket_refined_oil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "basepower:items/bucket_refined_oil"
+ }
+}
diff --git a/src/main/resources/assets/basepower/models/item/converter_rf_electricity.json b/src/main/resources/assets/basepower/models/item/converter_rf_electricity.json
new file mode 100644
index 00000000..8016dd44
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/converter_rf_electricity.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/converter_rf_electricity"
+}
diff --git a/src/main/resources/assets/basepower/models/item/converter_rf_quantum.json b/src/main/resources/assets/basepower/models/item/converter_rf_quantum.json
new file mode 100644
index 00000000..20bffbeb
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/converter_rf_quantum.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/converter_rf_quantum"
+}
diff --git a/src/main/resources/assets/basepower/models/item/converter_rf_steam.json b/src/main/resources/assets/basepower/models/item/converter_rf_steam.json
new file mode 100644
index 00000000..77e6147c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/converter_rf_steam.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/converter_rf_steam"
+}
diff --git a/src/main/resources/assets/basepower/models/item/converter_tr_electricity.json b/src/main/resources/assets/basepower/models/item/converter_tr_electricity.json
new file mode 100644
index 00000000..8c54bb8f
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/converter_tr_electricity.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/converter_tr_electricity"
+}
diff --git a/src/main/resources/assets/basepower/models/item/crude_oil.json b/src/main/resources/assets/basepower/models/item/crude_oil.json
new file mode 100644
index 00000000..38fee3aa
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/crude_oil.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:item/crude_oil_bucket"
+}
diff --git a/src/main/resources/assets/poweradvantage/models/item/crude_oil_bucket.json b/src/main/resources/assets/basepower/models/item/crude_oil_bucket.json
similarity index 54%
rename from src/main/resources/assets/poweradvantage/models/item/crude_oil_bucket.json
rename to src/main/resources/assets/basepower/models/item/crude_oil_bucket.json
index 9e70d56f..e227a3d5 100644
--- a/src/main/resources/assets/poweradvantage/models/item/crude_oil_bucket.json
+++ b/src/main/resources/assets/basepower/models/item/crude_oil_bucket.json
@@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
- "layer0": "poweradvantage:items/bucket_crude_oil"
+ "layer0": "basepower:items/bucket_crude_oil"
}
}
diff --git a/src/main/resources/assets/basepower/models/item/fluid_discharge.json b/src/main/resources/assets/basepower/models/item/fluid_discharge.json
new file mode 100644
index 00000000..d9af1467
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_discharge.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/fluid_discharge"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_drain.json b/src/main/resources/assets/basepower/models/item/fluid_drain.json
new file mode 100644
index 00000000..60de5a6c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_drain.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/fluid_drain"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_metal_tank.json b/src/main/resources/assets/basepower/models/item/fluid_metal_tank.json
new file mode 100644
index 00000000..cc8c6058
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_metal_tank.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/fluid_metal_tank"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_pipe.json b/src/main/resources/assets/basepower/models/item/fluid_pipe.json
new file mode 100644
index 00000000..2cfca627
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_pipe.json
@@ -0,0 +1,4 @@
+{
+ "parent": "basepower:block/fluid_pipe_ns",
+ "ambientocclusion": false
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_pipe_terminal.json b/src/main/resources/assets/basepower/models/item/fluid_pipe_terminal.json
new file mode 100644
index 00000000..2cfca627
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_pipe_terminal.json
@@ -0,0 +1,4 @@
+{
+ "parent": "basepower:block/fluid_pipe_ns",
+ "ambientocclusion": false
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_storage_tank.json b/src/main/resources/assets/basepower/models/item/fluid_storage_tank.json
new file mode 100644
index 00000000..33831e30
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_storage_tank.json
@@ -0,0 +1,4 @@
+{
+ "parent": "basepower:block/fluid_storage_tank",
+ "ambientocclusion": false
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/fluid_switch.json b/src/main/resources/assets/basepower/models/item/fluid_switch.json
new file mode 100644
index 00000000..e62bd15b
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/fluid_switch.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/fluid_switch_on"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/infinite_electricity.json b/src/main/resources/assets/basepower/models/item/infinite_electricity.json
new file mode 100644
index 00000000..a1abf245
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/infinite_electricity.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/infinite_electricity"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/infinite_quantum.json b/src/main/resources/assets/basepower/models/item/infinite_quantum.json
new file mode 100644
index 00000000..53b56ddd
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/infinite_quantum.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/infinite_quantum"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/infinite_steam.json b/src/main/resources/assets/basepower/models/item/infinite_steam.json
new file mode 100644
index 00000000..e8f9061e
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/infinite_steam.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/infinite_steam"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_conveyor.json b/src/main/resources/assets/basepower/models/item/item_conveyor.json
new file mode 100644
index 00000000..f042d83c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_conveyor.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_conveyor"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_block.json b/src/main/resources/assets/basepower/models/item/item_filter_block.json
new file mode 100644
index 00000000..e820da77
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_block.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_block"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_food.json b/src/main/resources/assets/basepower/models/item/item_filter_food.json
new file mode 100644
index 00000000..96db616c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_food.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_food"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_fuel.json b/src/main/resources/assets/basepower/models/item/item_filter_fuel.json
new file mode 100644
index 00000000..1399fb3c
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_fuel.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_fuel"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_inventory.json b/src/main/resources/assets/basepower/models/item/item_filter_inventory.json
new file mode 100644
index 00000000..03a135df
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_inventory.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_inventory"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_ore.json b/src/main/resources/assets/basepower/models/item/item_filter_ore.json
new file mode 100644
index 00000000..7a44c344
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_ore.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_ore"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_overflow.json b/src/main/resources/assets/basepower/models/item/item_filter_overflow.json
new file mode 100644
index 00000000..caac6427
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_overflow.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_overflow"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_plant.json b/src/main/resources/assets/basepower/models/item/item_filter_plant.json
new file mode 100644
index 00000000..40beb7ab
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_plant.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_plant"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/item_filter_smelt.json b/src/main/resources/assets/basepower/models/item/item_filter_smelt.json
new file mode 100644
index 00000000..5386d841
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/item_filter_smelt.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/item_filter_smelt"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/refined_oil.json b/src/main/resources/assets/basepower/models/item/refined_oil.json
new file mode 100644
index 00000000..a79e57e9
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/refined_oil.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:item/refined_oil_bucket"
+}
diff --git a/src/main/resources/assets/poweradvantage/models/item/refined_oil_bucket.json b/src/main/resources/assets/basepower/models/item/refined_oil_bucket.json
similarity index 53%
rename from src/main/resources/assets/poweradvantage/models/item/refined_oil_bucket.json
rename to src/main/resources/assets/basepower/models/item/refined_oil_bucket.json
index 48c1456a..1b69ba5d 100644
--- a/src/main/resources/assets/poweradvantage/models/item/refined_oil_bucket.json
+++ b/src/main/resources/assets/basepower/models/item/refined_oil_bucket.json
@@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
- "layer0": "poweradvantage:items/bucket_refined_oil"
+ "layer0": "basepower:items/bucket_refined_oil"
}
}
diff --git a/src/main/resources/assets/poweradvantage/models/item/rotator_tool.json b/src/main/resources/assets/basepower/models/item/rotator_tool.json
similarity index 50%
rename from src/main/resources/assets/poweradvantage/models/item/rotator_tool.json
rename to src/main/resources/assets/basepower/models/item/rotator_tool.json
index 498abaf3..e096fa4c 100644
--- a/src/main/resources/assets/poweradvantage/models/item/rotator_tool.json
+++ b/src/main/resources/assets/basepower/models/item/rotator_tool.json
@@ -1,6 +1,6 @@
{
"parent": "item/handheld",
"textures": {
- "layer0": "poweradvantage:items/rotator_tool"
+ "layer0": "basepower:items/rotator_tool"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/sprocket.json b/src/main/resources/assets/basepower/models/item/sprocket.json
similarity index 53%
rename from src/main/resources/assets/poweradvantage/models/item/sprocket.json
rename to src/main/resources/assets/basepower/models/item/sprocket.json
index f26d4642..8555e9f9 100644
--- a/src/main/resources/assets/poweradvantage/models/item/sprocket.json
+++ b/src/main/resources/assets/basepower/models/item/sprocket.json
@@ -1,6 +1,6 @@
{
"parent": "item/generated",
"textures": {
- "layer0": "poweradvantage:items/sprocket"
+ "layer0": "basepower:items/sprocket"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/starch.json b/src/main/resources/assets/basepower/models/item/starch.json
similarity index 54%
rename from src/main/resources/assets/poweradvantage/models/item/starch.json
rename to src/main/resources/assets/basepower/models/item/starch.json
index ac3db87c..5e9dbcfe 100644
--- a/src/main/resources/assets/poweradvantage/models/item/starch.json
+++ b/src/main/resources/assets/basepower/models/item/starch.json
@@ -1,6 +1,6 @@
{
"parent": "item/generated",
"textures": {
- "layer0": "poweradvantage:items/starch"
+ "layer0": "basepower:items/starch"
}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/basepower/models/item/steel_frame.json b/src/main/resources/assets/basepower/models/item/steel_frame.json
new file mode 100644
index 00000000..78e655ea
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/steel_frame.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/steel_frame"
+}
diff --git a/src/main/resources/assets/basepower/models/item/still.json b/src/main/resources/assets/basepower/models/item/still.json
new file mode 100644
index 00000000..74f0491a
--- /dev/null
+++ b/src/main/resources/assets/basepower/models/item/still.json
@@ -0,0 +1,3 @@
+{
+ "parent": "basepower:block/still_off"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_flow.png b/src/main/resources/assets/basepower/textures/blocks/crude_oil_flow.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_flow.png
rename to src/main/resources/assets/basepower/textures/blocks/crude_oil_flow.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_flow.png.mcmeta b/src/main/resources/assets/basepower/textures/blocks/crude_oil_flow.png.mcmeta
similarity index 91%
rename from src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_flow.png.mcmeta
rename to src/main/resources/assets/basepower/textures/blocks/crude_oil_flow.png.mcmeta
index de3267f0..4f0718ac 100644
--- a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_flow.png.mcmeta
+++ b/src/main/resources/assets/basepower/textures/blocks/crude_oil_flow.png.mcmeta
@@ -1,3 +1,3 @@
-{
- "animation": {}
+{
+ "animation": {}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_still.png b/src/main/resources/assets/basepower/textures/blocks/crude_oil_still.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_still.png
rename to src/main/resources/assets/basepower/textures/blocks/crude_oil_still.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_still.png.mcmeta b/src/main/resources/assets/basepower/textures/blocks/crude_oil_still.png.mcmeta
similarity index 89%
rename from src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_still.png.mcmeta
rename to src/main/resources/assets/basepower/textures/blocks/crude_oil_still.png.mcmeta
index 4b721e09..0645f48c 100644
--- a/src/main/resources/assets/poweradvantage/textures/blocks/crude_oil_still.png.mcmeta
+++ b/src/main/resources/assets/basepower/textures/blocks/crude_oil_still.png.mcmeta
@@ -1,5 +1,5 @@
-{
- "animation": {
- "frametime": 2
- }
-}
+{
+ "animation": {
+ "frametime": 2
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_bottom.png b/src/main/resources/assets/basepower/textures/blocks/filter_bottom.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_bottom.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_bottom.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_block.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_block.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_block.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_block.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_food.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_food.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_food.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_food.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_fuel.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_fuel.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_fuel.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_fuel.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_inventory.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_inventory.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_inventory.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_inventory.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_ore.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_ore.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_ore.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_ore.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_overflow.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_overflow.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_overflow.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_overflow.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_plantable.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_plantable.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_plantable.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_plantable.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/filter_side_smeltable.png b/src/main/resources/assets/basepower/textures/blocks/filter_side_smeltable.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/filter_side_smeltable.png
rename to src/main/resources/assets/basepower/textures/blocks/filter_side_smeltable.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_discharge_face.png b/src/main/resources/assets/basepower/textures/blocks/fluid_discharge_face.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_discharge_face.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_discharge_face.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_discharge_side.png b/src/main/resources/assets/basepower/textures/blocks/fluid_discharge_side.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_discharge_side.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_discharge_side.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_drain_face.png b/src/main/resources/assets/basepower/textures/blocks/fluid_drain_face.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_drain_face.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_drain_face.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_drain_side.png b/src/main/resources/assets/basepower/textures/blocks/fluid_drain_side.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_drain_side.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_drain_side.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_metal_tank_side.png b/src/main/resources/assets/basepower/textures/blocks/fluid_metal_tank_side.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_metal_tank_side.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_metal_tank_side.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_metal_tank_top.png b/src/main/resources/assets/basepower/textures/blocks/fluid_metal_tank_top.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_metal_tank_top.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_metal_tank_top.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_pipe.png b/src/main/resources/assets/basepower/textures/blocks/fluid_pipe.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_pipe.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_pipe.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_switch_off.png b/src/main/resources/assets/basepower/textures/blocks/fluid_switch_off.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_switch_off.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_switch_off.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/fluid_switch_on.png b/src/main/resources/assets/basepower/textures/blocks/fluid_switch_on.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/fluid_switch_on.png
rename to src/main/resources/assets/basepower/textures/blocks/fluid_switch_on.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_end.png b/src/main/resources/assets/basepower/textures/blocks/item_conveyor_end.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_end.png
rename to src/main/resources/assets/basepower/textures/blocks/item_conveyor_end.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_side.png b/src/main/resources/assets/basepower/textures/blocks/item_conveyor_side.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_side.png
rename to src/main/resources/assets/basepower/textures/blocks/item_conveyor_side.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_top.png b/src/main/resources/assets/basepower/textures/blocks/item_conveyor_top.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/item_conveyor_top.png
rename to src/main/resources/assets/basepower/textures/blocks/item_conveyor_top.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/metal_panel.png b/src/main/resources/assets/basepower/textures/blocks/metal_panel.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/metal_panel.png
rename to src/main/resources/assets/basepower/textures/blocks/metal_panel.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/powercable.png b/src/main/resources/assets/basepower/textures/blocks/powercable.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/powercable.png
rename to src/main/resources/assets/basepower/textures/blocks/powercable.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_flow.png b/src/main/resources/assets/basepower/textures/blocks/refined_oil_flow.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_flow.png
rename to src/main/resources/assets/basepower/textures/blocks/refined_oil_flow.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_flow.png.mcmeta b/src/main/resources/assets/basepower/textures/blocks/refined_oil_flow.png.mcmeta
similarity index 91%
rename from src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_flow.png.mcmeta
rename to src/main/resources/assets/basepower/textures/blocks/refined_oil_flow.png.mcmeta
index de3267f0..4f0718ac 100644
--- a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_flow.png.mcmeta
+++ b/src/main/resources/assets/basepower/textures/blocks/refined_oil_flow.png.mcmeta
@@ -1,3 +1,3 @@
-{
- "animation": {}
+{
+ "animation": {}
}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_still.png b/src/main/resources/assets/basepower/textures/blocks/refined_oil_still.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_still.png
rename to src/main/resources/assets/basepower/textures/blocks/refined_oil_still.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_still.png.mcmeta b/src/main/resources/assets/basepower/textures/blocks/refined_oil_still.png.mcmeta
similarity index 89%
rename from src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_still.png.mcmeta
rename to src/main/resources/assets/basepower/textures/blocks/refined_oil_still.png.mcmeta
index 4b721e09..0645f48c 100644
--- a/src/main/resources/assets/poweradvantage/textures/blocks/refined_oil_still.png.mcmeta
+++ b/src/main/resources/assets/basepower/textures/blocks/refined_oil_still.png.mcmeta
@@ -1,5 +1,5 @@
-{
- "animation": {
- "frametime": 2
- }
-}
+{
+ "animation": {
+ "frametime": 2
+ }
+}
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/steel_frame.png b/src/main/resources/assets/basepower/textures/blocks/steel_frame.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/steel_frame.png
rename to src/main/resources/assets/basepower/textures/blocks/steel_frame.png
diff --git a/src/main/resources/assets/poweradvantage/textures/blocks/techreborn_converter.png b/src/main/resources/assets/basepower/textures/blocks/techreborn_converter.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/blocks/techreborn_converter.png
rename to src/main/resources/assets/basepower/textures/blocks/techreborn_converter.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/fluid_discharge_gui.png b/src/main/resources/assets/basepower/textures/gui/container/fluid_discharge_gui.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/fluid_discharge_gui.png
rename to src/main/resources/assets/basepower/textures/gui/container/fluid_discharge_gui.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/fluid_drain_gui.png b/src/main/resources/assets/basepower/textures/gui/container/fluid_drain_gui.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/fluid_drain_gui.png
rename to src/main/resources/assets/basepower/textures/gui/container/fluid_drain_gui.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/fluid_metal_tank_gui.png b/src/main/resources/assets/basepower/textures/gui/container/fluid_metal_tank_gui.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/fluid_metal_tank_gui.png
rename to src/main/resources/assets/basepower/textures/gui/container/fluid_metal_tank_gui.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/fluid_storage_tank_gui.png b/src/main/resources/assets/basepower/textures/gui/container/fluid_storage_tank_gui.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/fluid_storage_tank_gui.png
rename to src/main/resources/assets/basepower/textures/gui/container/fluid_storage_tank_gui.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_block.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_block.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_block.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_block.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_food.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_food.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_food.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_food.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_fuel.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_fuel.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_fuel.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_fuel.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_inventory.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_inventory.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_inventory.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_inventory.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_ore.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_ore.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_ore.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_ore.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_overflow.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_overflow.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_overflow.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_overflow.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_plant.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_plant.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_plant.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_plant.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_smelt.png b/src/main/resources/assets/basepower/textures/gui/container/item_conveyor_smelt.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/item_conveyor_smelt.png
rename to src/main/resources/assets/basepower/textures/gui/container/item_conveyor_smelt.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/machineGUI_template.png b/src/main/resources/assets/basepower/textures/gui/container/machineGUI_template.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/machineGUI_template.png
rename to src/main/resources/assets/basepower/textures/gui/container/machineGUI_template.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/player_inventory.png b/src/main/resources/assets/basepower/textures/gui/container/player_inventory.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/player_inventory.png
rename to src/main/resources/assets/basepower/textures/gui/container/player_inventory.png
diff --git a/src/main/resources/assets/poweradvantage/textures/gui/container/still_gui.png b/src/main/resources/assets/basepower/textures/gui/container/still_gui.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/gui/container/still_gui.png
rename to src/main/resources/assets/basepower/textures/gui/container/still_gui.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/bioplastic_ingot.png b/src/main/resources/assets/basepower/textures/items/bioplastic_ingot.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/bioplastic_ingot.png
rename to src/main/resources/assets/basepower/textures/items/bioplastic_ingot.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/bucket_crude_oil.png b/src/main/resources/assets/basepower/textures/items/bucket_crude_oil.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/bucket_crude_oil.png
rename to src/main/resources/assets/basepower/textures/items/bucket_crude_oil.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/bucket_refined_oil.png b/src/main/resources/assets/basepower/textures/items/bucket_refined_oil.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/bucket_refined_oil.png
rename to src/main/resources/assets/basepower/textures/items/bucket_refined_oil.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/rotator_tool.png b/src/main/resources/assets/basepower/textures/items/rotator_tool.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/rotator_tool.png
rename to src/main/resources/assets/basepower/textures/items/rotator_tool.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/sprocket.png b/src/main/resources/assets/basepower/textures/items/sprocket.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/sprocket.png
rename to src/main/resources/assets/basepower/textures/items/sprocket.png
diff --git a/src/main/resources/assets/poweradvantage/textures/items/starch.png b/src/main/resources/assets/basepower/textures/items/starch.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/items/starch.png
rename to src/main/resources/assets/basepower/textures/items/starch.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/brass.png b/src/main/resources/assets/basepower/textures/materials/brass.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/brass.png
rename to src/main/resources/assets/basepower/textures/materials/brass.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/copper.png b/src/main/resources/assets/basepower/textures/materials/copper.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/copper.png
rename to src/main/resources/assets/basepower/textures/materials/copper.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/invar.png b/src/main/resources/assets/basepower/textures/materials/invar.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/invar.png
rename to src/main/resources/assets/basepower/textures/materials/invar.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/iron.png b/src/main/resources/assets/basepower/textures/materials/iron.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/iron.png
rename to src/main/resources/assets/basepower/textures/materials/iron.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/metal_panel.png b/src/main/resources/assets/basepower/textures/materials/metal_panel.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/metal_panel.png
rename to src/main/resources/assets/basepower/textures/materials/metal_panel.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/plastic.png b/src/main/resources/assets/basepower/textures/materials/plastic.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/plastic.png
rename to src/main/resources/assets/basepower/textures/materials/plastic.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/steel.png b/src/main/resources/assets/basepower/textures/materials/steel.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/steel.png
rename to src/main/resources/assets/basepower/textures/materials/steel.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/steel_dark.png b/src/main/resources/assets/basepower/textures/materials/steel_dark.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/steel_dark.png
rename to src/main/resources/assets/basepower/textures/materials/steel_dark.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/stone.png b/src/main/resources/assets/basepower/textures/materials/stone.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/stone.png
rename to src/main/resources/assets/basepower/textures/materials/stone.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/stone_brick.png b/src/main/resources/assets/basepower/textures/materials/stone_brick.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/stone_brick.png
rename to src/main/resources/assets/basepower/textures/materials/stone_brick.png
diff --git a/src/main/resources/assets/poweradvantage/textures/materials/wood.png b/src/main/resources/assets/basepower/textures/materials/wood.png
similarity index 100%
rename from src/main/resources/assets/poweradvantage/textures/materials/wood.png
rename to src/main/resources/assets/basepower/textures/materials/wood.png
diff --git a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_electricity.json b/src/main/resources/assets/poweradvantage/blockstates/converter_rf_electricity.json
deleted file mode 100644
index 35df5016..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/converter_rf_electricity",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/converter_rf_electricity"
- },
- "facing=south": {
- "model": "poweradvantage:block/converter_rf_electricity",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/converter_rf_electricity",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_quantum.json b/src/main/resources/assets/poweradvantage/blockstates/converter_rf_quantum.json
deleted file mode 100644
index 257c03cf..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_quantum.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/converter_rf_quantum",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/converter_rf_quantum"
- },
- "facing=south": {
- "model": "poweradvantage:block/converter_rf_quantum",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/converter_rf_quantum",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_steam.json b/src/main/resources/assets/poweradvantage/blockstates/converter_rf_steam.json
deleted file mode 100644
index d868d075..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/converter_rf_steam.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/converter_rf_steam",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/converter_rf_steam"
- },
- "facing=south": {
- "model": "poweradvantage:block/converter_rf_steam",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/converter_rf_steam",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/converter_tr_electricity.json b/src/main/resources/assets/poweradvantage/blockstates/converter_tr_electricity.json
deleted file mode 100644
index d7730168..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/converter_tr_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/converter_tr_electricity",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/converter_tr_electricity"
- },
- "facing=south": {
- "model": "poweradvantage:block/converter_tr_electricity",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/converter_tr_electricity",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/crude_oil.json b/src/main/resources/assets/poweradvantage/blockstates/crude_oil.json
deleted file mode 100644
index 9ff671aa..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/crude_oil.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "variants": {
- "": { "model": "poweradvantage:block/crude_oil" }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_discharge.json b/src/main/resources/assets/poweradvantage/blockstates/fluid_discharge.json
deleted file mode 100644
index 1266604e..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_discharge.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/fluid_discharge",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/fluid_discharge"
- },
- "facing=south": {
- "model": "poweradvantage:block/fluid_discharge",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/fluid_discharge",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_drain.json b/src/main/resources/assets/poweradvantage/blockstates/fluid_drain.json
deleted file mode 100644
index 70980092..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_drain.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/fluid_drain",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/fluid_drain"
- },
- "facing=south": {
- "model": "poweradvantage:block/fluid_drain",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/fluid_drain",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_storage_tank.json b/src/main/resources/assets/poweradvantage/blockstates/fluid_storage_tank.json
deleted file mode 100644
index c835f911..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_storage_tank.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/fluid_storage_tank",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/fluid_storage_tank"
- },
- "facing=south": {
- "model": "poweradvantage:block/fluid_storage_tank",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/fluid_storage_tank",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/fluid_switch.json b/src/main/resources/assets/poweradvantage/blockstates/fluid_switch.json
deleted file mode 100644
index 5817285b..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/fluid_switch.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "variants": {
- "active=false": {
- "model": "poweradvantage:block/fluid_switch_off"
- },
- "active=true": {
- "model": "poweradvantage:block/fluid_switch_on"
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/infinite_electricity.json b/src/main/resources/assets/poweradvantage/blockstates/infinite_electricity.json
deleted file mode 100644
index e06b9490..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/infinite_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/infinite_electricity",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/infinite_electricity"
- },
- "facing=south": {
- "model": "poweradvantage:block/infinite_electricity",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/infinite_electricity",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/infinite_quantum.json b/src/main/resources/assets/poweradvantage/blockstates/infinite_quantum.json
deleted file mode 100644
index 1e7ad502..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/infinite_quantum.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/infinite_quantum",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/infinite_quantum"
- },
- "facing=south": {
- "model": "poweradvantage:block/infinite_quantum",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/infinite_quantum",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/infinite_steam.json b/src/main/resources/assets/poweradvantage/blockstates/infinite_steam.json
deleted file mode 100644
index 3ad324b6..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/infinite_steam.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=east": {
- "model": "poweradvantage:block/infinite_steam",
- "y": 90
- },
- "facing=north": {
- "model": "poweradvantage:block/infinite_steam"
- },
- "facing=south": {
- "model": "poweradvantage:block/infinite_steam",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/infinite_steam",
- "y": 270
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_conveyor.json b/src/main/resources/assets/poweradvantage/blockstates/item_conveyor.json
deleted file mode 100644
index 93c7ac9e..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_conveyor.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "variants": {
- "facing=down": {
- "model": "poweradvantage:block/item_conveyor",
- "x": 90
- },
- "facing=up": {
- "model": "poweradvantage:block/item_conveyor",
- "x": 270
- },
- "facing=north": {
- "model": "poweradvantage:block/item_conveyor"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_conveyor",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_conveyor",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_conveyor",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_block.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_block.json
deleted file mode 100644
index 39140fb1..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_block.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_block"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_block",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_block",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_block",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_food.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_food.json
deleted file mode 100644
index 6cc97515..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_food.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_food"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_food",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_food",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_food",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_fuel.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_fuel.json
deleted file mode 100644
index 9bbcc350..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_fuel.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_fuel"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_fuel",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_fuel",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_fuel",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_inventory.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_inventory.json
deleted file mode 100644
index ce93778d..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_inventory.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_inventory"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_inventory",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_inventory",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_inventory",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_ore.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_ore.json
deleted file mode 100644
index 402f28c9..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_ore.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_ore"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_ore",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_ore",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_ore",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_overflow.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_overflow.json
deleted file mode 100644
index 83a02f1c..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_overflow.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_overflow"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_overflow",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_overflow",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_overflow",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_plant.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_plant.json
deleted file mode 100644
index 0527268e..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_plant.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_plant"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_plant",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_plant",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_plant",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/item_filter_smelt.json b/src/main/resources/assets/poweradvantage/blockstates/item_filter_smelt.json
deleted file mode 100644
index eb7fb555..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/item_filter_smelt.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "variants": {
- "facing=north": {
- "model": "poweradvantage:block/item_filter_smelt"
- },
- "facing=south": {
- "model": "poweradvantage:block/item_filter_smelt",
- "y": 180
- },
- "facing=west": {
- "model": "poweradvantage:block/item_filter_smelt",
- "y": 270
- },
- "facing=east": {
- "model": "poweradvantage:block/item_filter_smelt",
- "y": 90
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/refined_oil.json b/src/main/resources/assets/poweradvantage/blockstates/refined_oil.json
deleted file mode 100644
index 80e8102b..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/refined_oil.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "variants": {
- "": { "model": "poweradvantage:block/refined_oil" }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/blockstates/steel_frame.json b/src/main/resources/assets/poweradvantage/blockstates/steel_frame.json
deleted file mode 100644
index 6adc29c6..00000000
--- a/src/main/resources/assets/poweradvantage/blockstates/steel_frame.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "variants": {
- "": {
- "model": "poweradvantage:block/steel_frame"
- }
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/de_de.json b/src/main/resources/assets/poweradvantage/lang/de_de.json
deleted file mode 100644
index bdf24685..00000000
--- a/src/main/resources/assets/poweradvantage/lang/de_de.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Große Ofen (formlos)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Große Ofen (geformt)",
- "tooltip.poweradvantage.empty": "Leer",
- "tooltip.poweradvantage.buckets_of": "%x Eimer %y",
- "itemGroup.poweradvantage": "Leistungsvorteil",
- "tile.poweradvantage.fluid_drain.name": "Ablauf",
- "tile.poweradvantage.fluid_discharge.name": "Austragsrost",
- "tile.poweradvantage.fluid_storage_tank.name": "Lagertank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Speicher",
- "tile.poweradvantage.fluid_pipe.name": "Rohr",
- "tile.poweradvantage.item_conveyor.name": "Förderer",
- "tile.poweradvantage.item_filter_block.name": "Block Auswahl Förder",
- "tile.poweradvantage.item_filter_food.name": "Lebensmittel Auswahl Förder",
- "tile.poweradvantage.item_filter_fuel.name": "Brennstoff Auswahl Förder",
- "tile.poweradvantage.item_filter_inventory.name": "Anpassbare Auswahl Förder",
- "tile.poweradvantage.item_filter_ore.name": "Erz Auswahl Förder",
- "tile.poweradvantage.item_filter_plant.name": "Pflanze Auswahl Förder",
- "tile.poweradvantage.item_filter_smelt.name": "Kochbare Auswahl Förder",
- "tile.poweradvantage.item_filter_overflow.name": "Überlauf Auswahl Förder",
- "tile.poweradvantage.steel_frame.name": "Stahlrahmen",
- "item.poweradvantage.starch.name": "Kartoffelstärke",
- "item.poweradvantage.bioplastic_ingot.name": "Biokunststoff-Barren",
- "item.poweradvantage.sprocket.name": "Kettenrad",
- "tile.poweradvantage.fluid_metal_tank.name": "Metall-Lagertank",
- "item.poweradvantage.rotator_tool.name": "Drehwerkzeug",
- "tile.poweradvantage.infinite_steam.name": "Unendlichen Dampfkraft",
- "tile.poweradvantage.infinite_electricity.name": "Unendliche Elektrische Leistung",
- "tile.poweradvantage.infinite_quantum.name": "Unendliche Quanten Leistung",
- "tile.poweradvantage.crude_oil.name": "Rohöl",
- "fluid.poweradvantage.crude_oil": "Rohöl",
- "item.bucket.crude_oil": "Eimer Rohöl",
- "tile.poweradvantage.still.name": "Brennerei",
- "tile.poweradvantage.refined_oil.name": "Raffiniertes Öl",
- "fluid.poweradvantage.refined_oil": "Raffiniertes Öl",
- "item.bucket.refined_oil": "Eimer für Raffiniertes Öl",
- "tile.poweradvantage.fluid_switch.name": "Ventil",
- "tile.poweradvantage.converter_rf_steam.name": "Dampf-RF Leistungstransformator",
- "tile.poweradvantage.converter_rf_electricity.name": "Elektrizität-RF Leistungstransformator",
- "tile.poweradvantage.converter_rf_quantum.name": "Quant-RF Leistungstransformator",
- "tile.poweradvantage.converter_tr_electricity.name": "Elektrizität-EU Leistungstransformator",
- "block.poweradvantage.fluid_drain": "Ablauf",
- "block.poweradvantage.fluid_discharge": "Austragsrost",
- "block.poweradvantage.fluid_storage_tank": "Lagertank",
- "item.poweradvantage.fluid_storage_tank_item": "Speicher",
- "block.poweradvantage.fluid_pipe": "Rohr",
- "block.poweradvantage.item_conveyor": "Förderer",
- "block.poweradvantage.item_filter_block": "Block Auswahl Förder",
- "block.poweradvantage.item_filter_food": "Lebensmittel Auswahl Förder",
- "block.poweradvantage.item_filter_fuel": "Brennstoff Auswahl Förder",
- "block.poweradvantage.item_filter_inventory": "Anpassbare Auswahl Förder",
- "block.poweradvantage.item_filter_ore": "Erz Auswahl Förder",
- "block.poweradvantage.item_filter_plant": "Pflanze Auswahl Förder",
- "block.poweradvantage.item_filter_smelt": "Kochbare Auswahl Förder",
- "block.poweradvantage.item_filter_overflow": "Überlauf Auswahl Förder",
- "block.poweradvantage.steel_frame": "Stahlrahmen",
- "item.poweradvantage.starch": "Kartoffelstärke",
- "item.poweradvantage.bioplastic_ingot": "Biokunststoff-Barren",
- "item.poweradvantage.sprocket": "Kettenrad",
- "block.poweradvantage.fluid_metal_tank": "Metall-Lagertank",
- "item.poweradvantage.rotator_tool": "Drehwerkzeug",
- "block.poweradvantage.infinite_steam": "Unendlichen Dampfkraft",
- "block.poweradvantage.infinite_electricity": "Unendliche Elektrische Leistung",
- "block.poweradvantage.infinite_quantum": "Unendliche Quanten Leistung",
- "block.poweradvantage.crude_oil": "Rohöl",
- "block.poweradvantage.still": "Brennerei",
- "block.poweradvantage.refined_oil": "Raffiniertes Öl",
- "block.poweradvantage.fluid_switch": "Ventil",
- "block.poweradvantage.converter_rf_steam": "Dampf-RF Leistungstransformator",
- "block.poweradvantage.converter_rf_electricity": "Elektrizität-RF Leistungstransformator",
- "block.poweradvantage.converter_rf_quantum": "Quant-RF Leistungstransformator",
- "block.poweradvantage.converter_tr_electricity": "Elektrizität-EU Leistungstransformator",
- "item.poweradvantage.crude_oil_bucket": "Eimer Rohöl",
- "item.poweradvantage.refined_oil_bucket": "Eimer für Raffiniertes Öl",
- "block.poweradvantage.fluid_pipe_terminal": "Rohr"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_au.json b/src/main/resources/assets/poweradvantage/lang/en_au.json
deleted file mode 100644
index 7b1619fe..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_au.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Storage Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Crude Oil",
- "fluid.poweradvantage.crude_oil": "Crude Oil",
- "item.bucket.crude_oil": "Bucket of Crude Oil",
- "tile.poweradvantage.still.name": "Distillation Furnace",
- "tile.poweradvantage.refined_oil.name": "Refined Oil",
- "fluid.poweradvantage.refined_oil": "Refined Oil",
- "item.bucket.refined_oil": "Bucket of Refined Oil",
- "tile.poweradvantage.fluid_switch.name": "Fluid Switch Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item": "Storage Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Crude Oil",
- "block.poweradvantage.still": "Distillation Furnace",
- "block.poweradvantage.refined_oil": "Refined Oil",
- "block.poweradvantage.fluid_switch": "Fluid Switch Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket of Crude Oil",
- "item.poweradvantage.refined_oil_bucket": "Bucket of Refined Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_ca.json b/src/main/resources/assets/poweradvantage/lang/en_ca.json
deleted file mode 100644
index 7b1619fe..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_ca.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Storage Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Crude Oil",
- "fluid.poweradvantage.crude_oil": "Crude Oil",
- "item.bucket.crude_oil": "Bucket of Crude Oil",
- "tile.poweradvantage.still.name": "Distillation Furnace",
- "tile.poweradvantage.refined_oil.name": "Refined Oil",
- "fluid.poweradvantage.refined_oil": "Refined Oil",
- "item.bucket.refined_oil": "Bucket of Refined Oil",
- "tile.poweradvantage.fluid_switch.name": "Fluid Switch Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item": "Storage Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Crude Oil",
- "block.poweradvantage.still": "Distillation Furnace",
- "block.poweradvantage.refined_oil": "Refined Oil",
- "block.poweradvantage.fluid_switch": "Fluid Switch Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket of Crude Oil",
- "item.poweradvantage.refined_oil_bucket": "Bucket of Refined Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_en.json b/src/main/resources/assets/poweradvantage/lang/en_en.json
deleted file mode 100644
index 7b1619fe..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_en.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Storage Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Crude Oil",
- "fluid.poweradvantage.crude_oil": "Crude Oil",
- "item.bucket.crude_oil": "Bucket of Crude Oil",
- "tile.poweradvantage.still.name": "Distillation Furnace",
- "tile.poweradvantage.refined_oil.name": "Refined Oil",
- "fluid.poweradvantage.refined_oil": "Refined Oil",
- "item.bucket.refined_oil": "Bucket of Refined Oil",
- "tile.poweradvantage.fluid_switch.name": "Fluid Switch Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item": "Storage Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Crude Oil",
- "block.poweradvantage.still": "Distillation Furnace",
- "block.poweradvantage.refined_oil": "Refined Oil",
- "block.poweradvantage.fluid_switch": "Fluid Switch Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket of Crude Oil",
- "item.poweradvantage.refined_oil_bucket": "Bucket of Refined Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_gb.json b/src/main/resources/assets/poweradvantage/lang/en_gb.json
deleted file mode 100644
index 7b1619fe..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_gb.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Storage Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Crude Oil",
- "fluid.poweradvantage.crude_oil": "Crude Oil",
- "item.bucket.crude_oil": "Bucket of Crude Oil",
- "tile.poweradvantage.still.name": "Distillation Furnace",
- "tile.poweradvantage.refined_oil.name": "Refined Oil",
- "fluid.poweradvantage.refined_oil": "Refined Oil",
- "item.bucket.refined_oil": "Bucket of Refined Oil",
- "tile.poweradvantage.fluid_switch.name": "Fluid Switch Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item": "Storage Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Crude Oil",
- "block.poweradvantage.still": "Distillation Furnace",
- "block.poweradvantage.refined_oil": "Refined Oil",
- "block.poweradvantage.fluid_switch": "Fluid Switch Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket of Crude Oil",
- "item.poweradvantage.refined_oil_bucket": "Bucket of Refined Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_pt.json b/src/main/resources/assets/poweradvantage/lang/en_pt.json
deleted file mode 100644
index 0c78c2f9..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_pt.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item.name": "Storage Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Black Gold",
- "fluid.poweradvantage.crude_oil": "Black Gold",
- "item.bucket.crude_oil": "Bucket o' Black Gold",
- "tile.poweradvantage.still.name": "'Stillery",
- "tile.poweradvantage.refined_oil.name": "Lamp Oil",
- "fluid.poweradvantage.refined_oil": "Lamp Oil",
- "item.bucket.refined_oil": "Bucket o' Lamp Oil",
- "tile.poweradvantage.fluid_switch.name": "Big Red Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "item.poweradvantage.fluid_storage_tank_item": "Storage Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Black Gold",
- "block.poweradvantage.still": "'Stillery",
- "block.poweradvantage.refined_oil": "Lamp Oil",
- "block.poweradvantage.fluid_switch": "Big Red Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket o' Black Gold",
- "item.poweradvantage.refined_oil_bucket": "Bucket o' Lamp Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/en_us.json b/src/main/resources/assets/poweradvantage/lang/en_us.json
deleted file mode 100644
index 76a243b9..00000000
--- a/src/main/resources/assets/poweradvantage/lang/en_us.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Large Furnace (Shapeless)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Large Furnace (Shaped)",
- "tooltip.poweradvantage.empty": "Empty",
- "tooltip.poweradvantage.buckets_of": "%x buckets of %y",
- "itemGroup.poweradvantage": "Power Advantage",
- "tile.poweradvantage.fluid_drain.name": "Drain",
- "tile.poweradvantage.fluid_discharge.name": "Discharge Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Portable Fluid Tank",
- "tile.poweradvantage.fluid_pipe.name": "Pipe",
- "tile.poweradvantage.item_conveyor.name": "Conveyor",
- "tile.poweradvantage.item_filter_block.name": "Block Filter Conveyor",
- "tile.poweradvantage.item_filter_food.name": "Food Filter Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "Fuel Filter Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filter Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filter Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filter Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Furnace Filter Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Overflow Filter Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Starch",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic Ingot",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool.name": "Rotation Wrench",
- "tile.poweradvantage.infinite_steam.name": "Unlimited Steam Power",
- "tile.poweradvantage.infinite_electricity.name": "Unlimited Electrical Power",
- "tile.poweradvantage.infinite_quantum.name": "Unlimited Quantum Power",
- "tile.poweradvantage.crude_oil.name": "Crude Oil",
- "fluid.poweradvantage.crude_oil": "Crude Oil",
- "item.bucket.crude_oil": "Bucket of Crude Oil",
- "tile.poweradvantage.still.name": "Distillation Furnace",
- "tile.poweradvantage.refined_oil.name": "Refined Oil",
- "fluid.poweradvantage.refined_oil": "Refined Oil",
- "item.bucket.refined_oil": "Bucket of Refined Oil",
- "tile.poweradvantage.fluid_switch.name": "Fluid Switch Valve",
- "tile.poweradvantage.converter_rf_steam.name": "Steam-RF Transformer",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricity-RF Transformer",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantum-RF Transformer",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricity-EU Transformer",
- "block.poweradvantage.fluid_drain": "Drain",
- "block.poweradvantage.fluid_discharge": "Discharge Grate",
- "block.poweradvantage.fluid_storage_tank": "Portable Fluid Tank",
- "block.poweradvantage.fluid_pipe": "Pipe",
- "block.poweradvantage.item_conveyor": "Conveyor",
- "block.poweradvantage.item_filter_block": "Block Filter Conveyor",
- "block.poweradvantage.item_filter_food": "Food Filter Conveyor",
- "block.poweradvantage.item_filter_fuel": "Fuel Filter Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filter Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filter Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filter Conveyor",
- "block.poweradvantage.item_filter_smelt": "Furnace Filter Conveyor",
- "block.poweradvantage.item_filter_overflow": "Overflow Filter Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Starch",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic Ingot",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Metal Fluid Tank",
- "item.poweradvantage.rotator_tool": "Rotation Wrench",
- "block.poweradvantage.infinite_steam": "Unlimited Steam Power",
- "block.poweradvantage.infinite_electricity": "Unlimited Electrical Power",
- "block.poweradvantage.infinite_quantum": "Unlimited Quantum Power",
- "block.poweradvantage.crude_oil": "Crude Oil",
- "block.poweradvantage.still": "Distillation Furnace",
- "block.poweradvantage.refined_oil": "Refined Oil",
- "block.poweradvantage.fluid_switch": "Fluid Switch Valve",
- "block.poweradvantage.converter_rf_steam": "Steam-RF Transformer",
- "block.poweradvantage.converter_rf_electricity": "Electricity-RF Transformer",
- "block.poweradvantage.converter_rf_quantum": "Quantum-RF Transformer",
- "block.poweradvantage.converter_tr_electricity": "Electricity-EU Transformer",
- "item.poweradvantage.crude_oil_bucket": "Bucket of Crude Oil",
- "item.poweradvantage.refined_oil_bucket": "Bucket of Refined Oil",
- "block.poweradvantage.fluid_pipe_terminal": "Pipe"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/es_es.json b/src/main/resources/assets/poweradvantage/lang/es_es.json
deleted file mode 100644
index 68471f7c..00000000
--- a/src/main/resources/assets/poweradvantage/lang/es_es.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Gran Horno (no forma)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Gran Horno (en forma)",
- "tooltip.poweradvantage.empty": "Vacío",
- "tooltip.poweradvantage.buckets_of ": "%x cubos de %y",
- "itemGroup.poweradvantage": "Ventaja de Energía",
- "tile.poweradvantage.fluid_drain.name": "Drenaje",
- "tile.poweradvantage.fluid_discharge.name": "Descarga Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Tanque de almacenamiento",
- "item.poweradvantage.fluid_storage_tank_item.name": "Tanque de almacenamiento",
- "tile.poweradvantage.fluid_pipe.name": "Tubo",
- "tile.poweradvantage.item_conveyor.name": "Transportadores",
- "tile.poweradvantage.item_filter_block.name": "Bloquear Filtro Transportadores",
- "tile.poweradvantage.item_filter_food.name": "Filtro Alimentos Transportadores",
- "tile.poweradvantage.item_filter_fuel.name": "Filtro de combustible Transportadores",
- "tile.poweradvantage.item_filter_inventory.name": "Filtro Transportadores",
- "tile.poweradvantage.item_filter_ore.name": "Ore Transportadores Filtro",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Transportadores Filtro",
- "tile.poweradvantage.item_filter_smelt.name": "Horno Filtro Transportadores",
- "tile.poweradvantage.item_filter_overflow.name": "Desbordamiento Filtro Transportadores",
- "tile.poweradvantage.steel_frame.name": "Marco de Acero",
- "item.poweradvantage.starch.name": "Almidón",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplástico Lingote",
- "item.poweradvantage.sprocket.name": "Piñón",
- "tile.poweradvantage.fluid_metal_tank.name": "Tanque de Almacenamiento de Acero",
- "item.poweradvantage.rotator_tool.name": "Herramienta de Rotación",
- "tile.poweradvantage.infinite_steam.name": "La Energía de Vapor Infinito",
- "tile.poweradvantage.infinite_electricity.name": "Energía Eléctrica Infinito",
- "tile.poweradvantage.infinite_quantum.name": "Cuántica Infinito",
- "tile.poweradvantage.crude_oil.name": "Petróleo Crudo",
- "fluid.poweradvantage.crude_oil": "Petróleo Crudo",
- "item.bucket.crude_oil.name": "Cubo de Crudo",
- "tile.poweradvantage.still.name": "Destilería",
- "tile.poweradvantage.refined_oil.name": "Refinado de Petróleo",
- "fluid.poweradvantage.refined_oil": "Refinado de Petróleo",
- "item.bucket.refined_oil.name": "Cubo de Refinado de Petróleo",
- "tile.poweradvantage.fluid_switch.name": "Válvula",
- "tile.poweradvantage.converter_rf_steam.name": "Vapor-RF Transformador",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricidad-RF Transformador",
- "tile.poweradvantage.converter_rf_quantum.name": "Cuántico-RF Transformador",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricidad-EU Transformador",
- "block.poweradvantage.fluid_drain": "Drenaje",
- "block.poweradvantage.fluid_discharge": "Descarga Grate",
- "block.poweradvantage.fluid_storage_tank": "Tanque de almacenamiento",
- "item.poweradvantage.fluid_storage_tank_item": "Tanque de almacenamiento",
- "block.poweradvantage.fluid_pipe": "Tubo",
- "block.poweradvantage.item_conveyor": "Transportadores",
- "block.poweradvantage.item_filter_block": "Bloquear Filtro Transportadores",
- "block.poweradvantage.item_filter_food": "Filtro Alimentos Transportadores",
- "block.poweradvantage.item_filter_fuel": "Filtro de combustible Transportadores",
- "block.poweradvantage.item_filter_inventory": "Filtro Transportadores",
- "block.poweradvantage.item_filter_ore": "Ore Transportadores Filtro",
- "block.poweradvantage.item_filter_plant": "Plantable Transportadores Filtro",
- "block.poweradvantage.item_filter_smelt": "Horno Filtro Transportadores",
- "block.poweradvantage.item_filter_overflow": "Desbordamiento Filtro Transportadores",
- "block.poweradvantage.steel_frame": "Marco de Acero",
- "item.poweradvantage.starch": "Almidón",
- "item.poweradvantage.bioplastic_ingot": "Bioplástico Lingote",
- "item.poweradvantage.sprocket": "Piñón",
- "block.poweradvantage.fluid_metal_tank": "Tanque de Almacenamiento de Acero",
- "item.poweradvantage.rotator_tool": "Herramienta de Rotación",
- "block.poweradvantage.infinite_steam": "La Energía de Vapor Infinito",
- "block.poweradvantage.infinite_electricity": "Energía Eléctrica Infinito",
- "block.poweradvantage.infinite_quantum": "Cuántica Infinito",
- "block.poweradvantage.crude_oil": "Petróleo Crudo",
- "block.poweradvantage.still": "Destilería",
- "block.poweradvantage.refined_oil": "Refinado de Petróleo",
- "block.poweradvantage.fluid_switch": "Válvula",
- "block.poweradvantage.converter_rf_steam": "Vapor-RF Transformador",
- "block.poweradvantage.converter_rf_electricity": "Electricidad-RF Transformador",
- "block.poweradvantage.converter_rf_quantum": "Cuántico-RF Transformador",
- "block.poweradvantage.converter_tr_electricity": "Electricidad-EU Transformador",
- "block.poweradvantage.fluid_pipe_terminal": "Tubo"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/es_mx.json b/src/main/resources/assets/poweradvantage/lang/es_mx.json
deleted file mode 100644
index c0c5cb2e..00000000
--- a/src/main/resources/assets/poweradvantage/lang/es_mx.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Gran Horno (no forma)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Gran Horno (en forma)",
- "tooltip.poweradvantage.empty": "Vacío",
- "tooltip.poweradvantage.buckets_of": "%x cubos de %y",
- "itemGroup.poweradvantage": "Ventaja de Energía",
- "tile.poweradvantage.fluid_drain.name": "Drenaje",
- "tile.poweradvantage.fluid_discharge.name": "Descarga Grate",
- "tile.poweradvantage.fluid_storage_tank.name": "Tanque de almacenamiento",
- "item.poweradvantage.fluid_storage_tank_item.name": "Tanque de almacenamiento",
- "tile.poweradvantage.fluid_pipe.name": "Tubo",
- "tile.poweradvantage.item_conveyor.name": "Transportadores",
- "tile.poweradvantage.item_filter_block.name": "Bloquear Filtro Transportadores",
- "tile.poweradvantage.item_filter_food.name": "Filtro Alimentos Transportadores",
- "tile.poweradvantage.item_filter_fuel.name": "Filtro de combustible Transportadores",
- "tile.poweradvantage.item_filter_inventory.name": "Filtro Transportadores",
- "tile.poweradvantage.item_filter_ore.name": "Ore Transportadores Filtro",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Transportadores Filtro",
- "tile.poweradvantage.item_filter_smelt.name": "Horno Filtro Transportadores",
- "tile.poweradvantage.item_filter_overflow.name": "Desbordamiento Filtro Transportadores",
- "tile.poweradvantage.steel_frame.name": "Marco de Acero",
- "item.poweradvantage.starch.name": "Almidón",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplástico Lingote",
- "item.poweradvantage.sprocket.name": "Piñón",
- "tile.poweradvantage.fluid_metal_tank.name": "Tanque de Almacenamiento de Acero",
- "item.poweradvantage.rotator_tool.name": "Herramienta de Rotación",
- "tile.poweradvantage.infinite_steam.name": "La Energía de Vapor Infinito",
- "tile.poweradvantage.infinite_electricity.name": "Energía Eléctrica Infinito",
- "tile.poweradvantage.infinite_quantum.name": "Cuántica Infinito",
- "tile.poweradvantage.crude_oil.name": "Petróleo Crudo",
- "fluid.poweradvantage.crude_oil": "Petróleo Crudo",
- "item.bucket.crude_oil.name": "Cubo de Crudo",
- "tile.poweradvantage.still.name": "Destilería",
- "tile.poweradvantage.refined_oil.name": "Refinado de Petróleo",
- "fluid.poweradvantage.refined_oil": "Refinado de Petróleo",
- "item.bucket.refined_oil.name": "Cubo de Refinado de Petróleo",
- "tile.poweradvantage.fluid_switch.name": "Válvula",
- "tile.poweradvantage.converter_rf_steam.name": "Vapor-RF Transformador",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricidad-RF Transformador",
- "tile.poweradvantage.converter_rf_quantum.name": "Cuántico-RF Transformador",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricidad-EU Transformador",
- "block.poweradvantage.fluid_drain": "Drenaje",
- "block.poweradvantage.fluid_discharge": "Descarga Grate",
- "block.poweradvantage.fluid_storage_tank": "Tanque de almacenamiento",
- "item.poweradvantage.fluid_storage_tank_item": "Tanque de almacenamiento",
- "block.poweradvantage.fluid_pipe": "Tubo",
- "block.poweradvantage.item_conveyor": "Transportadores",
- "block.poweradvantage.item_filter_block": "Bloquear Filtro Transportadores",
- "block.poweradvantage.item_filter_food": "Filtro Alimentos Transportadores",
- "block.poweradvantage.item_filter_fuel": "Filtro de combustible Transportadores",
- "block.poweradvantage.item_filter_inventory": "Filtro Transportadores",
- "block.poweradvantage.item_filter_ore": "Ore Transportadores Filtro",
- "block.poweradvantage.item_filter_plant": "Plantable Transportadores Filtro",
- "block.poweradvantage.item_filter_smelt": "Horno Filtro Transportadores",
- "block.poweradvantage.item_filter_overflow": "Desbordamiento Filtro Transportadores",
- "block.poweradvantage.steel_frame": "Marco de Acero",
- "item.poweradvantage.starch": "Almidón",
- "item.poweradvantage.bioplastic_ingot": "Bioplástico Lingote",
- "item.poweradvantage.sprocket": "Piñón",
- "block.poweradvantage.fluid_metal_tank": "Tanque de Almacenamiento de Acero",
- "item.poweradvantage.rotator_tool": "Herramienta de Rotación",
- "block.poweradvantage.infinite_steam": "La Energía de Vapor Infinito",
- "block.poweradvantage.infinite_electricity": "Energía Eléctrica Infinito",
- "block.poweradvantage.infinite_quantum": "Cuántica Infinito",
- "block.poweradvantage.crude_oil": "Petróleo Crudo",
- "block.poweradvantage.still": "Destilería",
- "block.poweradvantage.refined_oil": "Refinado de Petróleo",
- "block.poweradvantage.fluid_switch": "Válvula",
- "block.poweradvantage.converter_rf_steam": "Vapor-RF Transformador",
- "block.poweradvantage.converter_rf_electricity": "Electricidad-RF Transformador",
- "block.poweradvantage.converter_rf_quantum": "Cuántico-RF Transformador",
- "block.poweradvantage.converter_tr_electricity": "Electricidad-EU Transformador",
- "block.poweradvantage.fluid_pipe_terminal": "Tubo"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/it_it.json b/src/main/resources/assets/poweradvantage/lang/it_it.json
deleted file mode 100644
index b69cfcc1..00000000
--- a/src/main/resources/assets/poweradvantage/lang/it_it.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Grande Fornace (informe)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Grande Fornace (forma)",
- "tooltip.poweradvantage.empty": "vuoto",
- "tooltip.poweradvantage.buckets_of": "%x secchi d'%y",
- "itemGroup.poweradvantage": "Potenza Advantage",
- "tile.poweradvantage.fluid_drain.name": "Scarico",
- "tile.poweradvantage.fluid_discharge.name": "Griglia di scarico",
- "tile.poweradvantage.fluid_storage_tank.name": "Serbatoio",
- "item.poweradvantage.fluid_storage_tank_item.name": "Serbatoio",
- "tile.poweradvantage.fluid_pipe.name": "Tubo",
- "tile.poweradvantage.item_conveyor.name": "Trasportatore",
- "tile.poweradvantage.item_filter_block.name": "Filtro di blocco trasportatore",
- "tile.poweradvantage.item_filter_food.name": "Filtro alimentare Conveyor",
- "tile.poweradvantage.item_filter_fuel.name": "carburante Filtro Conveyor",
- "tile.poweradvantage.item_filter_inventory.name": "Filtro Conveyor",
- "tile.poweradvantage.item_filter_ore.name": "Ore Filtro Conveyor",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Filtro Conveyor",
- "tile.poweradvantage.item_filter_smelt.name": "Forno Filtro Conveyor",
- "tile.poweradvantage.item_filter_overflow.name": "Straripamento Filtro Conveyor",
- "tile.poweradvantage.steel_frame.name": "Steel Frame",
- "item.poweradvantage.starch.name": "Amido",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastica Lingotto",
- "item.poweradvantage.sprocket.name": "Sprocket",
- "tile.poweradvantage.fluid_metal_tank.name": "Serbatoio in Metallo",
- "item.poweradvantage.rotator_tool.name": "Strumento di Rotazione",
- "tile.poweradvantage.infinite_steam.name": "Forza Vapore Infinite",
- "tile.poweradvantage.infinite_electricity.name": "Elettricità Infinite",
- "tile.poweradvantage.infinite_quantum.name": "Atomica Infinite",
- "tile.poweradvantage.crude_oil.name": "Olio a Crudo",
- "fluid.poweradvantage.crude_oil": "Olio a Crudo",
- "item.bucket.crude_oil.name": "Secchio di Greggio",
- "tile.poweradvantage.still.name": "Distilleria",
- "tile.poweradvantage.refined_oil.name": "Olio Raffinato",
- "fluid.poweradvantage.refined_oil": "Olio Raffinato",
- "item.bucket.refined_oil.name": "Secchio di Olio Raffinato",
- "tile.poweradvantage.fluid_switch.name": "Valvola",
- "tile.poweradvantage.converter_rf_steam.name": "Vapore-RF Trasformatore",
- "tile.poweradvantage.converter_rf_electricity.name": "Elettricità-RF Trasformatore",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantistico-RF Trasformatore",
- "tile.poweradvantage.converter_tr_electricity.name": "Elettricità-EU Trasformatore",
- "block.poweradvantage.fluid_drain": "Scarico",
- "block.poweradvantage.fluid_discharge": "Griglia di scarico",
- "block.poweradvantage.fluid_storage_tank": "Serbatoio",
- "item.poweradvantage.fluid_storage_tank_item": "Serbatoio",
- "block.poweradvantage.fluid_pipe": "Tubo",
- "block.poweradvantage.item_conveyor": "Trasportatore",
- "block.poweradvantage.item_filter_block": "Filtro di blocco trasportatore",
- "block.poweradvantage.item_filter_food": "Filtro alimentare Conveyor",
- "block.poweradvantage.item_filter_fuel": "carburante Filtro Conveyor",
- "block.poweradvantage.item_filter_inventory": "Filtro Conveyor",
- "block.poweradvantage.item_filter_ore": "Ore Filtro Conveyor",
- "block.poweradvantage.item_filter_plant": "Plantable Filtro Conveyor",
- "block.poweradvantage.item_filter_smelt": "Forno Filtro Conveyor",
- "block.poweradvantage.item_filter_overflow": "Straripamento Filtro Conveyor",
- "block.poweradvantage.steel_frame": "Steel Frame",
- "item.poweradvantage.starch": "Amido",
- "item.poweradvantage.bioplastic_ingot": "Bioplastica Lingotto",
- "item.poweradvantage.sprocket": "Sprocket",
- "block.poweradvantage.fluid_metal_tank": "Serbatoio in Metallo",
- "item.poweradvantage.rotator_tool": "Strumento di Rotazione",
- "block.poweradvantage.infinite_steam": "Forza Vapore Infinite",
- "block.poweradvantage.infinite_electricity": "Elettricità Infinite",
- "block.poweradvantage.infinite_quantum": "Atomica Infinite",
- "block.poweradvantage.crude_oil": "Olio a Crudo",
- "block.poweradvantage.still": "Distilleria",
- "block.poweradvantage.refined_oil": "Olio Raffinato",
- "block.poweradvantage.fluid_switch": "Valvola",
- "block.poweradvantage.converter_rf_steam": "Vapore-RF Trasformatore",
- "block.poweradvantage.converter_rf_electricity": "Elettricità-RF Trasformatore",
- "block.poweradvantage.converter_rf_quantum": "Quantistico-RF Trasformatore",
- "block.poweradvantage.converter_tr_electricity": "Elettricità-EU Trasformatore",
- "block.poweradvantage.fluid_pipe_terminal": "Tubo"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/ja_jp.json b/src/main/resources/assets/poweradvantage/lang/ja_jp.json
deleted file mode 100644
index b65f8ea5..00000000
--- a/src/main/resources/assets/poweradvantage/lang/ja_jp.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "大型炉(型崩れ)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "大型炉(形)",
- "tooltip.poweradvantage.empty": "空",
- "tooltip.poweradvantage.buckets_of": "%yの%xバケット",
- "itemGroup.poweradvantage": "パワー·アドバンテージ",
- "tile.poweradvantage.fluid_drain.name": "ドレン",
- "tile.poweradvantage.fluid_discharge.name": "放電グレート",
- "tile.poweradvantage.fluid_storage_tank.name": "貯蔵タンク",
- "item.poweradvantage.fluid_storage_tank_item.name": "貯蔵タンク",
- "tile.poweradvantage.fluid_pipe.name": "パイプ",
- "tile.poweradvantage.item_conveyor.name": "コンベア",
- "tile.poweradvantage.item_filter_block.name": "ブロックフィルタコンベア",
- "tile.poweradvantage.item_filter_food.name": "フードフィルターコンベア",
- "tile.poweradvantage.item_filter_fuel.name": "燃料フィルターコンベア",
- "tile.poweradvantage.item_filter_inventory.name": "フィルタコンベヤー",
- "tile.poweradvantage.item_filter_ore.name": "鉱石フィルターコンベア",
- "tile.poweradvantage.item_filter_plant.name": "プラントフィルタコンベヤー",
- "tile.poweradvantage.item_filter_smelt.name": "炉フィルターコンベア",
- "tile.poweradvantage.item_filter_overflow.name": "オーバーフローフィルタコンベヤー",
- "tile.poweradvantage.steel_frame.name": "鉄骨",
- "item.poweradvantage.starch.name": "デンプン",
- "item.poweradvantage.bioplastic_ingot.name": "は、バイオプラスチックインゴットを",
- "item.poweradvantage.sprocket.name": "スプロケット",
- "tile.poweradvantage.infinite_steam.name": "無限の蒸気動力",
- "tile.poweradvantage.infinite_electricity.name": "無限の電力",
- "tile.poweradvantage.infinite_quantum.name": "無限の量子パワー",
- "tile.poweradvantage.fluid_metal_tank.name": "金属製貯蔵タンク",
- "item.poweradvantage.rotator_tool.name": "回転ツール",
- "tile.poweradvantage.crude_oil.name": "原油",
- "fluid.poweradvantage.crude_oil": "原油",
- "item.bucket.crude_oil.name": "原油のバケット",
- "tile.poweradvantage.still.name": "蒸留酒製造所",
- "tile.poweradvantage.refined_oil.name": "精製油",
- "fluid.poweradvantage.refined_oil": "精製油",
- "item.bucket.refined_oil.name": "精製油のバケツ",
- "tile.poweradvantage.fluid_switch.name": "バルブ",
- "tile.poweradvantage.converter_rf_steam.name": "蒸気-RFトランス",
- "tile.poweradvantage.converter_rf_electricity.name": "電気-RFトランス",
- "tile.poweradvantage.converter_rf_quantum.name": "量子-RFトランス",
- "tile.poweradvantage.converter_tr_electricity.name": "電気-EUトランス",
- "block.poweradvantage.fluid_drain": "ドレン",
- "block.poweradvantage.fluid_discharge": "放電グレート",
- "block.poweradvantage.fluid_storage_tank": "貯蔵タンク",
- "item.poweradvantage.fluid_storage_tank_item": "貯蔵タンク",
- "block.poweradvantage.fluid_pipe": "パイプ",
- "block.poweradvantage.item_conveyor": "コンベア",
- "block.poweradvantage.item_filter_block": "ブロックフィルタコンベア",
- "block.poweradvantage.item_filter_food": "フードフィルターコンベア",
- "block.poweradvantage.item_filter_fuel": "燃料フィルターコンベア",
- "block.poweradvantage.item_filter_inventory": "フィルタコンベヤー",
- "block.poweradvantage.item_filter_ore": "鉱石フィルターコンベア",
- "block.poweradvantage.item_filter_plant": "プラントフィルタコンベヤー",
- "block.poweradvantage.item_filter_smelt": "炉フィルターコンベア",
- "block.poweradvantage.item_filter_overflow": "オーバーフローフィルタコンベヤー",
- "block.poweradvantage.steel_frame": "鉄骨",
- "item.poweradvantage.starch": "デンプン",
- "item.poweradvantage.bioplastic_ingot": "は、バイオプラスチックインゴットを",
- "item.poweradvantage.sprocket": "スプロケット",
- "block.poweradvantage.infinite_steam": "無限の蒸気動力",
- "block.poweradvantage.infinite_electricity": "無限の電力",
- "block.poweradvantage.infinite_quantum": "無限の量子パワー",
- "block.poweradvantage.fluid_metal_tank": "金属製貯蔵タンク",
- "item.poweradvantage.rotator_tool": "回転ツール",
- "block.poweradvantage.crude_oil": "原油",
- "block.poweradvantage.still": "蒸留酒製造所",
- "block.poweradvantage.refined_oil": "精製油",
- "block.poweradvantage.fluid_switch": "バルブ",
- "block.poweradvantage.converter_rf_steam": "蒸気-RFトランス",
- "block.poweradvantage.converter_rf_electricity": "電気-RFトランス",
- "block.poweradvantage.converter_rf_quantum": "量子-RFトランス",
- "block.poweradvantage.converter_tr_electricity": "電気-EUトランス",
- "block.poweradvantage.fluid_pipe_terminal": "パイプ"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/ko_kr.json b/src/main/resources/assets/poweradvantage/lang/ko_kr.json
deleted file mode 100644
index 4680143e..00000000
--- a/src/main/resources/assets/poweradvantage/lang/ko_kr.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "대형 전기로 (못생긴)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "대형 전기로 (모양)",
- "tooltip.poweradvantage.empty": "빈",
- "tooltip.tooltip.poweradvantage.buckets_of": "%는 X 버킷",
- "itemGroup.poweradvantage": "전원의 장점을 ",
- "tile.poweradvantage.fluid_drain.name": "드레인",
- "tile.poweradvantage.fluid_discharge.name": "방전 화격자",
- "tile.poweradvantage.fluid_storage_tank.name": "저장 탱크",
- "item.poweradvantage.fluid_storage_tank_item.name": "는 저장 탱크를 ",
- "tile.poweradvantage.fluid_pipe.name": "파이프",
- "tile.poweradvantage.item_conveyor.name": "컨베이어",
- "tile.poweradvantage.item_filter_block.name": "블록 필터 컨베이어",
- "tile.poweradvantage.item_filter_food.name": "식품 필터 컨베이어",
- "tile.poweradvantage.item_filter_fuel.name": "연료 필터 컨베이어",
- "tile.poweradvantage.item_filter_inventory.name": "필터 컨베이어",
- "tile.poweradvantage.item_filter_ore.name": "광석 필터 컨베이어",
- "tile.poweradvantage.item_filter_plant.name": "물만 주면 식물이 필터 컨베이어",
- "tile.poweradvantage.item_filter_smelt.name": "노 필터 컨베이어",
- "tile.poweradvantage.item_filter_overflow.name": "오버 플로우필터 컨베이어",
- "tile.poweradvantage.steel_frame.name": "스틸 프레임",
- "item.poweradvantage.starch.name": "전분",
- "item.poweradvantage.bioplastic_ingot.name": "는 바이오 플라스틱 잉곳을 ",
- "item.poweradvantage.sprocket.name": "스프로킷",
- "tile.poweradvantage.fluid_metal_tank.name": "금속 저장조",
- "item.poweradvantage.rotator_tool.name": "회전 도구",
- "tile.poweradvantage.infinite_steam.name": "무한 증기 력",
- "tile.poweradvantage.infinite_electricity.name": "무한 전력",
- "tile.poweradvantage.infinite_quantum.name": "무한 양자 전력",
- "tile.poweradvantage.crude_oil.name": "원유",
- "fluid.poweradvantage.crude_oil": "원유",
- "item.bucket.crude_oil.name": "원유의 버킷",
- "tile.poweradvantage.still.name": "증류소",
- "tile.poweradvantage.refined_oil.name": "정유",
- "fluid.poweradvantage.refined_oil": "정유",
- "item.bucket.refined_oil.name": "정유의 통",
- "tile.poweradvantage.fluid_switch.name": "판막",
- "tile.poweradvantage.converter_rf_steam.name": "증기-RF 전원 트랜스",
- "tile.poweradvantage.converter_rf_electricity.name": "전기-RF 전원 트랜스",
- "tile.poweradvantage.converter_rf_quantum.name": "양자-RF 전원 트랜스",
- "tile.poweradvantage.converter_tr_electricity.name": "전기-EU 전원 트랜스",
- "block.poweradvantage.fluid_drain": "드레인",
- "block.poweradvantage.fluid_discharge": "방전 화격자",
- "block.poweradvantage.fluid_storage_tank": "저장 탱크",
- "item.poweradvantage.fluid_storage_tank_item": "는 저장 탱크를 ",
- "block.poweradvantage.fluid_pipe": "파이프",
- "block.poweradvantage.item_conveyor": "컨베이어",
- "block.poweradvantage.item_filter_block": "블록 필터 컨베이어",
- "block.poweradvantage.item_filter_food": "식품 필터 컨베이어",
- "block.poweradvantage.item_filter_fuel": "연료 필터 컨베이어",
- "block.poweradvantage.item_filter_inventory": "필터 컨베이어",
- "block.poweradvantage.item_filter_ore": "광석 필터 컨베이어",
- "block.poweradvantage.item_filter_plant": "물만 주면 식물이 필터 컨베이어",
- "block.poweradvantage.item_filter_smelt": "노 필터 컨베이어",
- "block.poweradvantage.item_filter_overflow": "오버 플로우필터 컨베이어",
- "block.poweradvantage.steel_frame": "스틸 프레임",
- "item.poweradvantage.starch": "전분",
- "item.poweradvantage.bioplastic_ingot": "는 바이오 플라스틱 잉곳을 ",
- "item.poweradvantage.sprocket": "스프로킷",
- "block.poweradvantage.fluid_metal_tank": "금속 저장조",
- "item.poweradvantage.rotator_tool": "회전 도구",
- "block.poweradvantage.infinite_steam": "무한 증기 력",
- "block.poweradvantage.infinite_electricity": "무한 전력",
- "block.poweradvantage.infinite_quantum": "무한 양자 전력",
- "block.poweradvantage.crude_oil": "원유",
- "block.poweradvantage.still": "증류소",
- "block.poweradvantage.refined_oil": "정유",
- "block.poweradvantage.fluid_switch": "판막",
- "block.poweradvantage.converter_rf_steam": "증기-RF 전원 트랜스",
- "block.poweradvantage.converter_rf_electricity": "전기-RF 전원 트랜스",
- "block.poweradvantage.converter_rf_quantum": "양자-RF 전원 트랜스",
- "block.poweradvantage.converter_tr_electricity": "전기-EU 전원 트랜스",
- "block.poweradvantage.fluid_pipe_terminal": "파이프"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/pt_br.json b/src/main/resources/assets/poweradvantage/lang/pt_br.json
deleted file mode 100644
index f837618a..00000000
--- a/src/main/resources/assets/poweradvantage/lang/pt_br.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "Forno Grande (no forma)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "Forno Grande (em forma)",
- "tooltip.poweradvantage.empty": "vazio",
- "tooltip.poweradvantage.buckets_of": "%x baldes de %y",
- "itemGroup.poweradvantage": "Vantagem de Poder",
- "tile.poweradvantage.fluid_drain.name": "Dreno",
- "tile.poweradvantage.fluid_discharge.name": "Grate Discharge",
- "tile.poweradvantage.fluid_storage_tank.name": "Tanque de armazenamento",
- "item.poweradvantage.fluid_storage_tank_item.name": "Tanque de armazenamento",
- "tile.poweradvantage.fluid_pipe.name": "Tubulação",
- "tile.poweradvantage.item_conveyor.name": "Transportador",
- "tile.poweradvantage.item_filter_block.name": "Bloquear filtro transportador",
- "tile.poweradvantage.item_filter_food.name": "Transportador Filtro de Alimentos",
- "tile.poweradvantage.item_filter_fuel.name": "Filtro de combustível Transportador",
- "tile.poweradvantage.item_filter_inventory.name": "Transportador Filtro",
- "tile.poweradvantage.item_filter_ore.name": "Ore Transportadora Filtro",
- "tile.poweradvantage.item_filter_plant.name": "Plantable Transportadora Filtro",
- "tile.poweradvantage.item_filter_smelt.name": "Fornalha Filtro Transportador",
- "tile.poweradvantage.item_filter_overflow.name": "Transbordamento Transportador Filtro",
- "tile.poweradvantage.steel_frame.name": "Armação de Aço",
- "item.poweradvantage.starch.name": "Amido",
- "item.poweradvantage.bioplastic_ingot.name": "Bioplastic lingote",
- "item.poweradvantage.sprocket.name": "Roda Dentada",
- "tile.poweradvantage.fluid_metal_tank.name": "Tanque de Armazenamento de Aço",
- "item.poweradvantage.rotator_tool.name": "Ferramenta de Rotação",
- "tile.poweradvantage.infinite_steam.name": "Energia a Vapor Infinito",
- "tile.poweradvantage.infinite_electricity.name": "Energia Elétrica Infinito",
- "tile.poweradvantage.infinite_quantum.name": "Energia Quantum Infinito",
- "tile.poweradvantage.crude_oil.name": "Óleo Cru",
- "fluid.poweradvantage.crude_oil": "Óleo Cru",
- "item.bucket.crude_oil.name": "Balde de Óleo Cru",
- "tile.poweradvantage.still.name": "Destilaria",
- "tile.poweradvantage.refined_oil.name": "Óleo Refinado",
- "fluid.poweradvantage.refined_oil": "Óleo Refinado",
- "item.bucket.refined_oil.name": "Balde de Óleo Refinado",
- "tile.poweradvantage.fluid_switch.name": "Válvula",
- "tile.poweradvantage.converter_rf_steam.name": "Vapor-RF Transformador",
- "tile.poweradvantage.converter_rf_electricity.name": "Electricidade-RF Transformador",
- "tile.poweradvantage.converter_rf_quantum.name": "Quantidade-RF Transformador",
- "tile.poweradvantage.converter_tr_electricity.name": "Electricidade-EU Transformador",
- "block.poweradvantage.fluid_drain": "Dreno",
- "block.poweradvantage.fluid_discharge": "Grate Discharge",
- "block.poweradvantage.fluid_storage_tank": "Tanque de armazenamento",
- "item.poweradvantage.fluid_storage_tank_item": "Tanque de armazenamento",
- "block.poweradvantage.fluid_pipe": "Tubulação",
- "block.poweradvantage.item_conveyor": "Transportador",
- "block.poweradvantage.item_filter_block": "Bloquear filtro transportador",
- "block.poweradvantage.item_filter_food": "Transportador Filtro de Alimentos",
- "block.poweradvantage.item_filter_fuel": "Filtro de combustível Transportador",
- "block.poweradvantage.item_filter_inventory": "Transportador Filtro",
- "block.poweradvantage.item_filter_ore": "Ore Transportadora Filtro",
- "block.poweradvantage.item_filter_plant": "Plantable Transportadora Filtro",
- "block.poweradvantage.item_filter_smelt": "Fornalha Filtro Transportador",
- "block.poweradvantage.item_filter_overflow": "Transbordamento Transportador Filtro",
- "block.poweradvantage.steel_frame": "Armação de Aço",
- "item.poweradvantage.starch": "Amido",
- "item.poweradvantage.bioplastic_ingot": "Bioplastic lingote",
- "item.poweradvantage.sprocket": "Roda Dentada",
- "block.poweradvantage.fluid_metal_tank": "Tanque de Armazenamento de Aço",
- "item.poweradvantage.rotator_tool": "Ferramenta de Rotação",
- "block.poweradvantage.infinite_steam": "Energia a Vapor Infinito",
- "block.poweradvantage.infinite_electricity": "Energia Elétrica Infinito",
- "block.poweradvantage.infinite_quantum": "Energia Quantum Infinito",
- "block.poweradvantage.crude_oil": "Óleo Cru",
- "block.poweradvantage.still": "Destilaria",
- "block.poweradvantage.refined_oil": "Óleo Refinado",
- "block.poweradvantage.fluid_switch": "Válvula",
- "block.poweradvantage.converter_rf_steam": "Vapor-RF Transformador",
- "block.poweradvantage.converter_rf_electricity": "Electricidade-RF Transformador",
- "block.poweradvantage.converter_rf_quantum": "Quantidade-RF Transformador",
- "block.poweradvantage.converter_tr_electricity": "Electricidade-EU Transformador",
- "block.poweradvantage.fluid_pipe_terminal": "Tubulação"
-}
diff --git a/src/main/resources/assets/poweradvantage/lang/zh_cn.json b/src/main/resources/assets/poweradvantage/lang/zh_cn.json
deleted file mode 100644
index b8c066bb..00000000
--- a/src/main/resources/assets/poweradvantage/lang/zh_cn.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "language_support_goals": "english (en_US,en_EN,en_CA,en_GB, en_AU, en_PT), spanish (es_MX,es_ES), chinese (zh_CN), japanese (ja_JA), portugese (pt_BR), german (de_DE), italian (it_IT), korean (ko_KR)",
- "nei.poweradvantage.recipehandler.shapelessfurnace.name": "大熔炉(无形的)",
- "nei.poweradvantage.recipehandler.shapedfurnace.name": "大熔炉(有形的)",
- "tooltip.poweradvantage.empty": "空",
- "tooltip.poweradvantage.buckets_of": "%x水桶的%y",
- "itemGroup.poweradvantage": "能量优势",
- "tile.poweradvantage.fluid_drain.name": "抽水机",
- "tile.poweradvantage.fluid_discharge.name": "排液器",
- "tile.poweradvantage.fluid_storage_tank.name": "便携式液体储罐",
- "item.poweradvantage.fluid_storage_tank_item.name": "便携式液体储罐",
- "tile.poweradvantage.fluid_pipe.name": "液体管",
- "tile.poweradvantage.item_conveyor.name": "输送机",
- "tile.poweradvantage.item_filter_block.name": "方块过滤输送机",
- "tile.poweradvantage.item_filter_food.name": "食品过滤输送机",
- "tile.poweradvantage.item_filter_fuel.name": "燃料过滤输送机",
- "tile.poweradvantage.item_filter_inventory.name": "选择过滤输送机",
- "tile.poweradvantage.item_filter_ore.name": "矿物过滤输送机",
- "tile.poweradvantage.item_filter_plant.name": "种子过滤输送机",
- "tile.poweradvantage.item_filter_smelt.name": "熔炉过滤输送机",
- "tile.poweradvantage.item_filter_overflow.name": "溢出过滤输送机",
- "tile.poweradvantage.steel_frame.name": "钢框架",
- "item.poweradvantage.starch.name": "淀粉",
- "item.poweradvantage.bioplastic_ingot.name": "生物塑料锭",
- "item.poweradvantage.sprocket.name": "链轮",
- "tile.poweradvantage.fluid_metal_tank.name": "金属液罐",
- "item.poweradvantage.rotator_tool.name": "旋转扳手",
- "tile.poweradvantage.infinite_steam.name": "无限蒸汽动力",
- "tile.poweradvantage.infinite_electricity.name": "无限电力",
- "tile.poweradvantage.infinite_quantum.name": "无限量子动力",
- "tile.poweradvantage.crude_oil.name": "原油",
- "fluid.poweradvantage.crude_oil": "原油",
- "item.bucket.crude_oil.name": "原油桶",
- "tile.poweradvantage.still.name": "酒廠",
- "tile.poweradvantage.refined_oil.name": "成品油",
- "fluid.poweradvantage.refined_oil": "成品油",
- "item.bucket.refined_oil.name": "成品油的桶",
- "tile.poweradvantage.fluid_switch.name": "閥",
- "tile.poweradvantage.converter_rf_steam.name": "蒸汽-RF 變壓器",
- "tile.poweradvantage.converter_rf_electricity.name": "電力-RF 變壓器",
- "tile.poweradvantage.converter_rf_quantum.name": "量子-RF 變壓器",
- "tile.poweradvantage.converter_tr_electricity.name": "電力-EU 變壓器",
- "block.poweradvantage.fluid_drain": "抽水机",
- "block.poweradvantage.fluid_discharge": "排液器",
- "block.poweradvantage.fluid_storage_tank": "便携式液体储罐",
- "item.poweradvantage.fluid_storage_tank_item": "便携式液体储罐",
- "block.poweradvantage.fluid_pipe": "液体管",
- "block.poweradvantage.item_conveyor": "输送机",
- "block.poweradvantage.item_filter_block": "方块过滤输送机",
- "block.poweradvantage.item_filter_food": "食品过滤输送机",
- "block.poweradvantage.item_filter_fuel": "燃料过滤输送机",
- "block.poweradvantage.item_filter_inventory": "选择过滤输送机",
- "block.poweradvantage.item_filter_ore": "矿物过滤输送机",
- "block.poweradvantage.item_filter_plant": "种子过滤输送机",
- "block.poweradvantage.item_filter_smelt": "熔炉过滤输送机",
- "block.poweradvantage.item_filter_overflow": "溢出过滤输送机",
- "block.poweradvantage.steel_frame": "钢框架",
- "item.poweradvantage.starch": "淀粉",
- "item.poweradvantage.bioplastic_ingot": "生物塑料锭",
- "item.poweradvantage.sprocket": "链轮",
- "block.poweradvantage.fluid_metal_tank": "金属液罐",
- "item.poweradvantage.rotator_tool": "旋转扳手",
- "block.poweradvantage.infinite_steam": "无限蒸汽动力",
- "block.poweradvantage.infinite_electricity": "无限电力",
- "block.poweradvantage.infinite_quantum": "无限量子动力",
- "block.poweradvantage.crude_oil": "原油",
- "block.poweradvantage.still": "酒廠",
- "block.poweradvantage.refined_oil": "成品油",
- "block.poweradvantage.fluid_switch": "閥",
- "block.poweradvantage.converter_rf_steam": "蒸汽-RF 變壓器",
- "block.poweradvantage.converter_rf_electricity": "電力-RF 變壓器",
- "block.poweradvantage.converter_rf_quantum": "量子-RF 變壓器",
- "block.poweradvantage.converter_tr_electricity": "電力-EU 變壓器",
- "block.poweradvantage.fluid_pipe_terminal": "液体管"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/converter_tr_electricity.json b/src/main/resources/assets/poweradvantage/models/block/converter_tr_electricity.json
deleted file mode 100644
index 7dff7e5a..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/converter_tr_electricity.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "block/cube_all",
- "textures": {
- "all": "poweradvantage:blocks/techreborn_converter"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_discharge.json b/src/main/resources/assets/poweradvantage/models/block/fluid_discharge.json
deleted file mode 100644
index df0fc23e..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_discharge.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "block/cube_bottom_top",
- "textures": {
- "top": "poweradvantage:blocks/fluid_discharge_side",
- "bottom": "poweradvantage:blocks/fluid_discharge_face",
- "side": "poweradvantage:blocks/fluid_discharge_side"
- }
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_drain.json b/src/main/resources/assets/poweradvantage/models/block/fluid_drain.json
deleted file mode 100644
index 93445c16..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_drain.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "parent": "block/cube_bottom_top",
- "textures": {
- "top": "poweradvantage:blocks/fluid_drain_face",
- "bottom": "poweradvantage:blocks/fluid_drain_side",
- "side": "poweradvantage:blocks/fluid_drain_side"
- }
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_0.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_0.json
deleted file mode 100644
index 25307680..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_0.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_0",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_densuw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_densuw.json
deleted file mode 100644
index b27c5e3b..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_densuw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_densuw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_desuw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_desuw.json
deleted file mode 100644
index b28fbf1a..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_desuw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_desuw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_dnu.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_dnu.json
deleted file mode 100644
index 58ad993c..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_dnu.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_dnu",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ensw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ensw.json
deleted file mode 100644
index f909d919..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ensw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_ensw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_n.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_n.json
deleted file mode 100644
index 549fa775..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_n.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_n",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ns.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ns.json
deleted file mode 100644
index 46b2b21e..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_ns.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_ns",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsuw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsuw.json
deleted file mode 100644
index a2efd485..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsuw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_nsuw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsw.json
deleted file mode 100644
index a4d12d0a..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nsw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_nsw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nuw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nuw.json
deleted file mode 100644
index 2c6730c8..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nuw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_nuw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nw.json b/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nw.json
deleted file mode 100644
index 03097f73..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_pipe_nw.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "poweradvantage:block/pipe4_nw",
- "textures": {
- "texture": "poweradvantage:blocks/fluid_pipe",
- "particle": "poweradvantage:materials/iron"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_switch_off.json b/src/main/resources/assets/poweradvantage/models/block/fluid_switch_off.json
deleted file mode 100644
index 99376fe2..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_switch_off.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "block/cube_all",
- "textures": {
- "all": "poweradvantage:blocks/fluid_switch_off",
- "particle": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/fluid_switch_on.json b/src/main/resources/assets/poweradvantage/models/block/fluid_switch_on.json
deleted file mode 100644
index a09edb76..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/fluid_switch_on.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "parent": "block/cube_all",
- "textures": {
- "all": "poweradvantage:blocks/fluid_switch_on",
- "particle": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_conveyor.json b/src/main/resources/assets/poweradvantage/models/block/item_conveyor.json
deleted file mode 100644
index f176d901..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_conveyor.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/item_conveyor_top",
- "side": "poweradvantage:blocks/item_conveyor_side",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_block.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_block.json
deleted file mode 100644
index 0d2c3a62..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_block.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_block",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_food.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_food.json
deleted file mode 100644
index 2c1f6589..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_food.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_food",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_fuel.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_fuel.json
deleted file mode 100644
index d12bdefb..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_fuel.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_fuel",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_inventory.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_inventory.json
deleted file mode 100644
index 45200ce2..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_inventory.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_inventory",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_ore.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_ore.json
deleted file mode 100644
index 26dbe01c..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_ore.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_ore",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_overflow.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_overflow.json
deleted file mode 100644
index 8abd3a4b..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_overflow.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_overflow",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_plant.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_plant.json
deleted file mode 100644
index 4d16d31e..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_plant.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_plantable",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/block/item_filter_smelt.json b/src/main/resources/assets/poweradvantage/models/block/item_filter_smelt.json
deleted file mode 100644
index 49deac1d..00000000
--- a/src/main/resources/assets/poweradvantage/models/block/item_filter_smelt.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "parent": "poweradvantage:block/conveyor_base",
- "textures": {
- "top": "poweradvantage:blocks/item_conveyor_top",
- "bottom": "poweradvantage:blocks/filter_bottom",
- "side": "poweradvantage:blocks/filter_side_smeltable",
- "end": "poweradvantage:blocks/item_conveyor_end",
- "rim": "poweradvantage:materials/steel"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/bioplastic_ingot.json b/src/main/resources/assets/poweradvantage/models/item/bioplastic_ingot.json
deleted file mode 100644
index 8c08c41c..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/bioplastic_ingot.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "item/generated",
- "textures": {
- "layer0": "poweradvantage:items/bioplastic_ingot"
- }
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/bucket_crude_oil.json b/src/main/resources/assets/poweradvantage/models/item/bucket_crude_oil.json
deleted file mode 100644
index 2d783539..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/bucket_crude_oil.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "item/generated",
- "textures": {
- "layer0": "poweradvantage:items/bucket_crude_oil"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/bucket_refined_oil.json b/src/main/resources/assets/poweradvantage/models/item/bucket_refined_oil.json
deleted file mode 100644
index eb646820..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/bucket_refined_oil.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "parent": "item/generated",
- "textures": {
- "layer0": "poweradvantage:items/bucket_refined_oil"
- }
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/converter_rf_electricity.json b/src/main/resources/assets/poweradvantage/models/item/converter_rf_electricity.json
deleted file mode 100644
index b9b04298..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/converter_rf_electricity.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/converter_rf_electricity"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/converter_rf_quantum.json b/src/main/resources/assets/poweradvantage/models/item/converter_rf_quantum.json
deleted file mode 100644
index ca2c0b82..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/converter_rf_quantum.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/converter_rf_quantum"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/converter_rf_steam.json b/src/main/resources/assets/poweradvantage/models/item/converter_rf_steam.json
deleted file mode 100644
index 1ca73e42..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/converter_rf_steam.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/converter_rf_steam"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/converter_tr_electricity.json b/src/main/resources/assets/poweradvantage/models/item/converter_tr_electricity.json
deleted file mode 100644
index 9a7a15f8..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/converter_tr_electricity.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/converter_tr_electricity"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/crude_oil.json b/src/main/resources/assets/poweradvantage/models/item/crude_oil.json
deleted file mode 100644
index 79fdb9e9..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/crude_oil.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:item/crude_oil_bucket"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_discharge.json b/src/main/resources/assets/poweradvantage/models/item/fluid_discharge.json
deleted file mode 100644
index e0bcaeee..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_discharge.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_discharge"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_drain.json b/src/main/resources/assets/poweradvantage/models/item/fluid_drain.json
deleted file mode 100644
index fc987457..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_drain.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_drain"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_metal_tank.json b/src/main/resources/assets/poweradvantage/models/item/fluid_metal_tank.json
deleted file mode 100644
index 97ecaa98..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_metal_tank.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_metal_tank"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_pipe.json b/src/main/resources/assets/poweradvantage/models/item/fluid_pipe.json
deleted file mode 100644
index 097b7358..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_pipe.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_pipe_ns",
- "ambientocclusion": false
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_pipe_terminal.json b/src/main/resources/assets/poweradvantage/models/item/fluid_pipe_terminal.json
deleted file mode 100644
index 097b7358..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_pipe_terminal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_pipe_ns",
- "ambientocclusion": false
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_storage_tank.json b/src/main/resources/assets/poweradvantage/models/item/fluid_storage_tank.json
deleted file mode 100644
index a337b200..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_storage_tank.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_storage_tank",
- "ambientocclusion": false
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/fluid_switch.json b/src/main/resources/assets/poweradvantage/models/item/fluid_switch.json
deleted file mode 100644
index f00c5426..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/fluid_switch.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/fluid_switch_on"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/infinite_electricity.json b/src/main/resources/assets/poweradvantage/models/item/infinite_electricity.json
deleted file mode 100644
index 5b216c85..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/infinite_electricity.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/infinite_electricity"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/infinite_quantum.json b/src/main/resources/assets/poweradvantage/models/item/infinite_quantum.json
deleted file mode 100644
index 03aab32c..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/infinite_quantum.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/infinite_quantum"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/infinite_steam.json b/src/main/resources/assets/poweradvantage/models/item/infinite_steam.json
deleted file mode 100644
index 231eb2ca..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/infinite_steam.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/infinite_steam"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_conveyor.json b/src/main/resources/assets/poweradvantage/models/item/item_conveyor.json
deleted file mode 100644
index 4fa32a5d..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_conveyor.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_conveyor"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_block.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_block.json
deleted file mode 100644
index 0e5aca23..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_block.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_block"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_food.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_food.json
deleted file mode 100644
index f238e136..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_food.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_food"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_fuel.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_fuel.json
deleted file mode 100644
index 4fb288b6..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_fuel.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_fuel"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_inventory.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_inventory.json
deleted file mode 100644
index 1e3a7703..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_inventory.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_inventory"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_ore.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_ore.json
deleted file mode 100644
index ba5c859c..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_ore.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_ore"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_overflow.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_overflow.json
deleted file mode 100644
index 92ae073c..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_overflow.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_overflow"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_plant.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_plant.json
deleted file mode 100644
index 74d98116..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_plant.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_plant"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/item_filter_smelt.json b/src/main/resources/assets/poweradvantage/models/item/item_filter_smelt.json
deleted file mode 100644
index d4f0bc20..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/item_filter_smelt.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/item_filter_smelt"
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/poweradvantage/models/item/refined_oil.json b/src/main/resources/assets/poweradvantage/models/item/refined_oil.json
deleted file mode 100644
index 0a841a81..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/refined_oil.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:item/refined_oil_bucket"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/steel_frame.json b/src/main/resources/assets/poweradvantage/models/item/steel_frame.json
deleted file mode 100644
index e87a33bb..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/steel_frame.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/steel_frame"
-}
diff --git a/src/main/resources/assets/poweradvantage/models/item/still.json b/src/main/resources/assets/poweradvantage/models/item/still.json
deleted file mode 100644
index e70ea2ae..00000000
--- a/src/main/resources/assets/poweradvantage/models/item/still.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "poweradvantage:block/still_off"
-}
\ No newline at end of file
diff --git a/src/main/resources/coremods/poweradvantage_116_migration.js b/src/main/resources/coremods/poweradvantage_116_migration.js
index f3093dcc..a0c0b935 100644
--- a/src/main/resources/coremods/poweradvantage_116_migration.js
+++ b/src/main/resources/coremods/poweradvantage_116_migration.js
@@ -6,13 +6,13 @@ var LabelNode = Java.type('org.objectweb.asm.tree.LabelNode');
var MethodInsnNode = Java.type('org.objectweb.asm.tree.MethodInsnNode');
var VarInsnNode = Java.type('org.objectweb.asm.tree.VarInsnNode');
-// Only the pre-datafix migration needs bytecode integration on Forge 1.16.
-var hook = 'zone/moddev/mc/poweradvantage/migration/LegacyWorldDataHook';
+// Only pre-datafix migration needs bytecode integration on Forge 1.17.
+var hook = 'zone/moddev/mc/basepower/migration/LegacyWorldDataHook';
function patchPlayerDataFix(classNode) {
var descriptor = '(Lcom/mojang/datafixers/DataFixer;' +
- 'Lnet/minecraft/util/datafix/DefaultTypeReferences;' +
- 'Lnet/minecraft/nbt/CompoundNBT;I)Lnet/minecraft/nbt/CompoundNBT;';
+ 'Lnet/minecraft/util/datafix/DataFixTypes;' +
+ 'Lnet/minecraft/nbt/CompoundTag;I)Lnet/minecraft/nbt/CompoundTag;';
var matches = 0;
var matchedMethod = null;
var matchedCall = null;
@@ -21,7 +21,7 @@ function patchPlayerDataFix(classNode) {
for (var instruction = method.instructions.getFirst(); instruction !== null;
instruction = instruction.getNext()) {
if (instruction.getOpcode() === Opcodes.INVOKESTATIC &&
- instruction.owner === 'net/minecraft/nbt/NBTUtil' && instruction.desc === descriptor) {
+ instruction.owner === 'net/minecraft/nbt/NbtUtils' && instruction.desc === descriptor) {
++matches;
matchedMethod = method;
matchedCall = instruction;
@@ -32,60 +32,81 @@ function patchPlayerDataFix(classNode) {
throw new Error('Power Advantage requires exactly one native player datafix call in ' + classNode.name);
}
matchedMethod.instructions.set(matchedCall, new MethodInsnNode(Opcodes.INVOKESTATIC,
- 'zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixes', 'update', descriptor, false));
+ 'zone/moddev/mc/basepower/migration/LegacyPlayerDataFixes', 'update', descriptor, false));
return classNode;
}
function initializeCoreMod() {
return {
'poweradvantage_legacy_player_file': {
- 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.storage.PlayerData' },
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.level.storage.PlayerDataStorage' },
'transformer': patchPlayerDataFix
},
'poweradvantage_legacy_embedded_player': {
- 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.storage.ServerWorldInfo' },
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.level.storage.PrimaryLevelData' },
'transformer': patchPlayerDataFix
},
'poweradvantage_legacy_world_info': {
- 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.storage.SaveFormat' },
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.level.storage.LevelStorageSource' },
'transformer': function(classNode) {
- var patched = false;
+ var worldReaders = 0;
+ var packReaders = 0;
for (var i = 0; i < classNode.methods.size(); ++i) {
var method = classNode.methods.get(i);
- if (method.desc !== '(Lcom/mojang/serialization/DynamicOps;' +
- 'Lnet/minecraft/util/datafix/codec/DatapackCodec;' +
- 'Lnet/minecraft/world/storage/SaveFormat$LevelSave;' +
+ var worldReader = method.desc === '(Lcom/mojang/serialization/DynamicOps;' +
+ 'Lnet/minecraft/world/level/DataPackConfig;' +
+ 'Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;' +
'Ljava/io/File;Lcom/mojang/datafixers/DataFixer;)' +
- 'Lnet/minecraft/world/storage/ServerWorldInfo;') continue;
- var prefix = new InsnList();
- prefix.add(new VarInsnNode(Opcodes.ALOAD, 3));
- prefix.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
- 'prepareLegacyWorld', '(Ljava/io/File;)V', false));
- method.instructions.insert(prefix);
- patched = true;
+ 'Lnet/minecraft/world/level/storage/PrimaryLevelData;';
+ var packReader = method.desc === '(Ljava/io/File;Lcom/mojang/datafixers/DataFixer;)' +
+ 'Lnet/minecraft/world/level/DataPackConfig;';
+ if (!worldReader && !packReader) continue;
+ if (worldReader) {
+ var prefix = new InsnList();
+ prefix.add(new VarInsnNode(Opcodes.ALOAD, 3));
+ prefix.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
+ 'prepareLegacyWorld', '(Ljava/io/File;)V', false));
+ method.instructions.insert(prefix);
+ }
+ var reads = 0;
+ for (var read = method.instructions.getFirst(); read !== null; read = read.getNext()) {
+ if (read.getOpcode() === Opcodes.INVOKESTATIC && read.owner === 'net/minecraft/nbt/NbtIo' &&
+ read.desc === '(Ljava/io/File;)Lnet/minecraft/nbt/CompoundTag;') {
+ var replacement = new MethodInsnNode(Opcodes.INVOKESTATIC,
+ 'zone/moddev/mc/basepower/migration/LegacyWorldMetadata', 'read', read.desc, false);
+ method.instructions.set(read, replacement);
+ read = replacement;
+ ++reads;
+ }
+ }
+ if (reads !== 1) throw new Error('Power Advantage expected one level metadata read');
+ if (worldReader) ++worldReaders;
+ if (packReader) ++packReaders;
+ }
+ if (worldReaders !== 1 || packReaders !== 1) {
+ throw new Error('Power Advantage could not attach both legacy level readers');
}
- if (!patched) throw new Error('Power Advantage could not attach its legacy world reader');
return classNode;
}
},
'poweradvantage_legacy_chunk_status': {
- 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.chunk.storage.ChunkLoader' },
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.level.chunk.storage.ChunkStorage' },
'transformer': function(classNode) {
- var descriptor = '(Lnet/minecraft/util/RegistryKey;' +
- 'Ljava/util/function/Supplier;Lnet/minecraft/nbt/CompoundNBT;)' +
- 'Lnet/minecraft/nbt/CompoundNBT;';
+ var descriptor = '(Lnet/minecraft/resources/ResourceKey;' +
+ 'Ljava/util/function/Supplier;Lnet/minecraft/nbt/CompoundTag;)' +
+ 'Lnet/minecraft/nbt/CompoundTag;';
var patchedRead = false;
var patchedReturn = false;
var patchedOwnership = false;
var patchedEntities = false;
for (var i = 0; i < classNode.methods.size(); ++i) {
var method = classNode.methods.get(i);
- if (method.desc === '(Lnet/minecraft/util/math/ChunkPos;)Lnet/minecraft/nbt/CompoundNBT;') {
+ if (method.desc === '(Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag;') {
for (var read = method.instructions.getFirst(); read !== null; read = read.getNext()) {
if (read.getOpcode() === Opcodes.ARETURN) {
method.instructions.insertBefore(read, new MethodInsnNode(Opcodes.INVOKESTATIC,
hook, 'copyChunkForMigration',
- '(Lnet/minecraft/nbt/CompoundNBT;)Lnet/minecraft/nbt/CompoundNBT;', false));
+ '(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;', false));
patchedOwnership = true;
}
}
@@ -95,11 +116,11 @@ function initializeCoreMod() {
// hooks so modded item durability is rescued before entity flattening.
for (var first = method.instructions.getFirst(); first !== null; first = first.getNext()) {
if (first.getOpcode() === Opcodes.INVOKESTATIC && first.owner === classNode.name &&
- first.desc === '(Lnet/minecraft/nbt/CompoundNBT;)I') {
+ first.desc === '(Lnet/minecraft/nbt/CompoundTag;)I') {
var entities = new InsnList();
entities.add(new VarInsnNode(Opcodes.ALOAD, 3));
entities.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
- 'prepareLegacyEntities', '(Lnet/minecraft/nbt/CompoundNBT;)V', false));
+ 'prepareLegacyEntities', '(Lnet/minecraft/nbt/CompoundTag;)V', false));
method.instructions.insertBefore(first, entities);
patchedEntities = true;
break;
@@ -108,7 +129,7 @@ function initializeCoreMod() {
var prepare = new InsnList();
prepare.add(new VarInsnNode(Opcodes.ALOAD, 3));
prepare.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
- 'prepareLegacyChunk', '(Lnet/minecraft/nbt/CompoundNBT;)V', false));
+ 'prepareLegacyChunk', '(Lnet/minecraft/nbt/CompoundTag;)V', false));
method.instructions.insert(prepare);
patchedRead = true;
for (var instruction = method.instructions.getFirst(); instruction !== null;
@@ -116,7 +137,7 @@ function initializeCoreMod() {
if (instruction.getOpcode() === Opcodes.ARETURN) {
method.instructions.insertBefore(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC,
hook, 'finalizeLegacyChunk',
- '(Lnet/minecraft/nbt/CompoundNBT;)Lnet/minecraft/nbt/CompoundNBT;', false));
+ '(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;', false));
patchedReturn = true;
}
}
@@ -127,11 +148,38 @@ function initializeCoreMod() {
return classNode;
}
},
+ 'poweradvantage_separate_entity_storage': {
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.level.chunk.storage.EntityStorage' },
+ 'transformer': function(classNode) {
+ var matches = 0;
+ var descriptor = '(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;';
+ for (var i = 0; i < classNode.methods.size(); ++i) {
+ var method = classNode.methods.get(i);
+ if (method.desc !== descriptor || (method.access & Opcodes.ACC_STATIC) !== 0) continue;
+ ++matches;
+ var prefix = new InsnList();
+ prefix.add(new VarInsnNode(Opcodes.ALOAD, 1));
+ prefix.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
+ 'prepareEntityChunkForMigration', descriptor, false));
+ prefix.add(new VarInsnNode(Opcodes.ASTORE, 1));
+ method.instructions.insert(prefix);
+ for (var instruction = method.instructions.getFirst(); instruction !== null;
+ instruction = instruction.getNext()) {
+ if (instruction.getOpcode() === Opcodes.ARETURN) {
+ method.instructions.insertBefore(instruction, new MethodInsnNode(Opcodes.INVOKESTATIC,
+ hook, 'finalizeLegacyChunk', descriptor, false));
+ }
+ }
+ }
+ if (matches !== 1) throw new Error('Power Advantage requires exactly one native entity-chunk converter');
+ return classNode;
+ }
+ },
'poweradvantage_legacy_worldgen_guard': {
- 'target': { 'type': 'CLASS', 'name': 'net.minecraft.world.gen.WorldGenRegion' },
+ 'target': { 'type': 'CLASS', 'name': 'net.minecraft.server.level.WorldGenRegion' },
'transformer': function(classNode) {
- var descriptor = '(Lnet/minecraft/util/math/BlockPos;' +
- 'Lnet/minecraft/block/BlockState;II)Z';
+ var descriptor = '(Lnet/minecraft/core/BlockPos;' +
+ 'Lnet/minecraft/world/level/block/state/BlockState;II)Z';
var patched = false;
for (var i = 0; i < classNode.methods.size(); ++i) {
var method = classNode.methods.get(i);
@@ -140,7 +188,7 @@ function initializeCoreMod() {
var prefix = new InsnList();
prefix.add(new VarInsnNode(Opcodes.ALOAD, 1));
prefix.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hook,
- 'shouldBlockWorldgenWrite', '(Lnet/minecraft/util/math/BlockPos;)Z', false));
+ 'shouldBlockWorldgenWrite', '(Lnet/minecraft/core/BlockPos;)Z', false));
prefix.add(new JumpInsnNode(Opcodes.IFEQ, allowed));
prefix.add(new InsnNode(Opcodes.ICONST_0));
prefix.add(new InsnNode(Opcodes.IRETURN));
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/bioplastic_from_starch.json b/src/main/resources/data/basepower/advancements/recipes/bioplastic_from_starch.json
similarity index 73%
rename from src/main/resources/data/poweradvantage/advancements/recipes/bioplastic_from_starch.json
rename to src/main/resources/data/basepower/advancements/recipes/bioplastic_from_starch.json
index b12696d4..c77b90f0 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/bioplastic_from_starch.json
+++ b/src/main/resources/data/basepower/advancements/recipes/bioplastic_from_starch.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:starch"
+ "items": [
+ "basepower:starch"
+ ]
}
]
}
@@ -14,7 +16,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:bioplastic_from_starch"
+ "recipe": "basepower:bioplastic_from_starch"
}
}
},
@@ -26,7 +28,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:bioplastic_from_starch"
+ "basepower:bioplastic_from_starch"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_electricity.json b/src/main/resources/data/basepower/advancements/recipes/converter_rf_electricity.json
similarity index 83%
rename from src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_electricity.json
rename to src/main/resources/data/basepower/advancements/recipes/converter_rf_electricity.json
index fdb15ac4..29e395bc 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_electricity.json
+++ b/src/main/resources/data/basepower/advancements/recipes/converter_rf_electricity.json
@@ -26,7 +26,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:redstone_block"
+ "items": [
+ "minecraft:redstone_block"
+ ]
}
]
}
@@ -34,7 +36,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:converter_rf_electricity"
+ "recipe": "basepower:converter_rf_electricity"
}
}
},
@@ -48,7 +50,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:converter_rf_electricity"
+ "basepower:converter_rf_electricity"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_quantum.json b/src/main/resources/data/basepower/advancements/recipes/converter_rf_quantum.json
similarity index 78%
rename from src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_quantum.json
rename to src/main/resources/data/basepower/advancements/recipes/converter_rf_quantum.json
index 3e740797..09df8231 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_quantum.json
+++ b/src/main/resources/data/basepower/advancements/recipes/converter_rf_quantum.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:ender_pearl"
+ "items": [
+ "minecraft:ender_pearl"
+ ]
}
]
}
@@ -26,7 +28,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:redstone_block"
+ "items": [
+ "minecraft:redstone_block"
+ ]
}
]
}
@@ -34,7 +38,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:converter_rf_quantum"
+ "recipe": "basepower:converter_rf_quantum"
}
}
},
@@ -48,7 +52,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:converter_rf_quantum"
+ "basepower:converter_rf_quantum"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_steam.json b/src/main/resources/data/basepower/advancements/recipes/converter_rf_steam.json
similarity index 84%
rename from src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_steam.json
rename to src/main/resources/data/basepower/advancements/recipes/converter_rf_steam.json
index 990200c0..7538dfad 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/converter_rf_steam.json
+++ b/src/main/resources/data/basepower/advancements/recipes/converter_rf_steam.json
@@ -26,7 +26,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:redstone_block"
+ "items": [
+ "minecraft:redstone_block"
+ ]
}
]
}
@@ -34,7 +36,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:converter_rf_steam"
+ "recipe": "basepower:converter_rf_steam"
}
}
},
@@ -48,7 +50,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:converter_rf_steam"
+ "basepower:converter_rf_steam"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_iron.json b/src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_iron.json
similarity index 86%
rename from src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_iron.json
rename to src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_iron.json
index bd7f8c97..cc616be6 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_iron.json
+++ b/src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_iron.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:converter_tr_electricity_iron"
+ "recipe": "basepower:converter_tr_electricity_iron"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:converter_tr_electricity_iron"
+ "basepower:converter_tr_electricity_iron"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_refined_iron.json b/src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_refined_iron.json
similarity index 84%
rename from src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_refined_iron.json
rename to src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_refined_iron.json
index e8ad9a09..9ae4e5f7 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/converter_tr_electricity_refined_iron.json
+++ b/src/main/resources/data/basepower/advancements/recipes/converter_tr_electricity_refined_iron.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:converter_tr_electricity_refined_iron"
+ "recipe": "basepower:converter_tr_electricity_refined_iron"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:converter_tr_electricity_refined_iron"
+ "basepower:converter_tr_electricity_refined_iron"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_discharge.json b/src/main/resources/data/basepower/advancements/recipes/fluid_discharge.json
similarity index 92%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_discharge.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_discharge.json
index 92d9a799..6eee6ff0 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_discharge.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_discharge.json
@@ -44,7 +44,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_discharge"
+ "recipe": "basepower:fluid_discharge"
}
}
},
@@ -59,7 +59,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_discharge"
+ "basepower:fluid_discharge"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_drain.json b/src/main/resources/data/basepower/advancements/recipes/fluid_drain.json
similarity index 93%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_drain.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_drain.json
index e3105a37..c79372f5 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_drain.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_drain.json
@@ -44,7 +44,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_drain"
+ "recipe": "basepower:fluid_drain"
}
}
},
@@ -59,7 +59,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_drain"
+ "basepower:fluid_drain"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_iron_normal.json b/src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_iron_normal.json
similarity index 86%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_iron_normal.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_iron_normal.json
index c7d0feb8..c25d54ec 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_iron_normal.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_iron_normal.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_metal_tank_iron_normal"
+ "recipe": "basepower:fluid_metal_tank_iron_normal"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_metal_tank_iron_normal"
+ "basepower:fluid_metal_tank_iron_normal"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_steel.json b/src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_steel.json
similarity index 87%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_steel.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_steel.json
index 6d74fa18..98f2b0e3 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_metal_tank_steel.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_metal_tank_steel.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_metal_tank_steel"
+ "recipe": "basepower:fluid_metal_tank_steel"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_metal_tank_steel"
+ "basepower:fluid_metal_tank_steel"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_apocalyptic.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_apocalyptic.json
similarity index 80%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_apocalyptic.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_apocalyptic.json
index 27009313..9ae581b8 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_apocalyptic.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_apocalyptic.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_copper_apocalyptic"
+ "recipe": "basepower:fluid_pipe_copper_apocalyptic"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_copper_apocalyptic"
+ "basepower:fluid_pipe_copper_apocalyptic"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_normal.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_normal.json
similarity index 82%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_normal.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_normal.json
index 729c73ec..508016f9 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_copper_normal.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_copper_normal.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_copper_normal"
+ "recipe": "basepower:fluid_pipe_copper_normal"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_copper_normal"
+ "basepower:fluid_pipe_copper_normal"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_apocalyptic.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_apocalyptic.json
similarity index 81%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_apocalyptic.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_apocalyptic.json
index 23f83225..902e5684 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_apocalyptic.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_apocalyptic.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_iron_apocalyptic"
+ "recipe": "basepower:fluid_pipe_iron_apocalyptic"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_iron_apocalyptic"
+ "basepower:fluid_pipe_iron_apocalyptic"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_normal.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_normal.json
similarity index 82%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_normal.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_normal.json
index 3e073674..69dfe6cb 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_normal.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_normal.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_iron_normal"
+ "recipe": "basepower:fluid_pipe_iron_normal"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_iron_normal"
+ "basepower:fluid_pipe_iron_normal"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_tech.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_tech.json
similarity index 83%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_tech.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_tech.json
index 0b9c5b1f..d9a093dc 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_iron_tech.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_iron_tech.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_iron_tech"
+ "recipe": "basepower:fluid_pipe_iron_tech"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_iron_tech"
+ "basepower:fluid_pipe_iron_tech"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_lead_apocalyptic.json b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_lead_apocalyptic.json
similarity index 81%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_lead_apocalyptic.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_pipe_lead_apocalyptic.json
index 32c9450b..9ebf5a61 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_pipe_lead_apocalyptic.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_pipe_lead_apocalyptic.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_pipe_lead_apocalyptic"
+ "recipe": "basepower:fluid_pipe_lead_apocalyptic"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_pipe_lead_apocalyptic"
+ "basepower:fluid_pipe_lead_apocalyptic"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_storage_tank.json b/src/main/resources/data/basepower/advancements/recipes/fluid_storage_tank.json
similarity index 88%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_storage_tank.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_storage_tank.json
index 4ed10ce5..93c5e276 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_storage_tank.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_storage_tank.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_storage_tank"
+ "recipe": "basepower:fluid_storage_tank"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_storage_tank"
+ "basepower:fluid_storage_tank"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_switch.json b/src/main/resources/data/basepower/advancements/recipes/fluid_switch.json
similarity index 86%
rename from src/main/resources/data/poweradvantage/advancements/recipes/fluid_switch.json
rename to src/main/resources/data/basepower/advancements/recipes/fluid_switch.json
index 08e18f07..ab63dfb3 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/fluid_switch.json
+++ b/src/main/resources/data/basepower/advancements/recipes/fluid_switch.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:lever"
+ "items": [
+ "minecraft:lever"
+ ]
}
]
}
@@ -34,7 +36,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:fluid_switch"
+ "recipe": "basepower:fluid_switch"
}
}
},
@@ -48,7 +50,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:fluid_switch"
+ "basepower:fluid_switch"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_conveyor.json b/src/main/resources/data/basepower/advancements/recipes/item_conveyor.json
similarity index 86%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_conveyor.json
rename to src/main/resources/data/basepower/advancements/recipes/item_conveyor.json
index 604ef11f..dc3f1487 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_conveyor.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_conveyor.json
@@ -26,7 +26,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:hopper"
+ "items": [
+ "minecraft:hopper"
+ ]
}
]
}
@@ -34,7 +36,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_conveyor"
+ "recipe": "basepower:item_conveyor"
}
}
},
@@ -48,7 +50,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_conveyor"
+ "basepower:item_conveyor"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_block.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_block.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_block.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_block.json
index 75e1064f..115d0e5a 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_block.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_block.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:stone"
+ "items": [
+ "minecraft:stone"
+ ]
}
]
}
@@ -26,7 +30,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +40,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_block"
+ "recipe": "basepower:item_filter_block"
}
}
},
@@ -48,7 +54,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_block"
+ "basepower:item_filter_block"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_food.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_food.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_food.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_food.json
index a781e2d6..30354212 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_food.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_food.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:bread"
+ "items": [
+ "minecraft:bread"
+ ]
}
]
}
@@ -26,7 +30,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +40,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_food"
+ "recipe": "basepower:item_filter_food"
}
}
},
@@ -48,7 +54,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_food"
+ "basepower:item_filter_food"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_fuel.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_fuel.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_fuel.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_fuel.json
index 4bef4dd2..da4a9fd6 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_fuel.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_fuel.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:coal"
+ "items": [
+ "minecraft:coal"
+ ]
}
]
}
@@ -26,7 +30,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +40,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_fuel"
+ "recipe": "basepower:item_filter_fuel"
}
}
},
@@ -48,7 +54,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_fuel"
+ "basepower:item_filter_fuel"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_inventory.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_inventory.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_inventory.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_inventory.json
index cbf44f37..d5135156 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_inventory.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_inventory.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:chest"
+ "items": [
+ "minecraft:chest"
+ ]
}
]
}
@@ -26,7 +30,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +40,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_inventory"
+ "recipe": "basepower:item_filter_inventory"
}
}
},
@@ -48,7 +54,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_inventory"
+ "basepower:item_filter_inventory"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_ore.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_ore.json
similarity index 78%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_ore.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_ore.json
index 8b572bdf..20d8379e 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_ore.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_ore.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -26,7 +28,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +38,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_ore"
+ "recipe": "basepower:item_filter_ore"
}
}
},
@@ -48,7 +52,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_ore"
+ "basepower:item_filter_ore"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_overflow.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_overflow.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_overflow.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_overflow.json
index 46807bcb..88edaf5e 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_overflow.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_overflow.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -24,7 +28,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_overflow"
+ "recipe": "basepower:item_filter_overflow"
}
}
},
@@ -37,7 +41,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_overflow"
+ "basepower:item_filter_overflow"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_plant.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_plant.json
similarity index 78%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_plant.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_plant.json
index 8fcd57bc..061a6d22 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_plant.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_plant.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -26,7 +28,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +38,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_plant"
+ "recipe": "basepower:item_filter_plant"
}
}
},
@@ -48,7 +52,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_plant"
+ "basepower:item_filter_plant"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_smelt.json b/src/main/resources/data/basepower/advancements/recipes/item_filter_smelt.json
similarity index 72%
rename from src/main/resources/data/poweradvantage/advancements/recipes/item_filter_smelt.json
rename to src/main/resources/data/basepower/advancements/recipes/item_filter_smelt.json
index b0f57b85..c88d9095 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/item_filter_smelt.json
+++ b/src/main/resources/data/basepower/advancements/recipes/item_filter_smelt.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "poweradvantage:item_conveyor"
+ "items": [
+ "basepower:item_conveyor"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:furnace"
+ "items": [
+ "minecraft:furnace"
+ ]
}
]
}
@@ -26,7 +30,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:oak_pressure_plate"
+ "items": [
+ "minecraft:oak_pressure_plate"
+ ]
}
]
}
@@ -34,7 +40,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:item_filter_smelt"
+ "recipe": "basepower:item_filter_smelt"
}
}
},
@@ -48,7 +54,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:item_filter_smelt"
+ "basepower:item_filter_smelt"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/rotator_tool.json b/src/main/resources/data/basepower/advancements/recipes/rotator_tool.json
similarity index 89%
rename from src/main/resources/data/poweradvantage/advancements/recipes/rotator_tool.json
rename to src/main/resources/data/basepower/advancements/recipes/rotator_tool.json
index b8367265..eed458d8 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/rotator_tool.json
+++ b/src/main/resources/data/basepower/advancements/recipes/rotator_tool.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:rotator_tool"
+ "recipe": "basepower:rotator_tool"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:rotator_tool"
+ "basepower:rotator_tool"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json b/src/main/resources/data/basepower/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json
similarity index 84%
rename from src/main/resources/data/poweradvantage/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json
rename to src/main/resources/data/basepower/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json
index 088df53f..2591d5ee 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json
+++ b/src/main/resources/data/basepower/advancements/recipes/sprocket_bronze_nugget_tech_no_rod.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:sprocket_bronze_nugget_tech_no_rod"
+ "recipe": "basepower:sprocket_bronze_nugget_tech_no_rod"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:sprocket_bronze_nugget_tech_no_rod"
+ "basepower:sprocket_bronze_nugget_tech_no_rod"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_normal.json b/src/main/resources/data/basepower/advancements/recipes/sprocket_rod_normal.json
similarity index 87%
rename from src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_normal.json
rename to src/main/resources/data/basepower/advancements/recipes/sprocket_rod_normal.json
index a322a855..ea3a3bcc 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_normal.json
+++ b/src/main/resources/data/basepower/advancements/recipes/sprocket_rod_normal.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:sprocket_rod_normal"
+ "recipe": "basepower:sprocket_rod_normal"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:sprocket_rod_normal"
+ "basepower:sprocket_rod_normal"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_tech.json b/src/main/resources/data/basepower/advancements/recipes/sprocket_rod_tech.json
similarity index 88%
rename from src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_tech.json
rename to src/main/resources/data/basepower/advancements/recipes/sprocket_rod_tech.json
index 5f79ed5b..4a6a2719 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_rod_tech.json
+++ b/src/main/resources/data/basepower/advancements/recipes/sprocket_rod_tech.json
@@ -24,7 +24,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:sprocket_rod_tech"
+ "recipe": "basepower:sprocket_rod_tech"
}
}
},
@@ -37,7 +37,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:sprocket_rod_tech"
+ "basepower:sprocket_rod_tech"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_stickwood_normal.json b/src/main/resources/data/basepower/advancements/recipes/sprocket_stickwood_normal.json
similarity index 81%
rename from src/main/resources/data/poweradvantage/advancements/recipes/sprocket_stickwood_normal.json
rename to src/main/resources/data/basepower/advancements/recipes/sprocket_stickwood_normal.json
index 2ed87710..203b43ad 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/sprocket_stickwood_normal.json
+++ b/src/main/resources/data/basepower/advancements/recipes/sprocket_stickwood_normal.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:sprocket_stickwood_normal"
+ "recipe": "basepower:sprocket_stickwood_normal"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:sprocket_stickwood_normal"
+ "basepower:sprocket_stickwood_normal"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/starch_from_potato.json b/src/main/resources/data/basepower/advancements/recipes/starch_from_potato.json
similarity index 73%
rename from src/main/resources/data/poweradvantage/advancements/recipes/starch_from_potato.json
rename to src/main/resources/data/basepower/advancements/recipes/starch_from_potato.json
index 1b43de31..ac7e7fb0 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/starch_from_potato.json
+++ b/src/main/resources/data/basepower/advancements/recipes/starch_from_potato.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:potato"
+ "items": [
+ "minecraft:potato"
+ ]
}
]
}
@@ -16,7 +18,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:poisonous_potato"
+ "items": [
+ "minecraft:poisonous_potato"
+ ]
}
]
}
@@ -24,7 +28,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:starch_from_potato"
+ "recipe": "basepower:starch_from_potato"
}
}
},
@@ -37,7 +41,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:starch_from_potato"
+ "basepower:starch_from_potato"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/steel_frame.json b/src/main/resources/data/basepower/advancements/recipes/steel_frame.json
similarity index 85%
rename from src/main/resources/data/poweradvantage/advancements/recipes/steel_frame.json
rename to src/main/resources/data/basepower/advancements/recipes/steel_frame.json
index 48cafc5e..f0268ab3 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/steel_frame.json
+++ b/src/main/resources/data/basepower/advancements/recipes/steel_frame.json
@@ -14,7 +14,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:steel_frame"
+ "recipe": "basepower:steel_frame"
}
}
},
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:steel_frame"
+ "basepower:steel_frame"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/advancements/recipes/still.json b/src/main/resources/data/basepower/advancements/recipes/still.json
similarity index 81%
rename from src/main/resources/data/poweradvantage/advancements/recipes/still.json
rename to src/main/resources/data/basepower/advancements/recipes/still.json
index c3199575..9b2de58d 100644
--- a/src/main/resources/data/poweradvantage/advancements/recipes/still.json
+++ b/src/main/resources/data/basepower/advancements/recipes/still.json
@@ -6,7 +6,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:bucket"
+ "items": [
+ "minecraft:bucket"
+ ]
}
]
}
@@ -26,7 +28,9 @@
"conditions": {
"items": [
{
- "item": "minecraft:furnace"
+ "items": [
+ "minecraft:furnace"
+ ]
}
]
}
@@ -34,7 +38,7 @@
"has_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
- "recipe": "poweradvantage:still"
+ "recipe": "basepower:still"
}
}
},
@@ -48,7 +52,7 @@
],
"rewards": {
"recipes": [
- "poweradvantage:still"
+ "basepower:still"
]
}
}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_steam.json b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_electricity.json
similarity index 82%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_steam.json
rename to src/main/resources/data/basepower/loot_tables/blocks/converter_rf_electricity.json
index 07737020..f0eeb562 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_steam.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_electricity.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:converter_rf_steam"
+ "name": "basepower:converter_rf_electricity"
}
],
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_discharge.json b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_quantum.json
similarity index 84%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_discharge.json
rename to src/main/resources/data/basepower/loot_tables/blocks/converter_rf_quantum.json
index 298c05f7..2e242d64 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_discharge.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_quantum.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_discharge"
+ "name": "basepower:converter_rf_quantum"
}
],
"conditions": [
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_steam.json b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_steam.json
new file mode 100644
index 00000000..3d539b20
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/converter_rf_steam.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:converter_rf_steam"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/converter_tr_electricity.json b/src/main/resources/data/basepower/loot_tables/blocks/converter_tr_electricity.json
new file mode 100644
index 00000000..0b038ad7
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/converter_tr_electricity.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:converter_tr_electricity"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/crude_oil.json b/src/main/resources/data/basepower/loot_tables/blocks/crude_oil.json
similarity index 100%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/crude_oil.json
rename to src/main/resources/data/basepower/loot_tables/blocks/crude_oil.json
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/fluid_discharge.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_discharge.json
new file mode 100644
index 00000000..16622703
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_discharge.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:fluid_discharge"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_drain.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_drain.json
similarity index 85%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_drain.json
rename to src/main/resources/data/basepower/loot_tables/blocks/fluid_drain.json
index b2ad111b..227d6e92 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_drain.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_drain.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_drain"
+ "name": "basepower:fluid_drain"
}
],
"conditions": [
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/fluid_metal_tank.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_metal_tank.json
new file mode 100644
index 00000000..5064dee3
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_metal_tank.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:fluid_metal_tank"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe.json
similarity index 85%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe.json
rename to src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe.json
index 3d5f6f46..9f8e3a2a 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_pipe"
+ "name": "basepower:fluid_pipe"
}
],
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe_terminal.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe_terminal.json
similarity index 85%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe_terminal.json
rename to src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe_terminal.json
index 3d5f6f46..9f8e3a2a 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_pipe_terminal.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_pipe_terminal.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_pipe"
+ "name": "basepower:fluid_pipe"
}
],
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_storage_tank.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_storage_tank.json
similarity index 93%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_storage_tank.json
rename to src/main/resources/data/basepower/loot_tables/blocks/fluid_storage_tank.json
index f36a05cc..c77ad259 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_storage_tank.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_storage_tank.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_storage_tank",
+ "name": "basepower:fluid_storage_tank",
"functions": [
{
"function": "minecraft:copy_nbt",
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/fluid_switch.json b/src/main/resources/data/basepower/loot_tables/blocks/fluid_switch.json
new file mode 100644
index 00000000..e17c40b0
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/fluid_switch.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:fluid_switch"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/infinite_electricity.json b/src/main/resources/data/basepower/loot_tables/blocks/infinite_electricity.json
new file mode 100644
index 00000000..f2619aa1
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/infinite_electricity.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:infinite_electricity"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/infinite_quantum.json b/src/main/resources/data/basepower/loot_tables/blocks/infinite_quantum.json
new file mode 100644
index 00000000..a6d00f22
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/infinite_quantum.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:infinite_quantum"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/infinite_steam.json b/src/main/resources/data/basepower/loot_tables/blocks/infinite_steam.json
new file mode 100644
index 00000000..d6160ac6
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/infinite_steam.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:infinite_steam"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_conveyor.json b/src/main/resources/data/basepower/loot_tables/blocks/item_conveyor.json
new file mode 100644
index 00000000..5ebadd8b
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_conveyor.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_conveyor"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_switch.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_block.json
similarity index 84%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_switch.json
rename to src/main/resources/data/basepower/loot_tables/blocks/item_filter_block.json
index c7f47edc..954e7bca 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_switch.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_block.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_switch"
+ "name": "basepower:item_filter_block"
}
],
"conditions": [
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_food.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_food.json
new file mode 100644
index 00000000..037ac4ed
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_food.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_food"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_fuel.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_fuel.json
new file mode 100644
index 00000000..441949c1
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_fuel.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_fuel"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_metal_tank.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_inventory.json
similarity index 83%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_metal_tank.json
rename to src/main/resources/data/basepower/loot_tables/blocks/item_filter_inventory.json
index acd5684f..22738bc4 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/fluid_metal_tank.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_inventory.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:fluid_metal_tank"
+ "name": "basepower:item_filter_inventory"
}
],
"conditions": [
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_ore.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_ore.json
new file mode 100644
index 00000000..65407ae0
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_ore.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_ore"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_overflow.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_overflow.json
new file mode 100644
index 00000000..14643a76
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_overflow.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_overflow"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_plant.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_plant.json
new file mode 100644
index 00000000..789d5818
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_plant.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_plant"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/loot_tables/blocks/item_filter_smelt.json b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_smelt.json
new file mode 100644
index 00000000..428ef83b
--- /dev/null
+++ b/src/main/resources/data/basepower/loot_tables/blocks/item_filter_smelt.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "basepower:item_filter_smelt"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/refined_oil.json b/src/main/resources/data/basepower/loot_tables/blocks/refined_oil.json
similarity index 100%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/refined_oil.json
rename to src/main/resources/data/basepower/loot_tables/blocks/refined_oil.json
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/steel_frame.json b/src/main/resources/data/basepower/loot_tables/blocks/steel_frame.json
similarity index 85%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/steel_frame.json
rename to src/main/resources/data/basepower/loot_tables/blocks/steel_frame.json
index 9dd92362..db1c9265 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/steel_frame.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/steel_frame.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:steel_frame"
+ "name": "basepower:steel_frame"
}
],
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/still.json b/src/main/resources/data/basepower/loot_tables/blocks/still.json
similarity index 86%
rename from src/main/resources/data/poweradvantage/loot_tables/blocks/still.json
rename to src/main/resources/data/basepower/loot_tables/blocks/still.json
index e71b507e..be2fb245 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/still.json
+++ b/src/main/resources/data/basepower/loot_tables/blocks/still.json
@@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
- "name": "poweradvantage:still"
+ "name": "basepower:still"
}
],
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/loot_tables/chests/advantage_parts.json b/src/main/resources/data/basepower/loot_tables/chests/advantage_parts.json
similarity index 77%
rename from src/main/resources/data/poweradvantage/loot_tables/chests/advantage_parts.json
rename to src/main/resources/data/basepower/loot_tables/chests/advantage_parts.json
index c4998bb3..c0958a9c 100644
--- a/src/main/resources/data/poweradvantage/loot_tables/chests/advantage_parts.json
+++ b/src/main/resources/data/basepower/loot_tables/chests/advantage_parts.json
@@ -10,7 +10,7 @@
},
{
"type": "item",
- "name": "poweradvantage:sprocket",
+ "name": "basepower:sprocket",
"weight": 5,
"functions": [
{
@@ -24,7 +24,7 @@
},
{
"type": "item",
- "name": "poweradvantage:fluid_pipe",
+ "name": "basepower:fluid_pipe",
"weight": 5,
"functions": [
{
@@ -38,22 +38,22 @@
},
{
"type": "item",
- "name": "poweradvantage:fluid_storage_tank",
+ "name": "basepower:fluid_storage_tank",
"weight": 3
},
{
"type": "item",
- "name": "poweradvantage:fluid_drain",
+ "name": "basepower:fluid_drain",
"weight": 2
},
{
"type": "item",
- "name": "poweradvantage:fluid_discharge",
+ "name": "basepower:fluid_discharge",
"weight": 2
},
{
"type": "item",
- "name": "poweradvantage:item_conveyor",
+ "name": "basepower:item_conveyor",
"weight": 3,
"functions": [
{
@@ -66,7 +66,7 @@
]
}
],
- "name": "poweradvantage_legacy_parts_0"
+ "name": "basepower_legacy_parts_0"
}
]
}
diff --git a/src/main/resources/data/poweradvantage/orespawn/provider.json b/src/main/resources/data/basepower/orespawn/provider.json
similarity index 89%
rename from src/main/resources/data/poweradvantage/orespawn/provider.json
rename to src/main/resources/data/basepower/orespawn/provider.json
index 926e1005..6dd46c28 100644
--- a/src/main/resources/data/poweradvantage/orespawn/provider.json
+++ b/src/main/resources/data/basepower/orespawn/provider.json
@@ -1,14 +1,14 @@
{
"schema_version": 4,
- "provider_modid": "poweradvantage",
+ "provider_modid": "basepower",
"provider_revision": 1,
"profile_defaults": {
"place_fluid_deposits": true
},
"fluid_deposits": {
- "poweradvantage:fluid_deposit/desert_crude_oil": {
+ "basepower:fluid_deposit/desert_crude_oil": {
"enabled": true,
- "block": "poweradvantage:crude_oil",
+ "block": "basepower:crude_oil",
"dimensions": {
"minecraft:overworld": {
"enabled": true,
diff --git a/src/main/resources/data/basepower/recipes/bioplastic_from_starch.json b/src/main/resources/data/basepower/recipes/bioplastic_from_starch.json
new file mode 100644
index 00000000..d0d38d7b
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/bioplastic_from_starch.json
@@ -0,0 +1,11 @@
+{
+ "type": "minecraft:smelting",
+ "ingredient": {
+ "item": "basepower:starch"
+ },
+ "result": "basepower:bioplastic_ingot",
+ "experience": 0.1,
+ "cookingtime": 200,
+ "conditions": [],
+ "group": "basepower:bioplastic_ingot"
+}
diff --git a/src/main/resources/data/poweradvantage/recipes/converter_rf_electricity.json b/src/main/resources/data/basepower/recipes/converter_rf_electricity.json
similarity index 66%
rename from src/main/resources/data/poweradvantage/recipes/converter_rf_electricity.json
rename to src/main/resources/data/basepower/recipes/converter_rf_electricity.json
index 14ce2a66..2684a731 100644
--- a/src/main/resources/data/poweradvantage/recipes/converter_rf_electricity.json
+++ b/src/main/resources/data/basepower/recipes/converter_rf_electricity.json
@@ -15,17 +15,17 @@
}
},
"result": {
- "item": "poweradvantage:converter_rf_electricity"
+ "item": "basepower:converter_rf_electricity"
},
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:power_supply_units"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
}
],
- "group": "poweradvantage:converter_rf_electricity"
+ "group": "basepower:converter_rf_electricity"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/converter_rf_quantum.json b/src/main/resources/data/basepower/recipes/converter_rf_quantum.json
similarity index 70%
rename from src/main/resources/data/poweradvantage/recipes/converter_rf_quantum.json
rename to src/main/resources/data/basepower/recipes/converter_rf_quantum.json
index 847a7766..42803316 100644
--- a/src/main/resources/data/poweradvantage/recipes/converter_rf_quantum.json
+++ b/src/main/resources/data/basepower/recipes/converter_rf_quantum.json
@@ -15,13 +15,13 @@
}
},
"result": {
- "item": "poweradvantage:converter_rf_quantum"
+ "item": "basepower:converter_rf_quantum"
},
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
}
],
- "group": "poweradvantage:converter_rf_quantum"
+ "group": "basepower:converter_rf_quantum"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/converter_rf_steam.json b/src/main/resources/data/basepower/recipes/converter_rf_steam.json
similarity index 67%
rename from src/main/resources/data/poweradvantage/recipes/converter_rf_steam.json
rename to src/main/resources/data/basepower/recipes/converter_rf_steam.json
index 8063d676..af33bdfc 100644
--- a/src/main/resources/data/poweradvantage/recipes/converter_rf_steam.json
+++ b/src/main/resources/data/basepower/recipes/converter_rf_steam.json
@@ -15,17 +15,17 @@
}
},
"result": {
- "item": "poweradvantage:converter_rf_steam"
+ "item": "basepower:converter_rf_steam"
},
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:governors"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
}
],
- "group": "poweradvantage:converter_rf_steam"
+ "group": "basepower:converter_rf_steam"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_iron.json b/src/main/resources/data/basepower/recipes/converter_tr_electricity_iron.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_iron.json
rename to src/main/resources/data/basepower/recipes/converter_tr_electricity_iron.json
index 7e651368..1e4061fc 100644
--- a/src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_iron.json
+++ b/src/main/resources/data/basepower/recipes/converter_tr_electricity_iron.json
@@ -14,21 +14,21 @@
}
},
"result": {
- "item": "poweradvantage:converter_tr_electricity"
+ "item": "basepower:converter_tr_electricity"
},
"conditions": [
{
- "type": "poweradvantage:tag_empty",
+ "type": "basepower:tag_empty",
"tag": "forge:ingots/refined_iron"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:power_supply_units"
}
],
- "group": "poweradvantage:converter_tr_electricity"
+ "group": "basepower:converter_tr_electricity"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_refined_iron.json b/src/main/resources/data/basepower/recipes/converter_tr_electricity_refined_iron.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_refined_iron.json
rename to src/main/resources/data/basepower/recipes/converter_tr_electricity_refined_iron.json
index b54899e9..478f6afa 100644
--- a/src/main/resources/data/poweradvantage/recipes/converter_tr_electricity_refined_iron.json
+++ b/src/main/resources/data/basepower/recipes/converter_tr_electricity_refined_iron.json
@@ -14,17 +14,17 @@
}
},
"result": {
- "item": "poweradvantage:converter_tr_electricity"
+ "item": "basepower:converter_tr_electricity"
},
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/refined_iron"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:power_supply_units"
}
],
- "group": "poweradvantage:converter_tr_electricity"
+ "group": "basepower:converter_tr_electricity"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_discharge.json b/src/main/resources/data/basepower/recipes/crushing_fluid_discharge.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/crushing_fluid_discharge.json
rename to src/main/resources/data/basepower/recipes/crushing_fluid_discharge.json
index be1433fc..287cfbfd 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_discharge.json
+++ b/src/main/resources/data/basepower/recipes/crushing_fluid_discharge.json
@@ -1,10 +1,10 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:fluid_discharge"
+ "item": "basepower:fluid_discharge"
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 2
},
"conditions": [
@@ -13,7 +13,7 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_drain.json b/src/main/resources/data/basepower/recipes/crushing_fluid_drain.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/crushing_fluid_drain.json
rename to src/main/resources/data/basepower/recipes/crushing_fluid_drain.json
index 9f29a41c..69d8e470 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_drain.json
+++ b/src/main/resources/data/basepower/recipes/crushing_fluid_drain.json
@@ -1,10 +1,10 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:fluid_drain"
+ "item": "basepower:fluid_drain"
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 2
},
"conditions": [
@@ -13,7 +13,7 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_storage_tank.json b/src/main/resources/data/basepower/recipes/crushing_fluid_storage_tank.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/crushing_fluid_storage_tank.json
rename to src/main/resources/data/basepower/recipes/crushing_fluid_storage_tank.json
index ef926eb3..a6d41a9e 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_fluid_storage_tank.json
+++ b/src/main/resources/data/basepower/recipes/crushing_fluid_storage_tank.json
@@ -1,10 +1,10 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:fluid_storage_tank"
+ "item": "basepower:fluid_storage_tank"
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 1
},
"conditions": [
@@ -13,7 +13,7 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_conveyor.json b/src/main/resources/data/basepower/recipes/crushing_item_conveyor.json
similarity index 70%
rename from src/main/resources/data/poweradvantage/recipes/crushing_item_conveyor.json
rename to src/main/resources/data/basepower/recipes/crushing_item_conveyor.json
index 938aa2cd..f20d15eb 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_conveyor.json
+++ b/src/main/resources/data/basepower/recipes/crushing_item_conveyor.json
@@ -1,7 +1,7 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"result": {
"item": "basemetals:steel_plate",
@@ -13,11 +13,11 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/basepower/recipes/crushing_item_filter_block.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_block.json
new file mode 100644
index 00000000..d3429ad9
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_block.json
@@ -0,0 +1,24 @@
+{
+ "type": "basemetals:crushing",
+ "ingredient": {
+ "item": "basepower:item_filter_block"
+ },
+ "result": {
+ "item": "basemetals:steel_plate",
+ "count": 1
+ },
+ "conditions": [
+ {
+ "type": "forge:mod_loaded",
+ "modid": "basemetals"
+ },
+ {
+ "type": "basepower:recipe_mode",
+ "mode": "APOCALYPTIC"
+ },
+ {
+ "type": "basepower:tag_not_empty",
+ "tag": "forge:plates/steel"
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_food.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_food.json
similarity index 69%
rename from src/main/resources/data/poweradvantage/recipes/crushing_item_filter_food.json
rename to src/main/resources/data/basepower/recipes/crushing_item_filter_food.json
index 21c06c04..05ccc8e4 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_food.json
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_food.json
@@ -1,7 +1,7 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:item_filter_food"
+ "item": "basepower:item_filter_food"
},
"result": {
"item": "basemetals:steel_plate",
@@ -13,11 +13,11 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_fuel.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_fuel.json
similarity index 69%
rename from src/main/resources/data/poweradvantage/recipes/crushing_item_filter_fuel.json
rename to src/main/resources/data/basepower/recipes/crushing_item_filter_fuel.json
index 15f45a8f..44f31b31 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_fuel.json
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_fuel.json
@@ -1,7 +1,7 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:item_filter_fuel"
+ "item": "basepower:item_filter_fuel"
},
"result": {
"item": "basemetals:steel_plate",
@@ -13,11 +13,11 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/basepower/recipes/crushing_item_filter_inventory.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_inventory.json
new file mode 100644
index 00000000..807e993d
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_inventory.json
@@ -0,0 +1,24 @@
+{
+ "type": "basemetals:crushing",
+ "ingredient": {
+ "item": "basepower:item_filter_inventory"
+ },
+ "result": {
+ "item": "basemetals:steel_plate",
+ "count": 1
+ },
+ "conditions": [
+ {
+ "type": "forge:mod_loaded",
+ "modid": "basemetals"
+ },
+ {
+ "type": "basepower:recipe_mode",
+ "mode": "APOCALYPTIC"
+ },
+ {
+ "type": "basepower:tag_not_empty",
+ "tag": "forge:plates/steel"
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_ore.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_ore.json
similarity index 70%
rename from src/main/resources/data/poweradvantage/recipes/crushing_item_filter_ore.json
rename to src/main/resources/data/basepower/recipes/crushing_item_filter_ore.json
index c452fc85..e6163d6b 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_ore.json
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_ore.json
@@ -1,7 +1,7 @@
{
"type": "basemetals:crushing",
"ingredient": {
- "item": "poweradvantage:item_filter_ore"
+ "item": "basepower:item_filter_ore"
},
"result": {
"item": "basemetals:steel_plate",
@@ -13,11 +13,11 @@
"modid": "basemetals"
},
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/basepower/recipes/crushing_item_filter_overflow.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_overflow.json
new file mode 100644
index 00000000..bebb9dbf
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_overflow.json
@@ -0,0 +1,24 @@
+{
+ "type": "basemetals:crushing",
+ "ingredient": {
+ "item": "basepower:item_filter_overflow"
+ },
+ "result": {
+ "item": "basemetals:steel_plate",
+ "count": 1
+ },
+ "conditions": [
+ {
+ "type": "forge:mod_loaded",
+ "modid": "basemetals"
+ },
+ {
+ "type": "basepower:recipe_mode",
+ "mode": "APOCALYPTIC"
+ },
+ {
+ "type": "basepower:tag_not_empty",
+ "tag": "forge:plates/steel"
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/recipes/crushing_item_filter_plant.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_plant.json
new file mode 100644
index 00000000..3477628d
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_plant.json
@@ -0,0 +1,24 @@
+{
+ "type": "basemetals:crushing",
+ "ingredient": {
+ "item": "basepower:item_filter_plant"
+ },
+ "result": {
+ "item": "basemetals:steel_plate",
+ "count": 1
+ },
+ "conditions": [
+ {
+ "type": "forge:mod_loaded",
+ "modid": "basemetals"
+ },
+ {
+ "type": "basepower:recipe_mode",
+ "mode": "APOCALYPTIC"
+ },
+ {
+ "type": "basepower:tag_not_empty",
+ "tag": "forge:plates/steel"
+ }
+ ]
+}
diff --git a/src/main/resources/data/basepower/recipes/crushing_item_filter_smelt.json b/src/main/resources/data/basepower/recipes/crushing_item_filter_smelt.json
new file mode 100644
index 00000000..4b460e80
--- /dev/null
+++ b/src/main/resources/data/basepower/recipes/crushing_item_filter_smelt.json
@@ -0,0 +1,24 @@
+{
+ "type": "basemetals:crushing",
+ "ingredient": {
+ "item": "basepower:item_filter_smelt"
+ },
+ "result": {
+ "item": "basemetals:steel_plate",
+ "count": 1
+ },
+ "conditions": [
+ {
+ "type": "forge:mod_loaded",
+ "modid": "basemetals"
+ },
+ {
+ "type": "basepower:recipe_mode",
+ "mode": "APOCALYPTIC"
+ },
+ {
+ "type": "basepower:tag_not_empty",
+ "tag": "forge:plates/steel"
+ }
+ ]
+}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_potato_starch.json b/src/main/resources/data/basepower/recipes/crushing_potato_starch.json
similarity index 88%
rename from src/main/resources/data/poweradvantage/recipes/crushing_potato_starch.json
rename to src/main/resources/data/basepower/recipes/crushing_potato_starch.json
index 9282b29e..6e8df4fa 100644
--- a/src/main/resources/data/poweradvantage/recipes/crushing_potato_starch.json
+++ b/src/main/resources/data/basepower/recipes/crushing_potato_starch.json
@@ -9,7 +9,7 @@
}
],
"result": {
- "item": "poweradvantage:starch",
+ "item": "basepower:starch",
"count": 1
},
"conditions": [
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_discharge.json b/src/main/resources/data/basepower/recipes/fluid_discharge.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/fluid_discharge.json
rename to src/main/resources/data/basepower/recipes/fluid_discharge.json
index ecf2d303..6a49f66d 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_discharge.json
+++ b/src/main/resources/data/basepower/recipes/fluid_discharge.json
@@ -20,24 +20,24 @@
}
},
"result": {
- "item": "poweradvantage:fluid_discharge"
+ "item": "basepower:fluid_discharge"
},
- "group": "poweradvantage:fluid_discharge",
+ "group": "basepower:fluid_discharge",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:bars"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_drain.json b/src/main/resources/data/basepower/recipes/fluid_drain.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/fluid_drain.json
rename to src/main/resources/data/basepower/recipes/fluid_drain.json
index 94a9e5b5..fd33b2c8 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_drain.json
+++ b/src/main/resources/data/basepower/recipes/fluid_drain.json
@@ -20,24 +20,24 @@
}
},
"result": {
- "item": "poweradvantage:fluid_drain"
+ "item": "basepower:fluid_drain"
},
- "group": "poweradvantage:fluid_drain",
+ "group": "basepower:fluid_drain",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:bars"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_iron_normal.json b/src/main/resources/data/basepower/recipes/fluid_metal_tank_iron_normal.json
similarity index 61%
rename from src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_iron_normal.json
rename to src/main/resources/data/basepower/recipes/fluid_metal_tank_iron_normal.json
index f97e9c64..9c0fdc33 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_iron_normal.json
+++ b/src/main/resources/data/basepower/recipes/fluid_metal_tank_iron_normal.json
@@ -14,21 +14,21 @@
}
},
"result": {
- "item": "poweradvantage:fluid_metal_tank"
+ "item": "basepower:fluid_metal_tank"
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "NORMAL"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
}
],
- "group": "poweradvantage:fluid_metal_tank"
+ "group": "basepower:fluid_metal_tank"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_steel.json b/src/main/resources/data/basepower/recipes/fluid_metal_tank_steel.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_steel.json
rename to src/main/resources/data/basepower/recipes/fluid_metal_tank_steel.json
index 2045c3b2..37733d05 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_metal_tank_steel.json
+++ b/src/main/resources/data/basepower/recipes/fluid_metal_tank_steel.json
@@ -14,16 +14,16 @@
}
},
"result": {
- "item": "poweradvantage:fluid_metal_tank"
+ "item": "basepower:fluid_metal_tank"
},
- "group": "poweradvantage:fluid_metal_tank",
+ "group": "basepower:fluid_metal_tank",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_apocalyptic.json b/src/main/resources/data/basepower/recipes/fluid_pipe_copper_apocalyptic.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_apocalyptic.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_copper_apocalyptic.json
index fb955d41..50fbd0c6 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_apocalyptic.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_copper_apocalyptic.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 3
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/copper"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_normal.json b/src/main/resources/data/basepower/recipes/fluid_pipe_copper_normal.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_normal.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_copper_normal.json
index 28b0f330..e94d98eb 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_copper_normal.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_copper_normal.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 6
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "NORMAL"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/copper"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_apocalyptic.json b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_apocalyptic.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_apocalyptic.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_iron_apocalyptic.json
index 304275bb..36d5c6b9 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_apocalyptic.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_apocalyptic.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 3
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_normal.json b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_normal.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_normal.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_iron_normal.json
index 138d1a20..86a88671 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_normal.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_normal.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 6
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "NORMAL"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_tech.json b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_tech.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_tech.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_iron_tech.json
index ecfae1ea..8d6d6ce8 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_iron_tech.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_iron_tech.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 6
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "TECH_PROGRESSION"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_lead_apocalyptic.json b/src/main/resources/data/basepower/recipes/fluid_pipe_lead_apocalyptic.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_pipe_lead_apocalyptic.json
rename to src/main/resources/data/basepower/recipes/fluid_pipe_lead_apocalyptic.json
index d5d4c736..b6a655a8 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_pipe_lead_apocalyptic.json
+++ b/src/main/resources/data/basepower/recipes/fluid_pipe_lead_apocalyptic.json
@@ -11,18 +11,18 @@
}
},
"result": {
- "item": "poweradvantage:fluid_pipe",
+ "item": "basepower:fluid_pipe",
"count": 3
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "APOCALYPTIC"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/lead"
}
],
- "group": "poweradvantage:fluid_pipe"
+ "group": "basepower:fluid_pipe"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_storage_tank.json b/src/main/resources/data/basepower/recipes/fluid_storage_tank.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/fluid_storage_tank.json
rename to src/main/resources/data/basepower/recipes/fluid_storage_tank.json
index 65034d0e..fd205290 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_storage_tank.json
+++ b/src/main/resources/data/basepower/recipes/fluid_storage_tank.json
@@ -14,16 +14,16 @@
}
},
"result": {
- "item": "poweradvantage:fluid_storage_tank"
+ "item": "basepower:fluid_storage_tank"
},
- "group": "poweradvantage:fluid_storage_tank",
+ "group": "basepower:fluid_storage_tank",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/plastic"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/fluid_switch.json b/src/main/resources/data/basepower/recipes/fluid_switch.json
similarity index 67%
rename from src/main/resources/data/poweradvantage/recipes/fluid_switch.json
rename to src/main/resources/data/basepower/recipes/fluid_switch.json
index c5614c49..2e3b9dc0 100644
--- a/src/main/resources/data/poweradvantage/recipes/fluid_switch.json
+++ b/src/main/resources/data/basepower/recipes/fluid_switch.json
@@ -16,16 +16,16 @@
}
},
"result": {
- "item": "poweradvantage:fluid_switch"
+ "item": "basepower:fluid_switch"
},
- "group": "poweradvantage:fluid_switch",
+ "group": "basepower:fluid_switch",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:frames/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/item_conveyor.json b/src/main/resources/data/basepower/recipes/item_conveyor.json
similarity index 69%
rename from src/main/resources/data/poweradvantage/recipes/item_conveyor.json
rename to src/main/resources/data/basepower/recipes/item_conveyor.json
index ecbcede0..ea0c68d7 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_conveyor.json
+++ b/src/main/resources/data/basepower/recipes/item_conveyor.json
@@ -17,17 +17,17 @@
}
},
"result": {
- "item": "poweradvantage:item_conveyor",
+ "item": "basepower:item_conveyor",
"count": 5
},
- "group": "poweradvantage:item_conveyor",
+ "group": "basepower:item_conveyor",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:plates/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:sprockets"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_block.json b/src/main/resources/data/basepower/recipes/item_filter_block.json
similarity index 66%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_block.json
rename to src/main/resources/data/basepower/recipes/item_filter_block.json
index 1e341238..3d80c30a 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_block.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_block.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"item": "minecraft:stone",
@@ -18,7 +18,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_block"
+ "item": "basepower:item_filter_block"
},
- "group": "poweradvantage:item_filter_block"
+ "group": "basepower:item_filter_block"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_food.json b/src/main/resources/data/basepower/recipes/item_filter_food.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_food.json
rename to src/main/resources/data/basepower/recipes/item_filter_food.json
index 624079b6..794a1a07 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_food.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_food.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"item": "minecraft:bread"
@@ -17,7 +17,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_food"
+ "item": "basepower:item_filter_food"
},
- "group": "poweradvantage:item_filter_food"
+ "group": "basepower:item_filter_food"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_fuel.json b/src/main/resources/data/basepower/recipes/item_filter_fuel.json
similarity index 66%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_fuel.json
rename to src/main/resources/data/basepower/recipes/item_filter_fuel.json
index d6a5c935..423d8a50 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_fuel.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_fuel.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"item": "minecraft:coal",
@@ -18,7 +18,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_fuel"
+ "item": "basepower:item_filter_fuel"
},
- "group": "poweradvantage:item_filter_fuel"
+ "group": "basepower:item_filter_fuel"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_inventory.json b/src/main/resources/data/basepower/recipes/item_filter_inventory.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_inventory.json
rename to src/main/resources/data/basepower/recipes/item_filter_inventory.json
index 597acd77..915d055a 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_inventory.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_inventory.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"item": "minecraft:chest"
@@ -17,7 +17,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_inventory"
+ "item": "basepower:item_filter_inventory"
},
- "group": "poweradvantage:item_filter_inventory"
+ "group": "basepower:item_filter_inventory"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_ore.json b/src/main/resources/data/basepower/recipes/item_filter_ore.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_ore.json
rename to src/main/resources/data/basepower/recipes/item_filter_ore.json
index acc6ad2b..2cc51d2a 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_ore.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_ore.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"tag": "forge:ingots/gold"
@@ -17,12 +17,12 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_ore"
+ "item": "basepower:item_filter_ore"
},
- "group": "poweradvantage:item_filter_ore",
+ "group": "basepower:item_filter_ore",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/gold"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_overflow.json b/src/main/resources/data/basepower/recipes/item_filter_overflow.json
similarity index 57%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_overflow.json
rename to src/main/resources/data/basepower/recipes/item_filter_overflow.json
index ce858ccc..8b6bf07f 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_overflow.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_overflow.json
@@ -6,14 +6,14 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"z": {
"item": "minecraft:oak_pressure_plate"
}
},
"result": {
- "item": "poweradvantage:item_filter_overflow"
+ "item": "basepower:item_filter_overflow"
},
- "group": "poweradvantage:item_filter_overflow"
+ "group": "basepower:item_filter_overflow"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_plant.json b/src/main/resources/data/basepower/recipes/item_filter_plant.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_plant.json
rename to src/main/resources/data/basepower/recipes/item_filter_plant.json
index 5d4f1c23..1d0761b5 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_plant.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_plant.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"tag": "minecraft:saplings"
@@ -17,7 +17,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_plant"
+ "item": "basepower:item_filter_plant"
},
- "group": "poweradvantage:item_filter_plant"
+ "group": "basepower:item_filter_plant"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/item_filter_smelt.json b/src/main/resources/data/basepower/recipes/item_filter_smelt.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/item_filter_smelt.json
rename to src/main/resources/data/basepower/recipes/item_filter_smelt.json
index 04e84649..71df57a1 100644
--- a/src/main/resources/data/poweradvantage/recipes/item_filter_smelt.json
+++ b/src/main/resources/data/basepower/recipes/item_filter_smelt.json
@@ -7,7 +7,7 @@
],
"key": {
"x": {
- "item": "poweradvantage:item_conveyor"
+ "item": "basepower:item_conveyor"
},
"y": {
"item": "minecraft:furnace"
@@ -17,7 +17,7 @@
}
},
"result": {
- "item": "poweradvantage:item_filter_smelt"
+ "item": "basepower:item_filter_smelt"
},
- "group": "poweradvantage:item_filter_smelt"
+ "group": "basepower:item_filter_smelt"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/rotator_tool.json b/src/main/resources/data/basepower/recipes/rotator_tool.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/rotator_tool.json
rename to src/main/resources/data/basepower/recipes/rotator_tool.json
index d90ea08a..70b03cd7 100644
--- a/src/main/resources/data/poweradvantage/recipes/rotator_tool.json
+++ b/src/main/resources/data/basepower/recipes/rotator_tool.json
@@ -14,16 +14,16 @@
}
},
"result": {
- "item": "poweradvantage:rotator_tool"
+ "item": "basepower:rotator_tool"
},
- "group": "poweradvantage:rotator_tool",
+ "group": "basepower:rotator_tool",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/iron"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:sprockets"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/sprocket_bronze_nugget_tech_no_rod.json b/src/main/resources/data/basepower/recipes/sprocket_bronze_nugget_tech_no_rod.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/sprocket_bronze_nugget_tech_no_rod.json
rename to src/main/resources/data/basepower/recipes/sprocket_bronze_nugget_tech_no_rod.json
index b699bc2c..8fc3c678 100644
--- a/src/main/resources/data/poweradvantage/recipes/sprocket_bronze_nugget_tech_no_rod.json
+++ b/src/main/resources/data/basepower/recipes/sprocket_bronze_nugget_tech_no_rod.json
@@ -14,26 +14,26 @@
}
},
"result": {
- "item": "poweradvantage:sprocket",
+ "item": "basepower:sprocket",
"count": 4
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "TECH_PROGRESSION"
},
{
- "type": "poweradvantage:tag_empty",
+ "type": "basepower:tag_empty",
"tag": "forge:rods"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:nuggets/bronze"
}
],
- "group": "poweradvantage:sprocket"
+ "group": "basepower:sprocket"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/sprocket_rod_normal.json b/src/main/resources/data/basepower/recipes/sprocket_rod_normal.json
similarity index 64%
rename from src/main/resources/data/poweradvantage/recipes/sprocket_rod_normal.json
rename to src/main/resources/data/basepower/recipes/sprocket_rod_normal.json
index 5ce0069a..cb030cbe 100644
--- a/src/main/resources/data/poweradvantage/recipes/sprocket_rod_normal.json
+++ b/src/main/resources/data/basepower/recipes/sprocket_rod_normal.json
@@ -14,22 +14,22 @@
}
},
"result": {
- "item": "poweradvantage:sprocket",
+ "item": "basepower:sprocket",
"count": 4
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "NORMAL"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:rods"
}
],
- "group": "poweradvantage:sprocket"
+ "group": "basepower:sprocket"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/sprocket_rod_tech.json b/src/main/resources/data/basepower/recipes/sprocket_rod_tech.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/sprocket_rod_tech.json
rename to src/main/resources/data/basepower/recipes/sprocket_rod_tech.json
index 4a080402..2f361a78 100644
--- a/src/main/resources/data/poweradvantage/recipes/sprocket_rod_tech.json
+++ b/src/main/resources/data/basepower/recipes/sprocket_rod_tech.json
@@ -14,22 +14,22 @@
}
},
"result": {
- "item": "poweradvantage:sprocket",
+ "item": "basepower:sprocket",
"count": 4
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "TECH_PROGRESSION"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:rods"
}
],
- "group": "poweradvantage:sprocket"
+ "group": "basepower:sprocket"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/sprocket_stickwood_normal.json b/src/main/resources/data/basepower/recipes/sprocket_stickwood_normal.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/sprocket_stickwood_normal.json
rename to src/main/resources/data/basepower/recipes/sprocket_stickwood_normal.json
index 90d6d9fc..d0a47360 100644
--- a/src/main/resources/data/poweradvantage/recipes/sprocket_stickwood_normal.json
+++ b/src/main/resources/data/basepower/recipes/sprocket_stickwood_normal.json
@@ -14,22 +14,22 @@
}
},
"result": {
- "item": "poweradvantage:sprocket",
+ "item": "basepower:sprocket",
"count": 4
},
"conditions": [
{
- "type": "poweradvantage:recipe_mode",
+ "type": "basepower:recipe_mode",
"mode": "NORMAL"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:ingots/steel"
},
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:rods/wooden"
}
],
- "group": "poweradvantage:sprocket"
+ "group": "basepower:sprocket"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/starch_from_potato.json b/src/main/resources/data/basepower/recipes/starch_from_potato.json
similarity index 63%
rename from src/main/resources/data/poweradvantage/recipes/starch_from_potato.json
rename to src/main/resources/data/basepower/recipes/starch_from_potato.json
index 1333f013..cabc1111 100644
--- a/src/main/resources/data/poweradvantage/recipes/starch_from_potato.json
+++ b/src/main/resources/data/basepower/recipes/starch_from_potato.json
@@ -6,6 +6,6 @@
{ "item": "minecraft:poisonous_potato" }
]
],
- "result": { "item": "poweradvantage:starch", "count": 1 },
- "group": "poweradvantage:starch"
+ "result": { "item": "basepower:starch", "count": 1 },
+ "group": "basepower:starch"
}
diff --git a/src/main/resources/data/poweradvantage/recipes/steel_frame.json b/src/main/resources/data/basepower/recipes/steel_frame.json
similarity index 65%
rename from src/main/resources/data/poweradvantage/recipes/steel_frame.json
rename to src/main/resources/data/basepower/recipes/steel_frame.json
index b1452d5a..a9c6b2ea 100644
--- a/src/main/resources/data/poweradvantage/recipes/steel_frame.json
+++ b/src/main/resources/data/basepower/recipes/steel_frame.json
@@ -11,12 +11,12 @@
}
},
"result": {
- "item": "poweradvantage:steel_frame"
+ "item": "basepower:steel_frame"
},
- "group": "poweradvantage:steel_frame",
+ "group": "basepower:steel_frame",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:bars/steel"
}
]
diff --git a/src/main/resources/data/poweradvantage/recipes/still.json b/src/main/resources/data/basepower/recipes/still.json
similarity index 73%
rename from src/main/resources/data/poweradvantage/recipes/still.json
rename to src/main/resources/data/basepower/recipes/still.json
index ddb37426..46e0a417 100644
--- a/src/main/resources/data/poweradvantage/recipes/still.json
+++ b/src/main/resources/data/basepower/recipes/still.json
@@ -16,12 +16,12 @@
}
},
"result": {
- "item": "poweradvantage:still"
+ "item": "basepower:still"
},
- "group": "poweradvantage:still",
+ "group": "basepower:still",
"conditions": [
{
- "type": "poweradvantage:tag_not_empty",
+ "type": "basepower:tag_not_empty",
"tag": "forge:pipes"
}
]
diff --git a/src/main/resources/data/forge/tags/items/frames/steel.json b/src/main/resources/data/forge/tags/items/frames/steel.json
index c0f5e8e6..2ec93a5c 100644
--- a/src/main/resources/data/forge/tags/items/frames/steel.json
+++ b/src/main/resources/data/forge/tags/items/frames/steel.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:steel_frame"
+ "basepower:steel_frame"
]
}
diff --git a/src/main/resources/data/forge/tags/items/gears.json b/src/main/resources/data/forge/tags/items/gears.json
index b3b11578..28b81e98 100644
--- a/src/main/resources/data/forge/tags/items/gears.json
+++ b/src/main/resources/data/forge/tags/items/gears.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:sprocket"
+ "basepower:sprocket"
]
}
diff --git a/src/main/resources/data/forge/tags/items/gears/steel.json b/src/main/resources/data/forge/tags/items/gears/steel.json
index b3b11578..28b81e98 100644
--- a/src/main/resources/data/forge/tags/items/gears/steel.json
+++ b/src/main/resources/data/forge/tags/items/gears/steel.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:sprocket"
+ "basepower:sprocket"
]
}
diff --git a/src/main/resources/data/forge/tags/items/ingots/plastic.json b/src/main/resources/data/forge/tags/items/ingots/plastic.json
index 6f60c386..d922cf4f 100644
--- a/src/main/resources/data/forge/tags/items/ingots/plastic.json
+++ b/src/main/resources/data/forge/tags/items/ingots/plastic.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:bioplastic_ingot"
+ "basepower:bioplastic_ingot"
]
}
diff --git a/src/main/resources/data/forge/tags/items/pipes.json b/src/main/resources/data/forge/tags/items/pipes.json
index c62f9bb8..8c70e3c2 100644
--- a/src/main/resources/data/forge/tags/items/pipes.json
+++ b/src/main/resources/data/forge/tags/items/pipes.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:fluid_pipe"
+ "basepower:fluid_pipe"
]
}
diff --git a/src/main/resources/data/forge/tags/items/plastic.json b/src/main/resources/data/forge/tags/items/plastic.json
index 6f60c386..d922cf4f 100644
--- a/src/main/resources/data/forge/tags/items/plastic.json
+++ b/src/main/resources/data/forge/tags/items/plastic.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:bioplastic_ingot"
+ "basepower:bioplastic_ingot"
]
}
diff --git a/src/main/resources/data/forge/tags/items/sprockets.json b/src/main/resources/data/forge/tags/items/sprockets.json
index b3b11578..28b81e98 100644
--- a/src/main/resources/data/forge/tags/items/sprockets.json
+++ b/src/main/resources/data/forge/tags/items/sprockets.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:sprocket"
+ "basepower:sprocket"
]
}
diff --git a/src/main/resources/data/forge/tags/items/sprockets/steel.json b/src/main/resources/data/forge/tags/items/sprockets/steel.json
index b3b11578..28b81e98 100644
--- a/src/main/resources/data/forge/tags/items/sprockets/steel.json
+++ b/src/main/resources/data/forge/tags/items/sprockets/steel.json
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
- "poweradvantage:sprocket"
+ "basepower:sprocket"
]
}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_electricity.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_electricity.json
deleted file mode 100644
index 841e0a21..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:converter_rf_electricity"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_quantum.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_quantum.json
deleted file mode 100644
index 231a57a9..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_rf_quantum.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:converter_rf_quantum"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_tr_electricity.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_tr_electricity.json
deleted file mode 100644
index 065fbc45..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/converter_tr_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:converter_tr_electricity"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_electricity.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_electricity.json
deleted file mode 100644
index 42ebe1ce..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_electricity.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:infinite_electricity"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_quantum.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_quantum.json
deleted file mode 100644
index 104c117f..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_quantum.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:infinite_quantum"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_steam.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_steam.json
deleted file mode 100644
index 9192aa7b..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/infinite_steam.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:infinite_steam"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_conveyor.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_conveyor.json
deleted file mode 100644
index b86de0c3..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_conveyor.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_conveyor"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_block.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_block.json
deleted file mode 100644
index 49abd9f3..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_block.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_block"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_food.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_food.json
deleted file mode 100644
index d4af70a2..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_food.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_food"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_fuel.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_fuel.json
deleted file mode 100644
index 242a6e99..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_fuel.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_fuel"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_inventory.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_inventory.json
deleted file mode 100644
index 6f6f24d4..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_inventory.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_inventory"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_ore.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_ore.json
deleted file mode 100644
index 6d82c6ce..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_ore.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_ore"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_overflow.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_overflow.json
deleted file mode 100644
index 5e9446a0..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_overflow.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_overflow"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_plant.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_plant.json
deleted file mode 100644
index e7894efb..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_plant.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_plant"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_smelt.json b/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_smelt.json
deleted file mode 100644
index 9d3df40c..00000000
--- a/src/main/resources/data/poweradvantage/loot_tables/blocks/item_filter_smelt.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "minecraft:block",
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "poweradvantage:item_filter_smelt"
- }
- ],
- "conditions": [
- {
- "condition": "minecraft:survives_explosion"
- }
- ]
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/bioplastic_from_starch.json b/src/main/resources/data/poweradvantage/recipes/bioplastic_from_starch.json
deleted file mode 100644
index 2eea1c7b..00000000
--- a/src/main/resources/data/poweradvantage/recipes/bioplastic_from_starch.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "type": "minecraft:smelting",
- "ingredient": {
- "item": "poweradvantage:starch"
- },
- "result": "poweradvantage:bioplastic_ingot",
- "experience": 0.1,
- "cookingtime": 200,
- "conditions": [],
- "group": "poweradvantage:bioplastic_ingot"
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_block.json b/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_block.json
deleted file mode 100644
index dfbcd2d6..00000000
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_block.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "type": "basemetals:crushing",
- "ingredient": {
- "item": "poweradvantage:item_filter_block"
- },
- "result": {
- "item": "basemetals:steel_plate",
- "count": 1
- },
- "conditions": [
- {
- "type": "forge:mod_loaded",
- "modid": "basemetals"
- },
- {
- "type": "poweradvantage:recipe_mode",
- "mode": "APOCALYPTIC"
- },
- {
- "type": "poweradvantage:tag_not_empty",
- "tag": "forge:plates/steel"
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_inventory.json b/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_inventory.json
deleted file mode 100644
index c3121aaf..00000000
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_inventory.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "type": "basemetals:crushing",
- "ingredient": {
- "item": "poweradvantage:item_filter_inventory"
- },
- "result": {
- "item": "basemetals:steel_plate",
- "count": 1
- },
- "conditions": [
- {
- "type": "forge:mod_loaded",
- "modid": "basemetals"
- },
- {
- "type": "poweradvantage:recipe_mode",
- "mode": "APOCALYPTIC"
- },
- {
- "type": "poweradvantage:tag_not_empty",
- "tag": "forge:plates/steel"
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_overflow.json b/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_overflow.json
deleted file mode 100644
index 87033def..00000000
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_overflow.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "type": "basemetals:crushing",
- "ingredient": {
- "item": "poweradvantage:item_filter_overflow"
- },
- "result": {
- "item": "basemetals:steel_plate",
- "count": 1
- },
- "conditions": [
- {
- "type": "forge:mod_loaded",
- "modid": "basemetals"
- },
- {
- "type": "poweradvantage:recipe_mode",
- "mode": "APOCALYPTIC"
- },
- {
- "type": "poweradvantage:tag_not_empty",
- "tag": "forge:plates/steel"
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_plant.json b/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_plant.json
deleted file mode 100644
index 07236306..00000000
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_plant.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "type": "basemetals:crushing",
- "ingredient": {
- "item": "poweradvantage:item_filter_plant"
- },
- "result": {
- "item": "basemetals:steel_plate",
- "count": 1
- },
- "conditions": [
- {
- "type": "forge:mod_loaded",
- "modid": "basemetals"
- },
- {
- "type": "poweradvantage:recipe_mode",
- "mode": "APOCALYPTIC"
- },
- {
- "type": "poweradvantage:tag_not_empty",
- "tag": "forge:plates/steel"
- }
- ]
-}
diff --git a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_smelt.json b/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_smelt.json
deleted file mode 100644
index bdf912e2..00000000
--- a/src/main/resources/data/poweradvantage/recipes/crushing_item_filter_smelt.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "type": "basemetals:crushing",
- "ingredient": {
- "item": "poweradvantage:item_filter_smelt"
- },
- "result": {
- "item": "basemetals:steel_plate",
- "count": 1
- },
- "conditions": [
- {
- "type": "forge:mod_loaded",
- "modid": "basemetals"
- },
- {
- "type": "poweradvantage:recipe_mode",
- "mode": "APOCALYPTIC"
- },
- {
- "type": "poweradvantage:tag_not_empty",
- "tag": "forge:plates/steel"
- }
- ]
-}
diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info
index a78e7516..611a5e31 100644
--- a/src/main/resources/mcmod.info
+++ b/src/main/resources/mcmod.info
@@ -1,11 +1,11 @@
[
{
- "modid": "poweradvantage",
- "name": "Power Advantage",
+ "modid": "basepower",
+ "name": "basePower",
"description": "API for power DrCyano's power systems mods.",
"version": "${version}",
"mcversion": "${mcversion}",
- "url": "https://github.com/MinecraftModDevelopmentMods/PowerAdvantage",
+ "url": "https://github.com/MinecraftModDevelopmentMods/basePower",
"updateUrl": "",
"authorList": ["DrCyano (aka Cyanobacterium)"],
"credits": "The Forge and FML guys, for making the Forge modding API (you guys are awesome), engineers everywhere, and the mod author DrCyano (aka Cyanobacterium)",
diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta
index 97ba2398..99861c4b 100644
--- a/src/main/resources/pack.mcmeta
+++ b/src/main/resources/pack.mcmeta
@@ -1,6 +1,6 @@
{
"pack": {
"description": "Power Advantage resources",
- "pack_format": 6
+ "pack_format": 7
}
}
diff --git a/src/test/java/cyano/poweradvantage/api/fluid/FluidNetworkApiTest.java b/src/test/java/cyano/poweradvantage/api/fluid/FluidNetworkApiTest.java
index 76729aa7..038420cb 100644
--- a/src/test/java/cyano/poweradvantage/api/fluid/FluidNetworkApiTest.java
+++ b/src/test/java/cyano/poweradvantage/api/fluid/FluidNetworkApiTest.java
@@ -10,15 +10,15 @@
import cyano.poweradvantage.api.IPowerMachine;
import cyano.poweradvantage.api.PowerConnectorContext;
import cyano.poweradvantage.api.PowerRequest;
-import net.minecraft.fluid.EmptyFluid;
-import net.minecraft.fluid.Fluid;
+import net.minecraft.world.level.material.EmptyFluid;
+import net.minecraft.world.level.material.Fluid;
public class FluidNetworkApiTest {
private static final ConduitType WATER = new ConduitType("test-water");
private static final Fluid TEST_FLUID = testFluid();
private static Fluid testFluid() {
- net.minecraft.util.registry.Bootstrap.bootStrap();
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
return new EmptyFluid();
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManagerTest.java b/src/test/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManagerTest.java
similarity index 75%
rename from src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManagerTest.java
rename to src/test/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManagerTest.java
index 9e7d4b64..76cf5857 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/ConduitNetworkManagerTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/conduitnetwork/ConduitNetworkManagerTest.java
@@ -1,17 +1,17 @@
-package zone.moddev.mc.poweradvantage.conduitnetwork;
+package zone.moddev.mc.basepower.conduitnetwork;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import cyano.poweradvantage.api.ConduitType;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.ChunkPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.ChunkPos;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.math.BlockPos4D;
+import zone.moddev.mc.basepower.math.BlockPos4D;
public class ConduitNetworkManagerTest {
@org.junit.BeforeClass public static void bootstrap() {
- net.minecraft.util.registry.Bootstrap.bootStrap();
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
}
private final ConduitNetworkManager manager = new ConduitNetworkManager(new ConduitType("test"));
@@ -24,7 +24,7 @@ public void unloadingAnIntermediateChunkInvalidatesTheWholeNetwork() {
BlockPos4D source = pos(0, 13, 8), bridge = pos(0, 20, 8), sink = pos(0, 40, 8);
manager.addBlockToNetwork(source, bridge);
manager.addBlockToNetwork(source, sink);
- manager.invalidateChunk(net.minecraft.world.World.OVERWORLD, new ChunkPos(1, 0));
+ manager.invalidateChunk(net.minecraft.world.level.Level.OVERWORLD, new ChunkPos(1, 0));
assertFalse(manager.isValidatedNetwork(source));
assertFalse(manager.isValidatedNetwork(bridge));
assertFalse(manager.isValidatedNetwork(sink));
@@ -35,7 +35,7 @@ public void loadingAPipeOnlyChunkInvalidatesBothBoundaryNetworks() {
BlockPos4D left = pos(0, 15, 8), right = pos(0, 32, 8);
manager.createNewNetwork(left);
manager.createNewNetwork(right);
- manager.invalidateChunk(net.minecraft.world.World.OVERWORLD, new ChunkPos(1, 0));
+ manager.invalidateChunk(net.minecraft.world.level.Level.OVERWORLD, new ChunkPos(1, 0));
assertFalse(manager.isValidatedNetwork(left));
assertFalse(manager.isValidatedNetwork(right));
}
@@ -44,7 +44,7 @@ public void loadingAPipeOnlyChunkInvalidatesBothBoundaryNetworks() {
public void allFourChunkBoundariesAreInvalidated() {
BlockPos4D[] edges = {pos(0, 15, 20), pos(0, 32, 20), pos(0, 20, 15), pos(0, 20, 32)};
for (BlockPos4D edge : edges) manager.createNewNetwork(edge);
- manager.invalidateChunk(net.minecraft.world.World.OVERWORLD, new ChunkPos(1, 1));
+ manager.invalidateChunk(net.minecraft.world.level.Level.OVERWORLD, new ChunkPos(1, 1));
for (BlockPos4D edge : edges) assertFalse(manager.isValidatedNetwork(edge));
}
@@ -52,7 +52,7 @@ public void allFourChunkBoundariesAreInvalidated() {
public void negativeChunkCoordinatesUseTheSameBoundaryRules() {
BlockPos4D edge = pos(0, -17, -8);
manager.createNewNetwork(edge);
- manager.invalidateChunk(net.minecraft.world.World.OVERWORLD, new ChunkPos(-1, -1));
+ manager.invalidateChunk(net.minecraft.world.level.Level.OVERWORLD, new ChunkPos(-1, -1));
assertFalse(manager.isValidatedNetwork(edge));
}
@@ -62,7 +62,7 @@ public void unrelatedNetworksAndDimensionsRemainCached() {
manager.createNewNetwork(nearby);
manager.createNewNetwork(distant);
manager.createNewNetwork(otherDimension);
- manager.invalidateChunk(net.minecraft.world.World.OVERWORLD, new ChunkPos(1, 0));
+ manager.invalidateChunk(net.minecraft.world.level.Level.OVERWORLD, new ChunkPos(1, 0));
assertTrue(manager.isValidatedNetwork(nearby));
assertTrue(manager.isValidatedNetwork(distant));
assertTrue(manager.isValidatedNetwork(otherDimension));
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/PowerTransferAccountingTest.java b/src/test/java/zone/moddev/mc/basepower/conduitnetwork/PowerTransferAccountingTest.java
similarity index 97%
rename from src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/PowerTransferAccountingTest.java
rename to src/test/java/zone/moddev/mc/basepower/conduitnetwork/PowerTransferAccountingTest.java
index 070739c1..709e5940 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/conduitnetwork/PowerTransferAccountingTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/conduitnetwork/PowerTransferAccountingTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.conduitnetwork;
+package zone.moddev.mc.basepower.conduitnetwork;
import cyano.poweradvantage.api.*;
import java.util.Arrays;
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/init/FluidLookupTest.java b/src/test/java/zone/moddev/mc/basepower/init/FluidLookupTest.java
similarity index 60%
rename from src/test/java/zone/moddev/mc/poweradvantage/init/FluidLookupTest.java
rename to src/test/java/zone/moddev/mc/basepower/init/FluidLookupTest.java
index 030e6c9c..96e8d450 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/init/FluidLookupTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/init/FluidLookupTest.java
@@ -1,18 +1,18 @@
-package zone.moddev.mc.poweradvantage.init;
+package zone.moddev.mc.basepower.init;
import cyano.poweradvantage.api.fluid.FluidStack;
-import net.minecraft.nbt.CompoundNBT;
+import net.minecraft.nbt.CompoundTag;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class FluidLookupTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void resolvesLegacyUnqualifiedVanillaNamesInsteadOfTheEmptyDefault() {
- assertSame(net.minecraft.fluid.Fluids.WATER, Fluids.byName("water"));
- assertSame(net.minecraft.fluid.Fluids.LAVA, Fluids.byName("lava"));
- assertSame(net.minecraft.fluid.Fluids.WATER, Fluids.byName("minecraft:water"));
+ assertSame(net.minecraft.world.level.material.Fluids.WATER, Fluids.byName("water"));
+ assertSame(net.minecraft.world.level.material.Fluids.LAVA, Fluids.byName("lava"));
+ assertSame(net.minecraft.world.level.material.Fluids.WATER, Fluids.byName("minecraft:water"));
}
@Test public void unknownNamesAreNotReplacedByAnEmptyFluid() {
@@ -22,15 +22,15 @@ public class FluidLookupTest {
}
@Test public void retainsAmountAndNbtWhenReadingLegacySavedWater() {
- CompoundNBT data = new CompoundNBT();
+ CompoundTag data = new CompoundTag();
data.putString("FluidName", "water");
data.putInt("Amount", 700);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
tag.putInt("batch", 37);
data.put("Tag", tag);
FluidStack stack = FluidStack.loadFluidStackFromNBT(data);
assertNotNull(stack);
- assertSame(net.minecraft.fluid.Fluids.WATER, stack.getFluid());
+ assertSame(net.minecraft.world.level.material.Fluids.WATER, stack.getFluid());
assertEquals(700, stack.amount);
assertEquals(tag, stack.tag);
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/machines/conveyors/ConveyorTransferTest.java b/src/test/java/zone/moddev/mc/basepower/machines/conveyors/ConveyorTransferTest.java
similarity index 74%
rename from src/test/java/zone/moddev/mc/poweradvantage/machines/conveyors/ConveyorTransferTest.java
rename to src/test/java/zone/moddev/mc/basepower/machines/conveyors/ConveyorTransferTest.java
index bcd961d2..7d0e9878 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/machines/conveyors/ConveyorTransferTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/machines/conveyors/ConveyorTransferTest.java
@@ -1,31 +1,31 @@
-package zone.moddev.mc.poweradvantage.machines.conveyors;
+package zone.moddev.mc.basepower.machines.conveyors;
-import net.minecraft.inventory.Inventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.Items;
-import net.minecraft.util.Direction;
+import net.minecraft.world.SimpleContainer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Items;
+import net.minecraft.core.Direction;
import org.junit.BeforeClass;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.util.InventoryWrapper;
+import zone.moddev.mc.basepower.util.InventoryWrapper;
import static org.junit.Assert.*;
public class ConveyorTransferTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void laterEmptySlotRemainsAnAvailableDestination() {
- Inventory destination = new Inventory(2);
+ SimpleContainer destination = new SimpleContainer(2);
destination.setItem(0, new ItemStack(Items.COBBLESTONE, 64));
assertTrue(TileEntityConveyor.canInsertItemInto(new ItemStack(Items.DIRT), InventoryWrapper.wrap(destination), Direction.UP));
}
@Test public void fullStackIsNotAnAvailableDestination() {
- Inventory destination = new Inventory(1);
+ SimpleContainer destination = new SimpleContainer(1);
destination.setItem(0, new ItemStack(Items.DIRT, 64));
assertFalse(TileEntityConveyor.canInsertItemInto(new ItemStack(Items.DIRT), InventoryWrapper.wrap(destination), Direction.UP));
}
@Test public void transfersPreserveDifferentCustomItemData() {
- Inventory source = new Inventory(2), target = new Inventory(2);
+ SimpleContainer source = new SimpleContainer(2), target = new SimpleContainer(2);
source.setItem(0, tagged(3, "A")); source.setItem(1, tagged(3, "B")); target.setItem(0, tagged(1, "A"));
for (int n = 0; n < 6; n++) assertTrue(TileEntityConveyor.transferItem(InventoryWrapper.wrap(source), Direction.EAST,
InventoryWrapper.wrap(target), Direction.WEST));
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/WorldFluidPickupTest.java b/src/test/java/zone/moddev/mc/basepower/machines/fluidmachines/WorldFluidPickupTest.java
similarity index 71%
rename from src/test/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/WorldFluidPickupTest.java
rename to src/test/java/zone/moddev/mc/basepower/machines/fluidmachines/WorldFluidPickupTest.java
index 3c27adac..48415db2 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/machines/fluidmachines/WorldFluidPickupTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/machines/fluidmachines/WorldFluidPickupTest.java
@@ -1,20 +1,20 @@
-package zone.moddev.mc.poweradvantage.machines.fluidmachines;
+package zone.moddev.mc.basepower.machines.fluidmachines;
import java.lang.reflect.Proxy;
import java.util.concurrent.atomic.AtomicReference;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
-import net.minecraft.block.FlowingFluidBlock;
-import net.minecraft.fluid.Fluids;
-import net.minecraft.state.properties.BlockStateProperties;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IWorld;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.material.Fluids;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.LevelAccessor;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class WorldFluidPickupTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void waterloggedHostSurvivesTheNativePickup() {
AtomicReference state = new AtomicReference<>(Blocks.OAK_SLAB.defaultBlockState()
@@ -31,7 +31,7 @@ public class WorldFluidPickupTest {
}
@Test public void flowingWaterDoesNotProduceABucket() {
- AtomicReference state = new AtomicReference<>(Blocks.WATER.defaultBlockState().setValue(FlowingFluidBlock.LEVEL, 3));
+ AtomicReference state = new AtomicReference<>(Blocks.WATER.defaultBlockState().setValue(LiquidBlock.LEVEL, 3));
BlockState original = state.get();
assertSame(Fluids.EMPTY, FluidDrainTileEntity.pickupSource(world(state), BlockPos.ZERO, state.get()));
assertSame(original, state.get());
@@ -43,8 +43,8 @@ public class WorldFluidPickupTest {
assertTrue(state.get().is(Blocks.BEDROCK));
}
- private static IWorld world(AtomicReference state) {
- return (IWorld)Proxy.newProxyInstance(IWorld.class.getClassLoader(), new Class>[]{IWorld.class}, (proxy, method, args) -> {
+ private static LevelAccessor world(AtomicReference state) {
+ return (LevelAccessor)Proxy.newProxyInstance(LevelAccessor.class.getClassLoader(), new Class>[]{LevelAccessor.class}, (proxy, method, args) -> {
if (method.getName().equals("setBlock")) { state.set((BlockState)args[1]); return true; }
if (method.getName().equals("getBlockState")) return state.get();
throw new AssertionError("Unexpected world operation " + method.getName());
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/math/BlockPos4DTest.java b/src/test/java/zone/moddev/mc/basepower/math/BlockPos4DTest.java
similarity index 56%
rename from src/test/java/zone/moddev/mc/poweradvantage/math/BlockPos4DTest.java
rename to src/test/java/zone/moddev/mc/basepower/math/BlockPos4DTest.java
index 697faa63..0ea4e69b 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/math/BlockPos4DTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/math/BlockPos4DTest.java
@@ -1,21 +1,21 @@
-package zone.moddev.mc.poweradvantage.math;
+package zone.moddev.mc.basepower.math;
-import net.minecraft.nbt.IntArrayNBT;
-import net.minecraft.util.RegistryKey;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.registry.Registry;
-import net.minecraft.world.World;
+import net.minecraft.nbt.IntArrayTag;
+import net.minecraft.resources.ResourceKey;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Registry;
+import net.minecraft.world.level.Level;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class BlockPos4DTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void customDimensionKeysNeverShareCoordinates() {
- RegistryKey first = RegistryKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("test:first"));
- RegistryKey second = RegistryKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("test:second"));
+ ResourceKey first = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("test:first"));
+ ResourceKey second = ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("test:second"));
BlockPos4D pos = new BlockPos4D(first, new BlockPos(-17, 80, 32));
assertNotEquals(pos, new BlockPos4D(second, pos.pos));
assertEquals(pos, BlockPos4D.fromNBT(pos.toNBT()));
@@ -23,15 +23,15 @@ public class BlockPos4DTest {
}
@Test public void cacheKeysCopyMutableInputPositions() {
- BlockPos.Mutable source = new BlockPos.Mutable(1, 2, 3);
- BlockPos4D key = new BlockPos4D(World.OVERWORLD, source);
+ BlockPos.MutableBlockPos source = new BlockPos.MutableBlockPos(1, 2, 3);
+ BlockPos4D key = new BlockPos4D(Level.OVERWORLD, source);
source.set(4, 5, 6);
assertEquals(new BlockPos(1, 2, 3), key.pos);
}
@Test public void legacyVanillaCoordinatesRetainTheirDimension() {
- assertEquals(new BlockPos4D(World.NETHER, new BlockPos(1, 2, 3)),
- BlockPos4D.fromNBT(new IntArrayNBT(new int[] {-1, 1, 2, 3})));
+ assertEquals(new BlockPos4D(Level.NETHER, new BlockPos(1, 2, 3)),
+ BlockPos4D.fromNBT(new IntArrayTag(new int[] {-1, 1, 2, 3})));
}
@Test(expected = IllegalArgumentException.class)
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrationsTest.java b/src/test/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrationsTest.java
similarity index 67%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrationsTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrationsTest.java
index 81b77250..6dc4828c 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/AdvantageLegacyMigrationsTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/AdvantageLegacyMigrationsTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -6,7 +6,7 @@
import cyano.poweradvantage.api.migration.LegacyMigrationApi;
import java.util.Arrays;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
import org.junit.Test;
public class AdvantageLegacyMigrationsTest {
@@ -22,21 +22,25 @@ public class AdvantageLegacyMigrationsTest {
"converter_rf_steam", "converter_rf_electricity", "converter_rf_quantum",
"converter_tr_electricity")) {
assertNotNull(path, LegacyMigrationApi.blockStateCodecs().get(
- new ResourceLocation("poweradvantage", path)));
+ new ResourceLocation("basepower", path)));
+ assertEquals(new ResourceLocation("basepower", path),
+ LegacyMigrationApi.blockTarget(new ResourceLocation("poweradvantage", path)));
}
}
@Test public void retainsLegacyTileFluidAndBucketIdentities() {
AdvantageLegacyMigrations.registerPowerAdvantage();
assertTrue(LegacyMigrationApi.handlesNamespace("poweradvantage"));
- assertEquals("poweradvantage:tileentity.fluid_storage_tank",
+ assertTrue(LegacyMigrationApi.handlesNamespace("basepower"));
+ assertEquals("basepower:tileentity.fluid_storage_tank",
LegacyMigrationApi.tileTarget("poweradvantage.tileentity.fluid_storage_tank"));
- assertEquals("poweradvantage:tileentity.fluid_storage_tank",
+ assertEquals("basepower:tileentity.fluid_storage_tank",
LegacyMigrationApi.tileTarget("minecraft:poweradvantage.tileentity.fluid_storage_tank"));
- assertEquals("poweradvantage:crude_oil", LegacyMigrationApi.fluidTarget("crude_oil"));
- assertEquals(new ResourceLocation("poweradvantage", "crude_oil_bucket"),
+ assertEquals("basepower:crude_oil", LegacyMigrationApi.fluidTarget("crude_oil"));
+ assertEquals("basepower:crude_oil", LegacyMigrationApi.fluidTarget("poweradvantage:crude_oil"));
+ assertEquals(new ResourceLocation("basepower", "crude_oil_bucket"),
LegacyMigrationApi.bucketTarget("crude_oil"));
- assertEquals(new ResourceLocation("poweradvantage", "refined_oil_bucket"),
+ assertEquals(new ResourceLocation("basepower", "refined_oil_bucket"),
LegacyMigrationApi.bucketTarget("poweradvantage:refined_oil"));
}
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/FlattenedBiomeSnapshotTest.java b/src/test/java/zone/moddev/mc/basepower/migration/FlattenedBiomeSnapshotTest.java
similarity index 70%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/FlattenedBiomeSnapshotTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/FlattenedBiomeSnapshotTest.java
index 361074cf..807c4a22 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/FlattenedBiomeSnapshotTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/FlattenedBiomeSnapshotTest.java
@@ -1,47 +1,47 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
import org.junit.Test;
import static org.junit.Assert.*;
public class FlattenedBiomeSnapshotTest {
@Test public void preservesEveryNumericIdAndUnknownModEntry() {
- CompoundNBT root = root(1631);
- CompoundNBT original = registries(root).getCompound("minecraft:biomes").copy();
+ CompoundTag root = root(1631);
+ CompoundTag original = registries(root).getCompound("minecraft:biomes").copy();
assertTrue(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
assertEquals(original, registries(root).getCompound("minecraft:worldgen/biome"));
assertFalse(registries(root).contains("minecraft:biomes"));
}
@Test public void isIdempotent() {
- CompoundNBT root = root(2230);
+ CompoundTag root = root(2230);
assertTrue(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
- CompoundNBT once = root.copy();
+ CompoundTag once = root.copy();
assertFalse(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
assertEquals(once, root);
}
@Test public void neverReinterpretsAPreFlatteningSnapshot() {
- CompoundNBT root = root(1343), before = root.copy();
+ CompoundTag root = root(1343), before = root.copy();
assertFalse(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
assertEquals(before, root);
}
@Test public void leavesTheUppercaseLegacyArchiveUntouched() {
- CompoundNBT root = root(1631);
- CompoundNBT archive = new CompoundNBT();
+ CompoundTag root = root(1631);
+ CompoundTag archive = new CompoundTag();
archive.put("Registries", registries(root).copy());
root.put("FML", archive);
- CompoundNBT before = archive.copy();
+ CompoundTag before = archive.copy();
assertTrue(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
assertEquals(before, root.getCompound("FML"));
}
@Test public void refusesConflictingSnapshotsWithoutChangingEither() {
- CompoundNBT root = root(2230);
- registries(root).put("minecraft:worldgen/biome", new CompoundNBT());
- CompoundNBT before = root.copy();
+ CompoundTag root = root(2230);
+ registries(root).put("minecraft:worldgen/biome", new CompoundTag());
+ CompoundTag before = root.copy();
try {
LegacyWorldDataHook.renameFlattenedBiomeRegistry(root);
fail("A conflicting registry must not be merged or discarded");
@@ -51,31 +51,31 @@ public class FlattenedBiomeSnapshotTest {
}
@Test public void coalescesOnlyAnIdenticalDuplicate() {
- CompoundNBT root = root(2230);
+ CompoundTag root = root(2230);
registries(root).put("minecraft:worldgen/biome", registries(root).getCompound("minecraft:biomes").copy());
assertTrue(LegacyWorldDataHook.renameFlattenedBiomeRegistry(root));
assertFalse(registries(root).contains("minecraft:biomes"));
}
- private static CompoundNBT root(int version) {
- CompoundNBT root = new CompoundNBT(), data = new CompoundNBT(), fml = new CompoundNBT();
- CompoundNBT registries = new CompoundNBT(), snapshot = new CompoundNBT();
+ private static CompoundTag root(int version) {
+ CompoundTag root = new CompoundTag(), data = new CompoundTag(), fml = new CompoundTag();
+ CompoundTag registries = new CompoundTag(), snapshot = new CompoundTag();
data.putInt("DataVersion", version);
root.put("Data", data);
root.put("fml", fml);
fml.put("Registries", registries);
registries.put("minecraft:biomes", snapshot);
- ListNBT ids = new ListNBT();
+ ListTag ids = new ListTag();
for (String name : new String[] {"minecraft:nether", "othermod:marsh"}) {
- CompoundNBT entry = new CompoundNBT();
+ CompoundTag entry = new CompoundTag();
entry.putString("K", name);
entry.putInt("V", name.startsWith("minecraft:") ? 8 : 200);
ids.add(entry);
}
snapshot.put("ids", ids);
snapshot.putIntArray("blocked", new int[] {77});
- ListNBT aliases = new ListNBT();
- CompoundNBT alias = new CompoundNBT();
+ ListTag aliases = new ListTag();
+ CompoundTag alias = new CompoundTag();
alias.putString("K", "othermod:old_marsh");
alias.putString("V", "othermod:marsh");
aliases.add(alias);
@@ -83,7 +83,7 @@ private static CompoundNBT root(int version) {
return root;
}
- private static CompoundNBT registries(CompoundNBT root) {
+ private static CompoundTag registries(CompoundTag root) {
return root.getCompound("fml").getCompound("Registries");
}
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEnchantmentsTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEnchantmentsTest.java
similarity index 81%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEnchantmentsTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyEnchantmentsTest.java
index 52acfef7..134e19ad 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEnchantmentsTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEnchantmentsTest.java
@@ -1,9 +1,9 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import java.util.LinkedHashMap;
import java.util.Map;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -14,10 +14,10 @@ public class LegacyEnchantmentsTest {
saved.put(11, "steamadvantage:powderless");
saved.put(12, "steamadvantage:rapid_reload");
saved.put(13, "steamadvantage:recoil");
- CompoundNBT tag = new CompoundNBT();
- ListNBT list = new ListNBT();
+ CompoundTag tag = new CompoundTag();
+ ListTag list = new ListTag();
for (Integer id : saved.keySet()) {
- CompoundNBT entry = new CompoundNBT();
+ CompoundTag entry = new CompoundTag();
entry.putShort("id", id.shortValue());
entry.putShort("lvl", (short) 3);
list.add(entry);
@@ -35,9 +35,9 @@ public class LegacyEnchantmentsTest {
@Test public void honorsWorldSpecificIdsAndPreservesStoredEnchantments() {
Map saved = new LinkedHashMap<>();
saved.put(173, "steamadvantage:rapid_reload");
- CompoundNBT book = new CompoundNBT();
- ListNBT list = new ListNBT();
- CompoundNBT entry = new CompoundNBT();
+ CompoundTag book = new CompoundTag();
+ ListTag list = new ListTag();
+ CompoundTag entry = new CompoundTag();
entry.putShort("id", (short) 173);
entry.putShort("lvl", (short) 2);
list.add(entry);
@@ -51,9 +51,9 @@ public class LegacyEnchantmentsTest {
public void refusesIncompleteOldListInsteadOfSilentlyDroppingAnEnchantment() {
Map saved = new LinkedHashMap<>();
saved.put(10, "steamadvantage:high_explosive");
- CompoundNBT tag = new CompoundNBT();
- ListNBT list = new ListNBT();
- CompoundNBT entry = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
+ ListTag list = new ListTag();
+ CompoundTag entry = new CompoundTag();
entry.putShort("id", (short) 99);
list.add(entry);
tag.put("ench", list);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntitiesTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEntitiesTest.java
similarity index 72%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntitiesTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyEntitiesTest.java
index a382f540..d7344fc5 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntitiesTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEntitiesTest.java
@@ -1,12 +1,12 @@
-package zone.moddev.mc.poweradvantage.migration;
-
-import net.minecraft.util.datafix.DefaultTypeReferences;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.nbt.StringNBT;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.SharedConstants;
+package zone.moddev.mc.basepower.migration;
+
+import net.minecraft.util.datafix.DataFixTypes;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.nbt.StringTag;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.SharedConstants;
import java.util.UUID;
import org.junit.Test;
@@ -22,24 +22,24 @@ public class LegacyEntitiesTest {
}
@Test public void fixesVanillaPassengersInsideUnknownModEntities() {
- CompoundNBT vehicle = entity("example:vehicle");
+ CompoundTag vehicle = entity("example:vehicle");
vehicle.putString("CustomState", "keep-verbatim");
- CompoundNBT wolf = entity("Wolf");
+ CompoundTag wolf = entity("Wolf");
wolf.putString("OwnerUUID", "a614e658-6270-33c3-9297-7ce80908964f");
- CompoundNBT nested = entity("example:seat");
- ListNBT nestedPassengers = new ListNBT();
+ CompoundTag nested = entity("example:seat");
+ ListTag nestedPassengers = new ListTag();
nestedPassengers.add(entity("Cow"));
nested.put("Passengers", nestedPassengers);
- ListNBT passengers = new ListNBT();
+ ListTag passengers = new ListTag();
passengers.add(wolf);
passengers.add(nested);
vehicle.put("Passengers", passengers);
- CompoundNBT root = chunk(vehicle, 512);
+ CompoundTag root = chunk(vehicle, 512);
root = convert(root, 512);
- CompoundNBT actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
assertEquals("example:vehicle", actual.getString("id"));
assertEquals("keep-verbatim", actual.getString("CustomState"));
- ListNBT fixed = actual.getList("Passengers", 10);
+ ListTag fixed = actual.getList("Passengers", 10);
assertEquals(2, fixed.size());
assertEquals("minecraft:wolf", fixed.getCompound(0).getString("id"));
assertEquals(UUID.fromString(wolf.getString("OwnerUUID")), fixed.getCompound(0).getUUID("Owner"));
@@ -48,44 +48,44 @@ public class LegacyEntitiesTest {
}
@Test public void usesVanillaSubtypeFixersRatherThanLowercasingOldIds() {
- CompoundNBT skeleton = entity("Skeleton");
+ CompoundTag skeleton = entity("Skeleton");
skeleton.putByte("SkeletonType", (byte) 1);
- CompoundNBT root = chunk(skeleton, 512);
+ CompoundTag root = chunk(skeleton, 512);
root = convert(root, 512);
assertEquals("minecraft:wither_skeleton", root.getCompound("Level").getList("Entities", 10).getCompound(0).getString("id"));
}
@Test public void leavesModernEntityAndUnrelatedCustomNbtUnchangedOnRepeatedPreparation() {
- CompoundNBT wolf = entity("minecraft:wolf");
+ CompoundTag wolf = entity("minecraft:wolf");
wolf.putString("OwnerUUID", "a614e658-6270-33c3-9297-7ce80908964f");
wolf.put("CustomData", entity("Wolf"));
- CompoundNBT root = chunk(wolf, SharedConstants.getCurrentVersion().getWorldVersion());
+ CompoundTag root = chunk(wolf, SharedConstants.getCurrentVersion().getWorldVersion());
LegacyWorldDataHook.prepareLegacyChunk(root);
LegacyWorldDataHook.prepareLegacyChunk(root);
assertEquals(wolf, root.getCompound("Level").getList("Entities", 10).getCompound(0));
}
@Test public void repeatPreparationDoesNotLoseConvertedVanillaState() {
- CompoundNBT wolf = entity("Wolf");
+ CompoundTag wolf = entity("Wolf");
wolf.putString("OwnerUUID", "a614e658-6270-33c3-9297-7ce80908964f");
- CompoundNBT root = chunk(wolf, 512);
+ CompoundTag root = chunk(wolf, 512);
LegacyWorldDataHook.prepareLegacyChunk(root);
- CompoundNBT once = root.copy();
+ CompoundTag once = root.copy();
LegacyWorldDataHook.prepareLegacyChunk(root);
assertEquals(once, root);
}
- private static CompoundNBT entity(String id) {
- CompoundNBT entity = new CompoundNBT();
+ private static CompoundTag entity(String id) {
+ CompoundTag entity = new CompoundTag();
entity.putString("id", id);
return entity;
}
- private static CompoundNBT chunk(CompoundNBT entity, int version) {
- CompoundNBT root = new CompoundNBT();
+ private static CompoundTag chunk(CompoundTag entity, int version) {
+ CompoundTag root = new CompoundTag();
root.putInt("DataVersion", version);
- CompoundNBT level = new CompoundNBT();
- ListNBT entities = new ListNBT();
+ CompoundTag level = new CompoundTag();
+ ListTag entities = new ListTag();
entities.add(entity);
level.put("Entities", entities);
root.put("Level", level);
@@ -93,11 +93,11 @@ private static CompoundNBT chunk(CompoundNBT entity, int version) {
}
private static void assertWolf(boolean customEntity) {
- CompoundNBT root = new CompoundNBT();
+ CompoundTag root = new CompoundTag();
root.putInt("DataVersion", 512);
- CompoundNBT level = new CompoundNBT();
- ListNBT entities = new ListNBT();
- CompoundNBT wolf = new CompoundNBT();
+ CompoundTag level = new CompoundTag();
+ ListTag entities = new ListTag();
+ CompoundTag wolf = new CompoundTag();
wolf.putString("id", "Wolf");
wolf.putString("OwnerUUID", "a614e658-6270-33c3-9297-7ce80908964f");
wolf.putBoolean("Sitting", true);
@@ -105,15 +105,15 @@ private static void assertWolf(boolean customEntity) {
wolf.putLong("UUIDLeast", 456L);
entities.add(wolf);
if (customEntity) {
- CompoundNBT turbine = new CompoundNBT();
+ CompoundTag turbine = new CompoundTag();
turbine.putString("id", "electricadvantage.electricadvantage.Hydroturbine");
turbine.putIntArray("parentPos", new int[] {164, 81, 8});
entities.add(turbine);
}
level.put("Entities", entities);
root.put("Level", level);
- CompoundNBT fixed = convert(root, 512);
- CompoundNBT actual = fixed.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag fixed = convert(root, 512);
+ CompoundTag actual = fixed.getCompound("Level").getList("Entities", 10).getCompound(0);
assertEquals("minecraft:wolf", actual.getString("id"));
assertEquals(UUID.fromString(wolf.getString("OwnerUUID")), actual.getUUID("Owner"));
assertTrue(actual.getBoolean("Sitting"));
@@ -122,16 +122,16 @@ private static void assertWolf(boolean customEntity) {
}
@Test public void preservesCustomEntityUuidAndPrivateNbtThroughWholeChunkFix() {
- CompoundNBT custom = entity("example:turbine");
+ CompoundTag custom = entity("example:turbine");
custom.putLong("UUIDMost", -9014291490481488382L);
custom.putLong("UUIDLeast", -5032249493117728499L);
- CompoundNBT privateData = entity("Wolf");
+ CompoundTag privateData = entity("Wolf");
privateData.putLong("UUIDMost", 88L);
privateData.putLong("UUIDLeast", 99L);
custom.put("PrivateData", privateData);
for (int version : new int[] {512, 1343, 1631, 1976, 2230}) {
- CompoundNBT converted = convert(chunk(custom.copy(), version), version);
- CompoundNBT actual = converted.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag converted = convert(chunk(custom.copy(), version), version);
+ CompoundTag actual = converted.getCompound("Level").getList("Entities", 10).getCompound(0);
assertEquals(new UUID(-9014291490481488382L, -5032249493117728499L), actual.getUUID("UUID"));
assertEquals(privateData, actual.getCompound("PrivateData"));
assertFalse(converted.contains("AdvantageLegacyEntityDataFix"));
@@ -140,7 +140,7 @@ private static void assertWolf(boolean customEntity) {
@Test public void preservesOwnerHealthAndUuidInPostFlatteningMixedChunks() {
for (int version : new int[] {1343, 1631, 1976, 2230}) {
- CompoundNBT wolf = entity("minecraft:wolf");
+ CompoundTag wolf = entity("minecraft:wolf");
UUID uuid = new UUID(-1767247258114444277L, -6740529603542625373L);
UUID owner = UUID.fromString("a614e658-6270-33c3-9297-7ce80908964f");
wolf.putLong("UUIDMost", uuid.getMostSignificantBits());
@@ -148,10 +148,10 @@ private static void assertWolf(boolean customEntity) {
wolf.putString("OwnerUUID", owner.toString());
wolf.putFloat("Health", 8F);
wolf.putBoolean("Sitting", true);
- CompoundNBT root = chunk(wolf, version);
+ CompoundTag root = chunk(wolf, version);
root.getCompound("Level").getList("Entities", 10).add(entity("example:turbine"));
- CompoundNBT converted = convert(root, version);
- CompoundNBT actual = converted.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag converted = convert(root, version);
+ CompoundTag actual = converted.getCompound("Level").getList("Entities", 10).getCompound(0);
assertEquals(uuid, actual.getUUID("UUID"));
assertEquals(owner, actual.getUUID("Owner"));
assertEquals(8F, actual.getFloat("Health"), 0F);
@@ -161,23 +161,23 @@ private static void assertWolf(boolean customEntity) {
}
}
- private static CompoundNBT convert(CompoundNBT root, int version) {
+ private static CompoundTag convert(CompoundTag root, int version) {
LegacyWorldDataHook.prepareLegacyChunk(root);
LegacyWorldDataHook.prepareLegacyEntities(root);
- CompoundNBT fixed = NBTUtil.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.CHUNK,
+ CompoundTag fixed = NbtUtils.update(DataFixers.getDataFixer(), DataFixTypes.CHUNK,
root, version, SharedConstants.getCurrentVersion().getWorldVersion());
return LegacyWorldDataHook.finalizeLegacyChunk(fixed);
}
@Test public void retainsZeroHalfAndExistingNativeUuids() {
for (UUID uuid : new UUID[] {new UUID(0L, 1L), new UUID(1L, 0L), new UUID(0L, 0L)}) {
- CompoundNBT custom = entity("example:vehicle");
+ CompoundTag custom = entity("example:vehicle");
custom.putLong("UUIDMost", uuid.getMostSignificantBits());
custom.putLong("UUIDLeast", uuid.getLeastSignificantBits());
assertEquals(uuid, convert(chunk(custom, 512), 512).getCompound("Level")
.getList("Entities", 10).getCompound(0).getUUID("UUID"));
}
- CompoundNBT custom = entity("example:vehicle");
+ CompoundTag custom = entity("example:vehicle");
custom.putUUID("UUID", new UUID(17L, 19L));
custom.putLong("UUIDMost", 88L);
custom.putLong("UUIDLeast", 99L);
@@ -187,25 +187,25 @@ private static CompoundNBT convert(CompoundNBT root, int version) {
@Test public void baseMetalsDurabilitySurvivesBothEntryHookOrders() throws Exception {
java.lang.reflect.Method basePrepare = Class.forName("zone.moddev.mc.basemetals.migration.LegacyWorldDataHook")
- .getMethod("prepareLegacyChunk", CompoundNBT.class);
+ .getMethod("prepareLegacyChunk", CompoundTag.class);
for (boolean baseFirst : new boolean[] {false, true}) {
- CompoundNBT cart = entity("minecraft:chest_minecart");
- CompoundNBT pick = entity("basemetals:steel_pickaxe");
+ CompoundTag cart = entity("minecraft:chest_minecart");
+ CompoundTag pick = entity("basemetals:steel_pickaxe");
pick.putByte("Count", (byte) 1);
pick.putShort("Damage", (short) 17);
pick.putByte("Slot", (byte) 0);
- ListNBT items = new ListNBT();
+ ListTag items = new ListTag();
items.add(pick);
cart.put("Items", items);
- CompoundNBT root = chunk(cart, 1343);
+ CompoundTag root = chunk(cart, 1343);
if (baseFirst) basePrepare.invoke(null, root);
LegacyWorldDataHook.prepareLegacyChunk(root);
if (!baseFirst) basePrepare.invoke(null, root);
LegacyWorldDataHook.prepareLegacyEntities(root);
- root = NBTUtil.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.CHUNK,
+ root = NbtUtils.update(DataFixers.getDataFixer(), DataFixTypes.CHUNK,
root, 1343, SharedConstants.getCurrentVersion().getWorldVersion());
root = LegacyWorldDataHook.finalizeLegacyChunk(root);
- CompoundNBT actual = root.getCompound("Level").getList("Entities", 10).getCompound(0)
+ CompoundTag actual = root.getCompound("Level").getList("Entities", 10).getCompound(0)
.getList("Items", 10).getCompound(0);
assertEquals("basemetals:steel_pickaxe", actual.getString("id"));
assertEquals(1, actual.getInt("Count"));
@@ -214,34 +214,34 @@ private static CompoundNBT convert(CompoundNBT root, int version) {
}
@Test(expected = IllegalStateException.class) public void rejectsMalformedEntityListWithoutErasingIt() {
- CompoundNBT root = chunk(entity("example:vehicle"), 512);
- ListNBT wrong = new ListNBT();
- wrong.add(StringNBT.valueOf("keep"));
+ CompoundTag root = chunk(entity("example:vehicle"), 512);
+ ListTag wrong = new ListTag();
+ wrong.add(StringTag.valueOf("keep"));
root.getCompound("Level").put("Entities", wrong);
LegacyWorldDataHook.prepareLegacyEntities(root);
}
@Test(expected = IllegalStateException.class) public void rejectsMalformedPassengerList() {
- CompoundNBT custom = entity("example:vehicle");
- ListNBT wrong = new ListNBT();
- wrong.add(StringNBT.valueOf("keep"));
+ CompoundTag custom = entity("example:vehicle");
+ ListTag wrong = new ListTag();
+ wrong.add(StringTag.valueOf("keep"));
custom.put("Passengers", wrong);
LegacyWorldDataHook.prepareLegacyEntities(chunk(custom, 512));
}
@Test(expected = IllegalStateException.class) public void rejectsMalformedStagedList() {
- CompoundNBT root = chunk(entity("example:vehicle"), 512);
- ListNBT wrong = new ListNBT();
- wrong.add(StringNBT.valueOf("keep"));
+ CompoundTag root = chunk(entity("example:vehicle"), 512);
+ ListTag wrong = new ListTag();
+ wrong.add(StringTag.valueOf("keep"));
root.put("AdvantageLegacyEntityDataFix", wrong);
LegacyWorldDataHook.finalizeLegacyChunk(root);
}
@Test public void detachesPendingChunkNbtIncludingNestedMapsAndArrays() {
- CompoundNBT pending = chunk(entity("example:vehicle"), SharedConstants.getCurrentVersion().getWorldVersion());
+ CompoundTag pending = chunk(entity("example:vehicle"), SharedConstants.getCurrentVersion().getWorldVersion());
pending.getCompound("Level").putIntArray("Biomes", new int[] {1, 2, 3});
- CompoundNBT before = pending.copy();
- CompoundNBT read = LegacyWorldDataHook.copyChunkForMigration(pending);
+ CompoundTag before = pending.copy();
+ CompoundTag read = LegacyWorldDataHook.copyChunkForMigration(pending);
assertNotSame(pending, read);
assertNotSame(pending.getCompound("Level"), read.getCompound("Level"));
read.getCompound("Level").putBoolean("TerrainPopulated", true);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityAttributeAliasesTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEntityAttributeAliasesTest.java
similarity index 62%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityAttributeAliasesTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyEntityAttributeAliasesTest.java
index 58d35ad4..8fb6966e 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyEntityAttributeAliasesTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyEntityAttributeAliasesTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import static org.junit.Assert.*;
@@ -11,22 +11,22 @@
import java.util.UUID;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
-import net.minecraft.entity.EntityType;
-import net.minecraft.entity.passive.WolfEntity;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.nbt.NBTDynamicOps;
-import net.minecraft.nbt.StringNBT;
-import net.minecraft.profiler.EmptyProfiler;
-import net.minecraft.profiler.IProfiler;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.DefaultTypeReferences;
-import net.minecraft.util.datafix.TypeReferences;
-import net.minecraft.util.registry.Bootstrap;
-import net.minecraft.world.World;
-import net.minecraft.world.server.ServerWorld;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.animal.Wolf;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.nbt.NbtOps;
+import net.minecraft.nbt.StringTag;
+import net.minecraft.util.profiling.InactiveProfiler;
+import net.minecraft.util.profiling.ProfilerFiller;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.DataFixTypes;
+import net.minecraft.util.datafix.fixes.References;
+import net.minecraft.server.Bootstrap;
+import net.minecraft.world.level.Level;
+import net.minecraft.server.level.ServerLevel;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.registries.DeferredRegister;
@@ -40,44 +40,44 @@ public class LegacyEntityAttributeAliasesTest {
@BeforeClass public static void bootstrap() { Bootstrap.bootStrap(); }
@Test public void changesOnlyExactNameAndPreservesUnknownFieldsAndUuidModifiers() {
- CompoundNBT entity = entity("example:vehicle", true);
- CompoundNBT before = entity.copy();
- CompoundNBT root = chunk(entity);
+ CompoundTag entity = entity("example:vehicle", true);
+ CompoundTag before = entity.copy();
+ CompoundTag root = chunk(entity);
LegacyEntityDataFixes.prepare(root);
LegacyEntityDataFixes.finish(root);
- CompoundNBT actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
- CompoundNBT expected = before.copy();
+ CompoundTag actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag expected = before.copy();
expected.getList("Attributes", 10).getCompound(0).putString("Name", "forge:swim_speed");
assertEquals(expected, actual);
assertEquals(before, entity);
}
@Test public void aliasesVanillaEntityBeforeNativeDfuAndPreservesModifierIdentity() {
- CompoundNBT root = chunk(entity("minecraft:wolf", true));
+ CompoundTag root = chunk(entity("minecraft:wolf", true));
LegacyEntityDataFixes.prepare(root);
LegacyEntityDataFixes.finish(root);
- CompoundNBT attribute = root.getCompound("Level").getList("Entities", 10).getCompound(0)
+ CompoundTag attribute = root.getCompound("Level").getList("Entities", 10).getCompound(0)
.getList("Attributes", 10).getCompound(0);
assertEquals("forge:swim_speed", attribute.getString("Name"));
assertEquals(2D, attribute.getDouble("Base"), 0D);
assertEquals("keep-attribute-field", attribute.getString("PrivateNote"));
- CompoundNBT modifier = attribute.getList("Modifiers", 10).getCompound(0);
+ CompoundTag modifier = attribute.getList("Modifiers", 10).getCompound(0);
assertEquals(MODIFIER, modifier.getUUID("UUID"));
assertEquals("keep-modifier-field", modifier.getString("PrivateNote"));
}
@Test public void aliasesOnlyEntityPassengersNotInventoryOrPrivateCompounds() {
- CompoundNBT parent = entity("example:vehicle", false);
- CompoundNBT child = entity("example:seat", true);
- ListNBT passengers = new ListNBT(); passengers.add(child);
+ CompoundTag parent = entity("example:vehicle", false);
+ CompoundTag child = entity("example:seat", true);
+ ListTag passengers = new ListTag(); passengers.add(child);
parent.put("Passengers", passengers);
- CompoundNBT foreign = entity("example:private", true);
+ CompoundTag foreign = entity("example:private", true);
parent.put("PrivateData", foreign.copy());
parent.put("ForgeData", foreign.copy());
- ListNBT items = new ListNBT(); items.add(foreign.copy()); parent.put("Items", items);
- CompoundNBT root = chunk(parent);
+ ListTag items = new ListTag(); items.add(foreign.copy()); parent.put("Items", items);
+ CompoundTag root = chunk(parent);
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
- CompoundNBT actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
+ CompoundTag actual = root.getCompound("Level").getList("Entities", 10).getCompound(0);
assertEquals("forge:swim_speed", actual.getList("Passengers", 10).getCompound(0)
.getList("Attributes", 10).getCompound(0).getString("Name"));
assertEquals(foreign, actual.getCompound("PrivateData"));
@@ -95,50 +95,50 @@ public class LegacyEntityAttributeAliasesTest {
}
@Test public void exactAliasDoesNotRenameOtherForgeOrUnknownAttributes() {
- CompoundNBT entity = entity("example:vehicle", false);
- ListNBT list = new ListNBT();
+ CompoundTag entity = entity("example:vehicle", false);
+ ListTag list = new ListTag();
for (String name : new String[] {"forge.SwimSpeed", "example:swimSpeed", "forge:other", "forge.swimSpeed.extra"}) {
- CompoundNBT attribute = attribute(false); attribute.putString("Name", name); list.add(attribute);
+ CompoundTag attribute = attribute(false); attribute.putString("Name", name); list.add(attribute);
}
entity.put("Attributes", list);
- CompoundNBT root = chunk(entity), before = root.copy();
+ CompoundTag root = chunk(entity), before = root.copy();
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
assertEquals(before, root);
}
@Test public void repeatedAliasPreparationIsIdempotent() {
- CompoundNBT root = chunk(entity("example:vehicle", true));
+ CompoundTag root = chunk(entity("example:vehicle", true));
LegacyEntityDataFixes.prepare(root);
- CompoundNBT staged = root.copy();
+ CompoundTag staged = root.copy();
LegacyEntityDataFixes.prepare(root); assertEquals(staged, root);
LegacyEntityDataFixes.finish(root);
- CompoundNBT once = root.copy();
+ CompoundTag once = root.copy();
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
assertEquals(once, root);
}
@Test public void modernChunksAndPlayersRemainUnchanged() {
- CompoundNBT root = chunk(entity("minecraft:wolf", true));
+ CompoundTag root = chunk(entity("minecraft:wolf", true));
root.putInt("DataVersion", SharedConstants.getCurrentVersion().getWorldVersion());
- CompoundNBT before = root.copy();
+ CompoundTag before = root.copy();
LegacyEntityDataFixes.prepare(root); assertEquals(before, root);
- CompoundNBT player = player(entity("minecraft:wolf", true));
- CompoundNBT result = LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER,
+ CompoundTag player = player(entity("minecraft:wolf", true));
+ CompoundTag result = LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER,
player, SharedConstants.getCurrentVersion().getWorldVersion());
assertEquals(player, result);
}
@Test public void playerRootVehicleAndPassengersArePreparedBeforeNativePlayerDfu() {
- CompoundNBT vehicle = entity("example:vehicle", true);
- ListNBT passengers = new ListNBT(); passengers.add(entity("example:seat", true)); vehicle.put("Passengers", passengers);
- CompoundNBT source = player(vehicle), expected = source.copy();
- CompoundNBT result = LegacyPlayerDataFixes.update(new RecordingFixer(value -> {
- CompoundNBT rootVehicle = value.getCompound("RootVehicle").getCompound("Entity");
+ CompoundTag vehicle = entity("example:vehicle", true);
+ ListTag passengers = new ListTag(); passengers.add(entity("example:seat", true)); vehicle.put("Passengers", passengers);
+ CompoundTag source = player(vehicle), expected = source.copy();
+ CompoundTag result = LegacyPlayerDataFixes.update(new RecordingFixer(value -> {
+ CompoundTag rootVehicle = value.getCompound("RootVehicle").getCompound("Entity");
assertEquals("forge:swim_speed", rootVehicle.getList("Attributes", 10).getCompound(0).getString("Name"));
assertEquals("forge:swim_speed", rootVehicle.getList("Passengers", 10).getCompound(0)
.getList("Attributes", 10).getCompound(0).getString("Name"));
return value;
- }), DefaultTypeReferences.PLAYER, source, 512);
+ }), DataFixTypes.PLAYER, source, 512);
assertEquals(expected, source);
expected.getCompound("RootVehicle").getCompound("Entity").getList("Attributes", 10)
.getCompound(0).putString("Name", "forge:swim_speed");
@@ -148,40 +148,40 @@ public class LegacyEntityAttributeAliasesTest {
}
@Test public void playerInventoryAndForeignRootVehicleLookalikesAreNotWalked() {
- CompoundNBT player = player(entity("example:vehicle", true));
- CompoundNBT foreign = entity("example:private", true);
+ CompoundTag player = player(entity("example:vehicle", true));
+ CompoundTag foreign = entity("example:private", true);
foreign.putByte("Count", (byte) 3);
- ListNBT inventory = new ListNBT(); inventory.add(foreign.copy()); player.put("Inventory", inventory);
+ ListTag inventory = new ListTag(); inventory.add(foreign.copy()); player.put("Inventory", inventory);
player.put("PrivateData", player(entity("example:foreign", true)));
- CompoundNBT before = player.copy();
- CompoundNBT result = LegacyPlayerDataFixes.update(new RecordingFixer(value -> value),
- DefaultTypeReferences.PLAYER, player, 1343);
+ CompoundTag before = player.copy();
+ CompoundTag result = LegacyPlayerDataFixes.update(new RecordingFixer(value -> value),
+ DataFixTypes.PLAYER, player, 1343);
assertEquals(before, player);
assertEquals(inventory, result.getList("Inventory", 10));
assertEquals(before.getCompound("PrivateData"), result.getCompound("PrivateData"));
}
@Test public void rootVehiclePassengerCollisionFailsWithoutChangingPlayer() {
- CompoundNBT vehicle = entity("example:vehicle", true);
- CompoundNBT child = entity("example:seat", true);
- CompoundNBT duplicate = attribute(false); duplicate.putString("Name", "forge:swim_speed");
+ CompoundTag vehicle = entity("example:vehicle", true);
+ CompoundTag child = entity("example:seat", true);
+ CompoundTag duplicate = attribute(false); duplicate.putString("Name", "forge:swim_speed");
child.getList("Attributes", 10).add(duplicate);
- ListNBT passengers = new ListNBT(); passengers.add(child); vehicle.put("Passengers", passengers);
- CompoundNBT player = player(vehicle), before = player.copy();
+ ListTag passengers = new ListTag(); passengers.add(child); vehicle.put("Passengers", passengers);
+ CompoundTag player = player(vehicle), before = player.copy();
try {
- LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER, player, 1343);
+ LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER, player, 1343);
fail("Alias collision accepted");
} catch (IllegalStateException expected) { assertEquals(before, player); }
}
@Test public void nativePlayerDfuRetainsVehicleAndPassengerCustomizedAttributes() {
- CompoundNBT vehicle = entity("minecraft:wolf", true);
- ListNBT passengers = new ListNBT(); passengers.add(entity("minecraft:wolf", true)); vehicle.put("Passengers", passengers);
- CompoundNBT player = player(vehicle), before = player.copy();
- CompoundNBT result = LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER, player, 1343);
- CompoundNBT fixed = result.getCompound("RootVehicle").getCompound("Entity");
- for (CompoundNBT actual : new CompoundNBT[] {fixed, fixed.getList("Passengers", 10).getCompound(0)}) {
- CompoundNBT attribute = actual.getList("Attributes", 10).getCompound(0);
+ CompoundTag vehicle = entity("minecraft:wolf", true);
+ ListTag passengers = new ListTag(); passengers.add(entity("minecraft:wolf", true)); vehicle.put("Passengers", passengers);
+ CompoundTag player = player(vehicle), before = player.copy();
+ CompoundTag result = LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER, player, 1343);
+ CompoundTag fixed = result.getCompound("RootVehicle").getCompound("Entity");
+ for (CompoundTag actual : new CompoundTag[] {fixed, fixed.getList("Passengers", 10).getCompound(0)}) {
+ CompoundTag attribute = actual.getList("Attributes", 10).getCompound(0);
assertEquals("forge:swim_speed", attribute.getString("Name"));
assertEquals(2D, attribute.getDouble("Base"), 0D);
assertEquals(MODIFIER, attribute.getList("Modifiers", 10).getCompound(0).getUUID("UUID"));
@@ -190,13 +190,13 @@ public class LegacyEntityAttributeAliasesTest {
}
@Test public void ownPlayerAttributeBaseTwoAndModifierSurviveNativePlayerDfu() {
- CompoundNBT player = player(entity("minecraft:wolf", true));
+ CompoundTag player = player(entity("minecraft:wolf", true));
player.put("Attributes", entity("minecraft:wolf", true).getList("Attributes", 10));
- CompoundNBT foreign = entity("example:private", true);
+ CompoundTag foreign = entity("example:private", true);
player.put("PrivateData", foreign.copy());
- CompoundNBT before = player.copy();
- CompoundNBT result = LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER, player, 1343);
- CompoundNBT attribute = result.getList("Attributes", 10).getCompound(0);
+ CompoundTag before = player.copy();
+ CompoundTag result = LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER, player, 1343);
+ CompoundTag attribute = result.getList("Attributes", 10).getCompound(0);
assertEquals("forge:swim_speed", attribute.getString("Name"));
assertEquals(2D, attribute.getDouble("Base"), 0D);
assertEquals(MODIFIER, attribute.getList("Modifiers", 10).getCompound(0).getUUID("UUID"));
@@ -207,21 +207,21 @@ public class LegacyEntityAttributeAliasesTest {
}
@Test public void ownPlayerAttributeCollisionFailsWithoutMutatingCaller() {
- CompoundNBT player = player(entity("example:vehicle", true));
- ListNBT attributes = entity("example:attributes", true).getList("Attributes", 10);
- CompoundNBT duplicate = attribute(false); duplicate.putString("Name", "forge:swim_speed"); attributes.add(duplicate);
+ CompoundTag player = player(entity("example:vehicle", true));
+ ListTag attributes = entity("example:attributes", true).getList("Attributes", 10);
+ CompoundTag duplicate = attribute(false); duplicate.putString("Name", "forge:swim_speed"); attributes.add(duplicate);
player.put("Attributes", attributes);
- CompoundNBT before = player.copy();
+ CompoundTag before = player.copy();
try {
- LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER, player, 1343);
+ LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER, player, 1343);
fail("Own player attribute collision accepted");
} catch (IllegalStateException expected) { assertEquals(before, player); }
}
@Test public void malformedAttributesFailClosedWithoutChangingSource() {
- CompoundNBT entity = entity("example:vehicle", false);
- ListNBT malformed = new ListNBT(); malformed.add(StringNBT.valueOf("keep")); entity.put("Attributes", malformed);
- CompoundNBT root = chunk(entity), before = root.copy();
+ CompoundTag entity = entity("example:vehicle", false);
+ ListTag malformed = new ListTag(); malformed.add(StringTag.valueOf("keep")); entity.put("Attributes", malformed);
+ CompoundTag root = chunk(entity), before = root.copy();
try { LegacyEntityDataFixes.prepare(root); fail("Malformed attributes accepted"); }
catch (IllegalStateException expected) { assertEquals(before, root); }
}
@@ -231,20 +231,20 @@ public class LegacyEntityAttributeAliasesTest {
// Keep constructor-free test setup without linking restricted JDK types.
Class> allocator = Class.forName("sun.misc.Unsafe");
Field unsafeField = allocator.getDeclaredField("theUnsafe"); unsafeField.setAccessible(true);
- ServerWorld world = (ServerWorld) allocator.getMethod("allocateInstance", Class.class)
- .invoke(unsafeField.get(null), ServerWorld.class);
- set(World.class, world, "dimension", World.NETHER);
- set(World.class, world, "profiler", (Supplier) () -> EmptyProfiler.INSTANCE);
- CompoundNBT source = entity("minecraft:wolf", true);
+ ServerLevel world = (ServerLevel) allocator.getMethod("allocateInstance", Class.class)
+ .invoke(unsafeField.get(null), ServerLevel.class);
+ set(Level.class, world, "dimension", Level.NETHER);
+ set(Level.class, world, "profiler", (Supplier) () -> InactiveProfiler.INSTANCE);
+ CompoundTag source = entity("minecraft:wolf", true);
source.putFloat("Health", 8F);
- CompoundNBT red = (CompoundNBT) DataFixesManager.getDataFixer().update(TypeReferences.ENTITY,
- new Dynamic<>(NBTDynamicOps.INSTANCE, source.copy()), 1343,
+ CompoundTag red = (CompoundTag) DataFixers.getDataFixer().update(References.ENTITY,
+ new Dynamic<>(NbtOps.INSTANCE, source.copy()), 1343,
SharedConstants.getCurrentVersion().getWorldVersion()).getValue();
- WolfEntity before = new WolfEntity(EntityType.WOLF, world); before.load(red);
+ Wolf before = new Wolf(EntityType.WOLF, world); before.load(red);
assertEquals(1D, before.getAttribute(ForgeMod.SWIM_SPEED.get()).getBaseValue(), 0D);
- CompoundNBT root = chunk(source);
+ CompoundTag root = chunk(source);
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
- WolfEntity after = new WolfEntity(EntityType.WOLF, world);
+ Wolf after = new Wolf(EntityType.WOLF, world);
after.load(root.getCompound("Level").getList("Entities", 10).getCompound(0));
assertEquals(2D, after.getAttribute(ForgeMod.SWIM_SPEED.get()).getBaseValue(), 0D);
assertNotNull(after.getAttribute(ForgeMod.SWIM_SPEED.get()).getModifier(MODIFIER));
@@ -254,41 +254,41 @@ public class LegacyEntityAttributeAliasesTest {
}
private static void assertCollision(String first, String second) {
- CompoundNBT entity = entity("example:vehicle", true);
+ CompoundTag entity = entity("example:vehicle", true);
entity.getList("Attributes", 10).getCompound(0).putString("Name", first);
- CompoundNBT duplicate = attribute(false); duplicate.putString("Name", second);
+ CompoundTag duplicate = attribute(false); duplicate.putString("Name", second);
entity.getList("Attributes", 10).add(duplicate);
- CompoundNBT root = chunk(entity), before = root.copy();
+ CompoundTag root = chunk(entity), before = root.copy();
try { LegacyEntityDataFixes.prepare(root); fail("Alias collision accepted"); }
catch (IllegalStateException expected) { assertEquals(before, root); }
}
- private static CompoundNBT attribute(boolean modifier) {
- CompoundNBT attribute = new CompoundNBT(); attribute.putString("Name", "forge.swimSpeed");
+ private static CompoundTag attribute(boolean modifier) {
+ CompoundTag attribute = new CompoundTag(); attribute.putString("Name", "forge.swimSpeed");
attribute.putDouble("Base", 2D); attribute.putString("PrivateNote", "keep-attribute-field");
if (modifier) {
- CompoundNBT entry = new CompoundNBT(); entry.putString("Name", "customized-swim");
+ CompoundTag entry = new CompoundTag(); entry.putString("Name", "customized-swim");
entry.putLong("UUIDMost", MODIFIER.getMostSignificantBits()); entry.putLong("UUIDLeast", MODIFIER.getLeastSignificantBits());
entry.putDouble("Amount", 0.75D); entry.putInt("Operation", 0); entry.putString("PrivateNote", "keep-modifier-field");
- ListNBT modifiers = new ListNBT(); modifiers.add(entry); attribute.put("Modifiers", modifiers);
+ ListTag modifiers = new ListTag(); modifiers.add(entry); attribute.put("Modifiers", modifiers);
}
return attribute;
}
- private static CompoundNBT entity(String id, boolean attributes) {
- CompoundNBT result = new CompoundNBT(); result.putString("id", id);
- if (attributes) { ListNBT list = new ListNBT(); list.add(attribute(true)); result.put("Attributes", list); }
+ private static CompoundTag entity(String id, boolean attributes) {
+ CompoundTag result = new CompoundTag(); result.putString("id", id);
+ if (attributes) { ListTag list = new ListTag(); list.add(attribute(true)); result.put("Attributes", list); }
return result;
}
- private static CompoundNBT chunk(CompoundNBT entity) {
- CompoundNBT root = new CompoundNBT(); root.putInt("DataVersion", 1343);
- CompoundNBT level = new CompoundNBT(); ListNBT entities = new ListNBT(); entities.add(entity); level.put("Entities", entities);
+ private static CompoundTag chunk(CompoundTag entity) {
+ CompoundTag root = new CompoundTag(); root.putInt("DataVersion", 1343);
+ CompoundTag level = new CompoundTag(); ListTag entities = new ListTag(); entities.add(entity); level.put("Entities", entities);
root.put("Level", level); return root;
}
- private static CompoundNBT player(CompoundNBT entity) {
- CompoundNBT result = new CompoundNBT(); CompoundNBT vehicle = new CompoundNBT();
+ private static CompoundTag player(CompoundTag entity) {
+ CompoundTag result = new CompoundTag(); CompoundTag vehicle = new CompoundTag();
vehicle.put("Entity", entity); vehicle.putUUID("Attach", new UUID(1L, 2L)); result.put("RootVehicle", vehicle); return result;
}
@@ -304,10 +304,10 @@ private static void set(Class> owner, Object instance, String name, Object val
}
private static final class RecordingFixer implements DataFixer {
- private final UnaryOperator update;
- RecordingFixer(UnaryOperator update) { this.update = update; }
+ private final UnaryOperator update;
+ RecordingFixer(UnaryOperator update) { this.update = update; }
@Override public Dynamic update(DSL.TypeReference type, Dynamic input, int from, int to) {
- update.apply((CompoundNBT) input.getValue());
+ update.apply((CompoundTag) input.getValue());
return input;
}
@Override public Schema getSchema(int version) { throw new AssertionError("Not used by the boundary"); }
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyForgeAttributeRegistryTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyForgeAttributeRegistryTest.java
similarity index 61%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyForgeAttributeRegistryTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyForgeAttributeRegistryTest.java
index c4a915c8..140185c6 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyForgeAttributeRegistryTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyForgeAttributeRegistryTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import static org.junit.Assert.*;
@@ -7,21 +7,21 @@
import java.lang.reflect.Method;
import java.util.UUID;
import java.util.function.Supplier;
-import net.minecraft.entity.EntityType;
-import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance;
-import net.minecraft.entity.passive.WolfEntity;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTDynamicOps;
-import net.minecraft.profiler.EmptyProfiler;
-import net.minecraft.profiler.IProfiler;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.DefaultTypeReferences;
-import net.minecraft.util.datafix.TypeReferences;
-import net.minecraft.util.registry.Bootstrap;
-import net.minecraft.world.World;
-import net.minecraft.world.server.ServerWorld;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.ai.attributes.AttributeInstance;
+import net.minecraft.world.entity.animal.Wolf;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtOps;
+import net.minecraft.util.profiling.InactiveProfiler;
+import net.minecraft.util.profiling.ProfilerFiller;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.DataFixTypes;
+import net.minecraft.util.datafix.fixes.References;
+import net.minecraft.server.Bootstrap;
+import net.minecraft.world.level.Level;
+import net.minecraft.server.level.ServerLevel;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.registries.DeferredRegister;
@@ -48,10 +48,10 @@ public class LegacyForgeAttributeRegistryTest {
@Test public void retainsEveryForgeAliasAndForeignPayloadBeforeNativeDfu() {
for (String[] alias : ALIASES) {
- CompoundNBT source = entity(alias[0], 7.5D), before = source.copy();
- CompoundNBT root = chunk(source);
+ CompoundTag source = entity(alias[0], 7.5D), before = source.copy();
+ CompoundTag root = chunk(source);
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
- CompoundNBT expected = before.copy();
+ CompoundTag expected = before.copy();
expected.getList("Attributes", 10).getCompound(0).putString("Name", alias[1]);
assertEquals(alias[0], expected, fixedEntity(root));
assertEquals(before, source);
@@ -62,23 +62,23 @@ public class LegacyForgeAttributeRegistryTest {
double[] values = {2D, 12.5D, 0.15D};
Class> allocator = Class.forName("sun.misc.Unsafe");
Field unsafe = allocator.getDeclaredField("theUnsafe"); unsafe.setAccessible(true);
- ServerWorld world = (ServerWorld) allocator.getMethod("allocateInstance", Class.class)
- .invoke(unsafe.get(null), ServerWorld.class);
- set(World.class, world, "dimension", World.NETHER);
- set(World.class, world, "profiler", (Supplier) () -> EmptyProfiler.INSTANCE);
+ ServerLevel world = (ServerLevel) allocator.getMethod("allocateInstance", Class.class)
+ .invoke(unsafe.get(null), ServerLevel.class);
+ set(Level.class, world, "dimension", Level.NETHER);
+ set(Level.class, world, "profiler", (Supplier) () -> InactiveProfiler.INSTANCE);
for (int index = 0; index < 3; index++) {
- CompoundNBT source = entity(ALIASES[index][0], values[index]); source.putString("id", "minecraft:wolf");
- CompoundNBT raw = (CompoundNBT) DataFixesManager.getDataFixer().update(TypeReferences.ENTITY,
- new Dynamic<>(NBTDynamicOps.INSTANCE, source.copy()), 1343,
+ CompoundTag source = entity(ALIASES[index][0], values[index]); source.putString("id", "minecraft:wolf");
+ CompoundTag raw = (CompoundTag) DataFixers.getDataFixer().update(References.ENTITY,
+ new Dynamic<>(NbtOps.INSTANCE, source.copy()), 1343,
SharedConstants.getCurrentVersion().getWorldVersion()).getValue();
- WolfEntity negative = new WolfEntity(EntityType.WOLF, world); negative.load(raw);
- ModifiableAttributeInstance old = negative.getAttribute(ForgeRegistries.ATTRIBUTES.getValue(
- new net.minecraft.util.ResourceLocation(ALIASES[index][1])));
+ Wolf negative = new Wolf(EntityType.WOLF, world); negative.load(raw);
+ AttributeInstance old = negative.getAttribute(ForgeRegistries.ATTRIBUTES.getValue(
+ new net.minecraft.resources.ResourceLocation(ALIASES[index][1])));
assertNotEquals(ALIASES[index][0], values[index], old.getBaseValue(), 0D);
- CompoundNBT root = chunk(source);
+ CompoundTag root = chunk(source);
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
- WolfEntity positive = new WolfEntity(EntityType.WOLF, world); positive.load(fixedEntity(root));
- ModifiableAttributeInstance actual = positive.getAttribute(old.getAttribute());
+ Wolf positive = new Wolf(EntityType.WOLF, world); positive.load(fixedEntity(root));
+ AttributeInstance actual = positive.getAttribute(old.getAttribute());
assertEquals(ALIASES[index][0], values[index], actual.getBaseValue(), 0D);
assertEquals(0.125D, actual.getModifier(new UUID(17L, 19L)).getAmount(), 0D);
assertEquals(values[index] + 0.125D, actual.getValue(), 0D);
@@ -86,14 +86,14 @@ public class LegacyForgeAttributeRegistryTest {
}
@Test public void playerReachSurvivesNativePlayerFixingAndNativeAttributeLoading() {
- CompoundNBT source = entity("generic.reachDistance", 7.5D), before = source.copy();
- CompoundNBT actual = LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(),
- DefaultTypeReferences.PLAYER, source, 1343);
- CompoundNBT value = actual.getList("Attributes", 10).getCompound(0);
+ CompoundTag source = entity("generic.reachDistance", 7.5D), before = source.copy();
+ CompoundTag actual = LegacyPlayerDataFixes.update(DataFixers.getDataFixer(),
+ DataFixTypes.PLAYER, source, 1343);
+ CompoundTag value = actual.getList("Attributes", 10).getCompound(0);
assertEquals("forge:reach_distance", value.getString("Name"));
assertSame(ForgeMod.REACH_DISTANCE.get(), ForgeRegistries.ATTRIBUTES.getValue(
- new net.minecraft.util.ResourceLocation(value.getString("Name"))));
- ModifiableAttributeInstance nativeAttribute = new ModifiableAttributeInstance(ForgeMod.REACH_DISTANCE.get(), unused -> {});
+ new net.minecraft.resources.ResourceLocation(value.getString("Name"))));
+ AttributeInstance nativeAttribute = new AttributeInstance(ForgeMod.REACH_DISTANCE.get(), unused -> {});
nativeAttribute.load(value);
assertEquals(7.5D, nativeAttribute.getBaseValue(), 0D);
assertEquals(7.625D, nativeAttribute.getValue(), 0D);
@@ -104,9 +104,9 @@ public class LegacyForgeAttributeRegistryTest {
@Test public void allAliasCollisionsFailClosedWithoutChangingCaller() {
for (String[] alias : ALIASES) for (String[] pair : new String[][] {
{alias[0], alias[1]}, {alias[0], alias[0]}, {alias[1], alias[1]}}) {
- CompoundNBT source = entity(pair[0], 2D);
+ CompoundTag source = entity(pair[0], 2D);
source.getList("Attributes", 10).add(attribute(pair[1], 3D));
- CompoundNBT root = chunk(source), before = root.copy();
+ CompoundTag root = chunk(source), before = root.copy();
try { LegacyEntityDataFixes.prepare(root); fail("Ambiguous attribute accepted: " + alias[0]); }
catch (IllegalStateException expected) { assertEquals(before, root); }
}
@@ -114,18 +114,18 @@ public class LegacyForgeAttributeRegistryTest {
@Test public void everyAliasSurvivesPlayerMountsAndPassengersWithoutWalkingPrivateData() {
for (String[] alias : ALIASES) {
- CompoundNBT source = entity(alias[0], 7.5D);
- CompoundNBT vehicle = entity(alias[0], 6.5D); vehicle.putString("id", "minecraft:wolf");
- CompoundNBT passenger = entity(alias[0], 5.5D); passenger.putString("id", "minecraft:wolf");
- ListNBT passengers = new ListNBT(); passengers.add(passenger); vehicle.put("Passengers", passengers);
- CompoundNBT rootVehicle = new CompoundNBT(); rootVehicle.put("Entity", vehicle);
+ CompoundTag source = entity(alias[0], 7.5D);
+ CompoundTag vehicle = entity(alias[0], 6.5D); vehicle.putString("id", "minecraft:wolf");
+ CompoundTag passenger = entity(alias[0], 5.5D); passenger.putString("id", "minecraft:wolf");
+ ListTag passengers = new ListTag(); passengers.add(passenger); vehicle.put("Passengers", passengers);
+ CompoundTag rootVehicle = new CompoundTag(); rootVehicle.put("Entity", vehicle);
rootVehicle.putUUID("Attach", new UUID(23L, 29L)); source.put("RootVehicle", rootVehicle);
source.put("PrivateData", entity(alias[0], 4.5D));
- CompoundNBT before = source.copy();
- CompoundNBT actual = LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(),
- DefaultTypeReferences.PLAYER, source, 1343);
- CompoundNBT fixedVehicle = actual.getCompound("RootVehicle").getCompound("Entity");
- for (CompoundNBT item : new CompoundNBT[] {actual, fixedVehicle,
+ CompoundTag before = source.copy();
+ CompoundTag actual = LegacyPlayerDataFixes.update(DataFixers.getDataFixer(),
+ DataFixTypes.PLAYER, source, 1343);
+ CompoundTag fixedVehicle = actual.getCompound("RootVehicle").getCompound("Entity");
+ for (CompoundTag item : new CompoundTag[] {actual, fixedVehicle,
fixedVehicle.getList("Passengers", 10).getCompound(0)}) {
assertEquals(alias[1], item.getList("Attributes", 10).getCompound(0).getString("Name"));
assertEquals(0.125D, item.getList("Attributes", 10).getCompound(0)
@@ -138,9 +138,9 @@ public class LegacyForgeAttributeRegistryTest {
@Test public void everyAliasIsIdempotentWithSavedValuesIntact() {
for (String[] alias : ALIASES) {
- CompoundNBT root = chunk(entity(alias[0], 7.5D));
+ CompoundTag root = chunk(entity(alias[0], 7.5D));
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
- CompoundNBT before = root.copy();
+ CompoundTag before = root.copy();
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root);
assertEquals(before, root);
}
@@ -148,38 +148,38 @@ public class LegacyForgeAttributeRegistryTest {
@Test public void modernChunksAndSimilarUnknownNamesRemainUntouched() {
for (String[] alias : ALIASES) {
- CompoundNBT root = chunk(entity(alias[0], 7D));
+ CompoundTag root = chunk(entity(alias[0], 7D));
root.putInt("DataVersion", SharedConstants.getCurrentVersion().getWorldVersion());
- CompoundNBT before = root.copy(); LegacyEntityDataFixes.prepare(root); assertEquals(before, root);
+ CompoundTag before = root.copy(); LegacyEntityDataFixes.prepare(root); assertEquals(before, root);
root = chunk(entity(alias[0] + ".private", 7D)); before = root.copy();
LegacyEntityDataFixes.prepare(root); LegacyEntityDataFixes.finish(root); assertEquals(before, root);
}
}
- private static CompoundNBT entity(String name, double base) {
- CompoundNBT value = new CompoundNBT(); value.putString("id", "example:vehicle");
- ListNBT attributes = new ListNBT(); attributes.add(attribute(name, base)); value.put("Attributes", attributes);
+ private static CompoundTag entity(String name, double base) {
+ CompoundTag value = new CompoundTag(); value.putString("id", "example:vehicle");
+ ListTag attributes = new ListTag(); attributes.add(attribute(name, base)); value.put("Attributes", attributes);
return value;
}
- private static CompoundNBT attribute(String name, double base) {
- CompoundNBT value = new CompoundNBT(); value.putString("Name", name); value.putDouble("Base", base);
+ private static CompoundTag attribute(String name, double base) {
+ CompoundTag value = new CompoundTag(); value.putString("Name", name); value.putDouble("Base", base);
value.putString("PrivateNote", "preserve-attribute-payload");
- CompoundNBT modifier = new CompoundNBT(); modifier.putString("Name", "customized-attribute");
+ CompoundTag modifier = new CompoundTag(); modifier.putString("Name", "customized-attribute");
modifier.putLong("UUIDMost", 17L); modifier.putLong("UUIDLeast", 19L);
modifier.putDouble("Amount", 0.125D); modifier.putInt("Operation", 0);
modifier.putString("PrivateNote", "preserve-modifier-payload");
- ListNBT modifiers = new ListNBT(); modifiers.add(modifier); value.put("Modifiers", modifiers);
+ ListTag modifiers = new ListTag(); modifiers.add(modifier); value.put("Modifiers", modifiers);
return value;
}
- private static CompoundNBT chunk(CompoundNBT entity) {
- CompoundNBT value = new CompoundNBT(); value.putInt("DataVersion", 1343);
- CompoundNBT level = new CompoundNBT(); ListNBT entities = new ListNBT(); entities.add(entity);
+ private static CompoundTag chunk(CompoundTag entity) {
+ CompoundTag value = new CompoundTag(); value.putInt("DataVersion", 1343);
+ CompoundTag level = new CompoundTag(); ListTag entities = new ListTag(); entities.add(entity);
level.put("Entities", entities); value.put("Level", level); return value;
}
- private static CompoundNBT fixedEntity(CompoundNBT root) { return root.getCompound("Level").getList("Entities", 10).getCompound(0); }
+ private static CompoundTag fixedEntity(CompoundTag root) { return root.getCompound("Level").getList("Entities", 10).getCompound(0); }
private static void set(Class> owner, Object instance, String name, Object value) throws Exception {
Field field = owner.getDeclaredField(name); field.setAccessible(true); field.set(instance, value);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemsTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyMachineItemsTest.java
similarity index 72%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemsTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyMachineItemsTest.java
index c9a3acf1..8fe79ba9 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyMachineItemsTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyMachineItemsTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.DataFixer;
@@ -8,16 +8,16 @@
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
-import net.minecraft.block.Blocks;
-import net.minecraft.item.Items;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.nbt.StringNBT;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.DefaultTypeReferences;
-import net.minecraft.util.datafix.TypeReferences;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.item.Items;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.nbt.StringTag;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.DataFixTypes;
+import net.minecraft.util.datafix.fixes.References;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LogEvent;
@@ -25,19 +25,19 @@
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.junit.BeforeClass;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor;
import static org.junit.Assert.*;
public class LegacyMachineItemsTest {
@BeforeClass public static void bootstrap() {
- net.minecraft.util.registry.Bootstrap.bootStrap();
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
AdvantageLegacyMigrations.registerPowerAdvantage();
}
@Test public void colouredWoolSurvivesAnActualConveyorInventoryLoad() {
- CompoundNBT tile = convertedTile(stack("minecraft:wool", 14, 7));
- TileEntityConveyor conveyor = new TileEntityConveyor();
- conveyor.load(Blocks.AIR.defaultBlockState(), tile);
+ CompoundTag tile = convertedTile(stack("minecraft:wool", 14, 7));
+ TileEntityConveyor conveyor = new TileEntityConveyor(net.minecraft.core.BlockPos.ZERO, Blocks.HOPPER.defaultBlockState());
+ conveyor.load(tile);
assertSame(Items.RED_WOOL, conveyor.getItem(0).getItem());
assertEquals(7, conveyor.getItem(0).getCount());
}
@@ -46,7 +46,7 @@ public class LegacyMachineItemsTest {
for (String[] row : new String[][] {{"minecraft:coal", "1", "minecraft:charcoal"},
{"minecraft:dye", "4", "minecraft:lapis_lazuli"},
{"minecraft:planks", "1", "minecraft:spruce_planks"}}) {
- CompoundNBT item = convertedTile(stack(row[0], Integer.parseInt(row[1]), 7))
+ CompoundTag item = convertedTile(stack(row[0], Integer.parseInt(row[1]), 7))
.getList("Items", 10).getCompound(0);
assertEquals(row[2], item.getString("id"));
assertEquals(7, item.getInt("Count"));
@@ -55,16 +55,16 @@ public class LegacyMachineItemsTest {
}
@Test public void nativeItemFixersPreserveDamageAndEnchantmentEffects() {
- CompoundNBT pick = stack("minecraft:diamond_pickaxe", 17, 1);
- CompoundNBT tag = new CompoundNBT();
- ListNBT enchantments = new ListNBT();
- CompoundNBT enchantment = new CompoundNBT();
+ CompoundTag pick = stack("minecraft:diamond_pickaxe", 17, 1);
+ CompoundTag tag = new CompoundTag();
+ ListTag enchantments = new ListTag();
+ CompoundTag enchantment = new CompoundTag();
enchantment.putShort("id", (short) 32);
enchantment.putShort("lvl", (short) 3);
enchantments.add(enchantment);
tag.put("ench", enchantments);
pick.put("tag", tag);
- CompoundNBT actual = convertedTile(pick).getList("Items", 10).getCompound(0);
+ CompoundTag actual = convertedTile(pick).getList("Items", 10).getCompound(0);
assertEquals(17, actual.getCompound("tag").getInt("Damage"));
assertEquals("minecraft:efficiency", actual.getCompound("tag")
.getList("Enchantments", 10).getCompound(0).getString("id"));
@@ -72,41 +72,41 @@ public class LegacyMachineItemsTest {
}
@Test public void nestedStoredItemsAreConvertedWithoutChangingMachineState() {
- CompoundNBT tile = tile(stack("minecraft:wool", 14, 7));
- CompoundNBT nested = new CompoundNBT();
+ CompoundTag tile = tile(stack("minecraft:wool", 14, 7));
+ CompoundTag nested = new CompoundTag();
nested.put("Reference", stack("minecraft:dye", 4, 1));
tile.put("Recipe", nested);
tile.putFloat("Energy", 19.5F);
tile.putString("CustomName", "keep");
- CompoundNBT actual = convert(chunk(tile), 512).getCompound("Level").getList("TileEntities", 10).getCompound(0);
+ CompoundTag actual = convert(chunk(tile), 512).getCompound("Level").getList("TileEntities", 10).getCompound(0);
assertEquals("minecraft:lapis_lazuli", actual.getCompound("Recipe").getCompound("Reference").getString("id"));
assertEquals(19.5F, actual.getFloat("Energy"), 0F);
assertEquals("keep", actual.getString("CustomName"));
}
@Test public void foreignPrivatePayloadsAreNotInterpretedAsAdvantageInventories() {
- CompoundNBT foreign = tile(stack("minecraft:wool", 14, 7));
+ CompoundTag foreign = tile(stack("minecraft:wool", 14, 7));
foreign.putString("id", "other:private_machine");
- CompoundNBT expected = foreign.copy();
- CompoundNBT root = chunk(foreign);
+ CompoundTag expected = foreign.copy();
+ CompoundTag root = chunk(foreign);
LegacyWorldDataHook.prepareLegacyChunk(root);
LegacyWorldDataHook.prepareLegacyEntities(root);
assertEquals(expected, root.getCompound("Level").getList("TileEntities", 10).getCompound(0));
}
@Test public void currentVersionMachineDataIsNotRewritten() {
- CompoundNBT root = chunk(tile(stack("minecraft:red_wool", 0, 7)));
+ CompoundTag root = chunk(tile(stack("minecraft:red_wool", 0, 7)));
root.putInt("DataVersion", SharedConstants.getCurrentVersion().getWorldVersion());
- CompoundNBT expected = root.copy();
+ CompoundTag expected = root.copy();
LegacyWorldDataHook.prepareLegacyEntities(root);
assertEquals(expected, root);
}
@Test public void repeatedPreparationDoesNotRepairAStoredTool() {
- CompoundNBT root = chunk(tile(stack("minecraft:diamond_pickaxe", 17, 1)));
+ CompoundTag root = chunk(tile(stack("minecraft:diamond_pickaxe", 17, 1)));
LegacyWorldDataHook.prepareLegacyChunk(root);
LegacyWorldDataHook.prepareLegacyEntities(root);
- CompoundNBT once = root.copy();
+ CompoundTag once = root.copy();
LegacyWorldDataHook.prepareLegacyEntities(root);
assertEquals(once, root);
assertEquals(17, root.getCompound("Level").getList("TileEntities", 10).getCompound(0)
@@ -114,66 +114,66 @@ public class LegacyMachineItemsTest {
}
@Test public void namedBookEnchantmentsAreNotReinterpretedAsProtection() {
- CompoundNBT book = stack("minecraft:enchanted_book", 0, 1);
- CompoundNBT tag = new CompoundNBT();
- ListNBT list = new ListNBT();
- CompoundNBT named = new CompoundNBT();
+ CompoundTag book = stack("minecraft:enchanted_book", 0, 1);
+ CompoundTag tag = new CompoundTag();
+ ListTag list = new ListTag();
+ CompoundTag named = new CompoundTag();
named.putString("id", "steamadvantage:steam_capacity");
named.putShort("lvl", (short) 3);
list.add(named);
tag.put("StoredEnchantments", list);
book.put("tag", tag);
- CompoundNBT actual = convertedTile(book).getList("Items", 10).getCompound(0);
+ CompoundTag actual = convertedTile(book).getList("Items", 10).getCompound(0);
assertEquals(list, actual.getCompound("tag").getList("StoredEnchantments", 10));
}
@Test public void nativeNestedContainerItemsAreFixedExactlyOnce() {
- CompoundNBT chest = stack("minecraft:chest", 0, 1);
- CompoundNBT blockEntity = new CompoundNBT();
+ CompoundTag chest = stack("minecraft:chest", 0, 1);
+ CompoundTag blockEntity = new CompoundTag();
blockEntity.putString("id", "Chest");
- ListNBT contents = new ListNBT();
+ ListTag contents = new ListTag();
contents.add(stack("minecraft:diamond_pickaxe", 17, 1));
contents.add(stack("minecraft:wool", 14, 7));
blockEntity.put("Items", contents);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
tag.put("BlockEntityTag", blockEntity);
chest.put("tag", tag);
- CompoundNBT actual = convertedTile(chest).getList("Items", 10).getCompound(0);
- ListNBT fixed = actual.getCompound("tag").getCompound("BlockEntityTag").getList("Items", 10);
+ CompoundTag actual = convertedTile(chest).getList("Items", 10).getCompound(0);
+ ListTag fixed = actual.getCompound("tag").getCompound("BlockEntityTag").getList("Items", 10);
assertEquals(17, fixed.getCompound(0).getCompound("tag").getInt("Damage"));
assertEquals("minecraft:red_wool", fixed.getCompound(1).getString("id"));
assertEquals(7, fixed.getCompound(1).getInt("Count"));
}
@Test public void foreignItemPayloadInsideAnOwnedMachineRemainsVerbatim() {
- CompoundNBT foreign = stack("other:component", 9, 1);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag foreign = stack("other:component", 9, 1);
+ CompoundTag tag = new CompoundTag();
tag.put("Private", stack("minecraft:wool", 14, 7));
foreign.put("tag", tag);
assertEquals(foreign, convertedTile(foreign).getList("Items", 10).getCompound(0));
}
@Test public void nestedNamedEnchantmentsSurviveNativeContainerFixes() {
- CompoundNBT book = stack("minecraft:enchanted_book", 0, 1);
- CompoundNBT tag = new CompoundNBT();
- ListNBT enchantments = new ListNBT();
- CompoundNBT enchantment = new CompoundNBT();
+ CompoundTag book = stack("minecraft:enchanted_book", 0, 1);
+ CompoundTag tag = new CompoundTag();
+ ListTag enchantments = new ListTag();
+ CompoundTag enchantment = new CompoundTag();
enchantment.putString("id", "steamadvantage:steam_capacity");
enchantment.putShort("lvl", (short) 3);
enchantments.add(enchantment);
tag.put("StoredEnchantments", enchantments);
book.put("tag", tag);
- CompoundNBT root = chunk(tile(carrier(book)));
+ CompoundTag root = chunk(tile(carrier(book)));
root.putInt("DataVersion", 1343);
- CompoundNBT actual = convert(root, 1343).getCompound("Level").getList("TileEntities", 10)
+ CompoundTag actual = convert(root, 1343).getCompound("Level").getList("TileEntities", 10)
.getCompound(0).getList("Items", 10).getCompound(0).getCompound("tag")
.getCompound("BlockEntityTag").getList("Items", 10).getCompound(0);
assertEquals(enchantments, actual.getCompound("tag").getList("StoredEnchantments", 10));
}
@Test public void nestedForeignItemsRetainTheirPrivateMetadata() {
- CompoundNBT foreign = stack("other:component", 9, 1);
- CompoundNBT actual = convertedTile(carrier(foreign)).getList("Items", 10).getCompound(0)
+ CompoundTag foreign = stack("other:component", 9, 1);
+ CompoundTag actual = convertedTile(carrier(foreign)).getList("Items", 10).getCompound(0)
.getCompound("tag").getCompound("BlockEntityTag").getList("Items", 10).getCompound(0);
assertEquals(foreign, actual);
}
@@ -187,13 +187,13 @@ public class LegacyMachineItemsTest {
}
@Test public void native704EnvelopeUsesACopiedSingletonAndThePassedFixer() {
- CompoundNBT source = stack("minecraft:chest", 0, 1);
+ CompoundTag source = stack("minecraft:chest", 0, 1);
source.putIntArray("PrivateArray", new int[] {1, 2});
- CompoundNBT before = source.copy();
- CompoundNBT result = LegacyMachineItemDataFixes.upgradeTo704(source, 512, new EnvelopeFixer(root -> {
+ CompoundTag before = source.copy();
+ CompoundTag result = LegacyMachineItemDataFixes.upgradeTo704(source, 512, new EnvelopeFixer(root -> {
assertEquals(1, root.getAllKeys().size());
assertEquals(1, root.getList("Inventory", 10).size());
- CompoundNBT item = root.getList("Inventory", 10).getCompound(0);
+ CompoundTag item = root.getList("Inventory", 10).getCompound(0);
assertEquals(before, item);
item.getIntArray("PrivateArray")[0] = 99;
item.putString("NativeField", "retained");
@@ -209,8 +209,8 @@ public class LegacyMachineItemsTest {
rejectedEnvelope(root -> root.remove("Inventory"));
rejectedEnvelope(root -> root.putString("Inventory", "not a list"));
rejectedEnvelope(root -> {
- ListNBT items = new ListNBT();
- items.add(StringNBT.valueOf("not a stack"));
+ ListTag items = new ListTag();
+ items.add(StringTag.valueOf("not a stack"));
root.put("Inventory", items);
});
}
@@ -237,9 +237,9 @@ public class LegacyMachineItemsTest {
}
@Test public void native704EnvelopeDoesNotAddASlotToAnUnslottedStack() {
- CompoundNBT source = stack("minecraft:chest", 0, 1);
+ CompoundTag source = stack("minecraft:chest", 0, 1);
source.remove("Slot");
- CompoundNBT before = source.copy();
+ CompoundTag before = source.copy();
try {
LegacyMachineItemDataFixes.upgradeTo704(source, 512,
new EnvelopeFixer(root -> envelopeItem(root).putByte("Slot", (byte) 0)));
@@ -248,7 +248,7 @@ public class LegacyMachineItemsTest {
}
@Test public void native704EnvelopeRejectsANonCompoundPlayerResult() {
- CompoundNBT source = stack("minecraft:chest", 0, 1), before = source.copy();
+ CompoundTag source = stack("minecraft:chest", 0, 1), before = source.copy();
DataFixer fixer = new EnvelopeFixer(root -> {}) {
@Override public Dynamic update(DSL.TypeReference type, Dynamic input, int from, int to) {
return new Dynamic<>(input.getOps(), input.getOps().createList(Stream.empty()));
@@ -260,10 +260,10 @@ public class LegacyMachineItemsTest {
} catch (IllegalStateException expected) { assertEquals(before, source); }
}
- private static CompoundNBT envelopeItem(CompoundNBT root) { return root.getList("Inventory", 10).getCompound(0); }
+ private static CompoundTag envelopeItem(CompoundTag root) { return root.getList("Inventory", 10).getCompound(0); }
- private static void rejectedEnvelope(Consumer mutation) {
- CompoundNBT source = stack("minecraft:chest", 0, 1), before = source.copy();
+ private static void rejectedEnvelope(Consumer mutation) {
+ CompoundTag source = stack("minecraft:chest", 0, 1), before = source.copy();
try {
LegacyMachineItemDataFixes.upgradeTo704(source, 512, new EnvelopeFixer(mutation));
fail("An unpairable native envelope must fail closed");
@@ -271,13 +271,13 @@ private static void rejectedEnvelope(Consumer mutation) {
}
private static class EnvelopeFixer implements DataFixer {
- private final Consumer mutation;
- EnvelopeFixer(Consumer mutation) { this.mutation = mutation; }
+ private final Consumer mutation;
+ EnvelopeFixer(Consumer mutation) { this.mutation = mutation; }
@Override public Dynamic update(DSL.TypeReference type, Dynamic input, int from, int to) {
- assertSame(TypeReferences.PLAYER, type);
+ assertSame(References.PLAYER, type);
assertEquals(512, from);
assertEquals(704, to);
- mutation.accept((CompoundNBT) input.getValue());
+ mutation.accept((CompoundTag) input.getValue());
return input;
}
@Override public Schema getSchema(int version) { throw new AssertionError("Not used by the envelope"); }
@@ -299,33 +299,33 @@ private static final class ErrorCapture extends AbstractAppender implements Auto
@Override public void close() { logger.removeAppender(this); stop(); }
}
- private static CompoundNBT carrier(CompoundNBT item) {
- CompoundNBT chest = stack("minecraft:chest", 0, 1);
- CompoundNBT blockEntity = new CompoundNBT();
+ private static CompoundTag carrier(CompoundTag item) {
+ CompoundTag chest = stack("minecraft:chest", 0, 1);
+ CompoundTag blockEntity = new CompoundTag();
blockEntity.putString("id", "minecraft:chest");
- ListNBT contents = new ListNBT();
+ ListTag contents = new ListTag();
contents.add(item);
blockEntity.put("Items", contents);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
tag.put("BlockEntityTag", blockEntity);
chest.put("tag", tag);
return chest;
}
- private static CompoundNBT convertedTile(CompoundNBT item) {
+ private static CompoundTag convertedTile(CompoundTag item) {
return convert(chunk(tile(item)), 512).getCompound("Level").getList("TileEntities", 10).getCompound(0);
}
- private static CompoundNBT convert(CompoundNBT root, int version) {
+ private static CompoundTag convert(CompoundTag root, int version) {
LegacyWorldDataHook.prepareLegacyChunk(root);
LegacyWorldDataHook.prepareLegacyEntities(root);
- CompoundNBT fixed = NBTUtil.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.CHUNK,
+ CompoundTag fixed = NbtUtils.update(DataFixers.getDataFixer(), DataFixTypes.CHUNK,
root, version, SharedConstants.getCurrentVersion().getWorldVersion());
return LegacyWorldDataHook.finalizeLegacyChunk(fixed);
}
- private static CompoundNBT stack(String id, int damage, int count) {
- CompoundNBT item = new CompoundNBT();
+ private static CompoundTag stack(String id, int damage, int count) {
+ CompoundTag item = new CompoundTag();
item.putString("id", id);
item.putByte("Count", (byte) count);
item.putByte("Slot", (byte) 0);
@@ -333,21 +333,21 @@ private static CompoundNBT stack(String id, int damage, int count) {
return item;
}
- private static CompoundNBT tile(CompoundNBT item) {
- CompoundNBT tile = new CompoundNBT();
+ private static CompoundTag tile(CompoundTag item) {
+ CompoundTag tile = new CompoundTag();
tile.putString("id", "poweradvantage:item_conveyor");
tile.putInt("x", 0); tile.putInt("y", 64); tile.putInt("z", 0);
- ListNBT items = new ListNBT();
+ ListTag items = new ListTag();
items.add(item);
tile.put("Items", items);
return tile;
}
- private static CompoundNBT chunk(CompoundNBT tile) {
- CompoundNBT root = new CompoundNBT();
+ private static CompoundTag chunk(CompoundTag tile) {
+ CompoundTag root = new CompoundTag();
root.putInt("DataVersion", 512);
- CompoundNBT level = new CompoundNBT();
- ListNBT tiles = new ListNBT();
+ CompoundTag level = new CompoundTag();
+ ListTag tiles = new ListTag();
tiles.add(tile);
level.put("TileEntities", tiles);
root.put("Level", level);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixesTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixesTest.java
similarity index 71%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixesTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixesTest.java
index 767c13f9..5f8a523e 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixesTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerDataFixesTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.DataFixer;
@@ -9,27 +9,27 @@
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.util.SharedConstants;
-import net.minecraft.util.datafix.DataFixesManager;
-import net.minecraft.util.datafix.DefaultTypeReferences;
-import net.minecraft.util.datafix.TypeReferences;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.datafix.DataFixers;
+import net.minecraft.util.datafix.DataFixTypes;
+import net.minecraft.util.datafix.fixes.References;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class LegacyPlayerDataFixesTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void savedRegistryBookNamesSurviveBothPlayerInventories() {
for (String inventory : new String[] {"Inventory", "EnderItems"}) {
for (String name : new String[] {"minecraft:efficiency", "steamadvantage:steam_capacity"}) {
- CompoundNBT book = enchanted("minecraft:enchanted_book", "StoredEnchantments", false);
+ CompoundTag book = enchanted("minecraft:enchanted_book", "StoredEnchantments", false);
assertTrue(LegacyWorldDataHook.migrateLegacyEnchantments(book.getCompound("tag"),
Collections.singletonMap(32, name)));
- CompoundNBT source = player(inventory, book), before = source.copy();
- CompoundNBT result = convert(source, 512);
+ CompoundTag source = player(inventory, book), before = source.copy();
+ CompoundTag result = convert(source, 512);
assertEquals(name, enchantment(item(result, inventory, 0), "StoredEnchantments").getString("id"));
assertEquals(3, enchantment(item(result, inventory, 0), "StoredEnchantments").getInt("lvl"));
assertEquals(before, source);
@@ -39,7 +39,7 @@ public class LegacyPlayerDataFixesTest {
@Test public void namedOldEnchAndAlreadyModernEnchantmentsSurvive() {
for (String key : new String[] {"ench", "Enchantments"}) {
- CompoundNBT result = convert(player("Inventory", enchanted("minecraft:diamond_pickaxe", key, true)), 512);
+ CompoundTag result = convert(player("Inventory", enchanted("minecraft:diamond_pickaxe", key, true)), 512);
assertEquals("steamadvantage:steam_capacity", enchantment(item(result, "Inventory", 0), "Enchantments").getString("id"));
assertEquals(17, item(result, "Inventory", 0).getCompound("tag").getInt("Damage"));
}
@@ -47,30 +47,30 @@ public class LegacyPlayerDataFixesTest {
@Test public void numericEnchantmentsStillUseTheNativeMapping() {
for (String key : new String[] {"ench", "StoredEnchantments"}) {
- CompoundNBT result = convert(player("Inventory", enchanted("minecraft:enchanted_book", key, false)), 512);
+ CompoundTag result = convert(player("Inventory", enchanted("minecraft:enchanted_book", key, false)), 512);
String outputKey = key.equals("ench") ? "Enchantments" : key;
assertEquals("minecraft:efficiency", enchantment(item(result, "Inventory", 0), outputKey).getString("id"));
}
}
@Test public void nativeContainerBoundaryFixesNestedItemsExactlyOnce() {
- CompoundNBT chest = stack("minecraft:chest", 0);
- CompoundNBT blockEntity = new CompoundNBT();
+ CompoundTag chest = stack("minecraft:chest", 0);
+ CompoundTag blockEntity = new CompoundTag();
blockEntity.putString("id", "Chest");
- ListNBT contents = new ListNBT();
+ ListTag contents = new ListTag();
contents.add(enchanted("minecraft:diamond_pickaxe", "ench", true));
- CompoundNBT wool = stack("minecraft:wool", 14);
+ CompoundTag wool = stack("minecraft:wool", 14);
wool.putByte("Slot", (byte) 1);
contents.add(wool);
- CompoundNBT book = enchanted("minecraft:enchanted_book", "StoredEnchantments", true);
+ CompoundTag book = enchanted("minecraft:enchanted_book", "StoredEnchantments", true);
book.putByte("Slot", (byte) 2);
contents.add(book);
blockEntity.put("Items", contents);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
tag.put("BlockEntityTag", blockEntity);
chest.put("tag", tag);
- CompoundNBT source = player("Inventory", chest), before = source.copy();
- ListNBT fixed = item(convert(source, 512), "Inventory", 0).getCompound("tag")
+ CompoundTag source = player("Inventory", chest), before = source.copy();
+ ListTag fixed = item(convert(source, 512), "Inventory", 0).getCompound("tag")
.getCompound("BlockEntityTag").getList("Items", 10);
assertEquals(17, fixed.getCompound(0).getCompound("tag").getInt("Damage"));
assertEquals("minecraft:red_wool", fixed.getCompound(1).getString("id"));
@@ -80,25 +80,25 @@ public class LegacyPlayerDataFixesTest {
}
@Test public void foreignItemPayloadIsNotRestoredOverNativeChanges() {
- CompoundNBT foreign = enchanted("other:component", "StoredEnchantments", true);
+ CompoundTag foreign = enchanted("other:component", "StoredEnchantments", true);
foreign.getCompound("tag").putInt("Private", 19);
- CompoundNBT actual = item(convert(player("Inventory", foreign), 512), "Inventory", 0);
+ CompoundTag actual = item(convert(player("Inventory", foreign), 512), "Inventory", 0);
assertFalse("Native damage removal must not be undone by a whole-stack overlay", actual.contains("Damage"));
assertEquals(19, actual.getCompound("tag").getInt("Private"));
assertEquals("steamadvantage:steam_capacity", enchantment(actual, "StoredEnchantments").getString("id"));
}
@Test public void restorationChangesOnlyTheSavedName() {
- CompoundNBT source = player("Inventory", enchanted("other:component", "StoredEnchantments", true));
+ CompoundTag source = player("Inventory", enchanted("other:component", "StoredEnchantments", true));
RecordingFixer fixer = new RecordingFixer(root -> {
- CompoundNBT book = item(root, "Inventory", 0);
+ CompoundTag book = item(root, "Inventory", 0);
book.putString("id", "other:native_result");
enchantment(book, "StoredEnchantments").putString("id", "minecraft:protection");
enchantment(book, "StoredEnchantments").putShort("lvl", (short) 5);
book.getCompound("tag").putInt("NativeField", 42);
});
- CompoundNBT result = LegacyPlayerDataFixes.update(fixer, DefaultTypeReferences.PLAYER, source, 704);
- CompoundNBT book = item(result, "Inventory", 0);
+ CompoundTag result = LegacyPlayerDataFixes.update(fixer, DataFixTypes.PLAYER, source, 704);
+ CompoundTag book = item(result, "Inventory", 0);
assertEquals("other:native_result", book.getString("id"));
assertEquals(42, book.getCompound("tag").getInt("NativeField"));
assertEquals(5, enchantment(book, "StoredEnchantments").getInt("lvl"));
@@ -106,15 +106,15 @@ public class LegacyPlayerDataFixesTest {
}
@Test public void sourceIsDetachedEvenWhenFixerMutatesNestedTagsAndArrays() {
- CompoundNBT source = player("Inventory", stack("minecraft:stone", 0));
+ CompoundTag source = player("Inventory", stack("minecraft:stone", 0));
source.putIntArray("PrivateArray", new int[] {1, 2});
- CompoundNBT before = source.copy();
+ CompoundTag before = source.copy();
RecordingFixer fixer = new RecordingFixer(root -> {
root.getIntArray("PrivateArray")[0] = 99;
item(root, "Inventory", 0).getCompound("tag").putInt("Native", 1);
root.putString("Native", "changed");
});
- CompoundNBT result = LegacyPlayerDataFixes.update(fixer, DefaultTypeReferences.PLAYER, source, 512);
+ CompoundTag result = LegacyPlayerDataFixes.update(fixer, DataFixTypes.PLAYER, source, 512);
assertEquals(before, source);
assertNotSame(source, result);
item(result, "Inventory", 0).putInt("AfterReturn", 1);
@@ -125,7 +125,7 @@ public class LegacyPlayerDataFixesTest {
int current = SharedConstants.getCurrentVersion().getWorldVersion();
for (int source : new int[] {-1, 512, 703, 704, 1343, 2230}) {
RecordingFixer fixer = new RecordingFixer(root -> {});
- LegacyPlayerDataFixes.update(fixer, DefaultTypeReferences.PLAYER, player("Inventory", stack("minecraft:stone", 0)), source);
+ LegacyPlayerDataFixes.update(fixer, DataFixTypes.PLAYER, player("Inventory", stack("minecraft:stone", 0)), source);
List expected = source < 704 ? Arrays.asList(source + "->704", "704->" + current)
: Collections.singletonList(source + "->" + current);
assertEquals(expected, fixer.calls);
@@ -134,9 +134,9 @@ public class LegacyPlayerDataFixesTest {
@Test public void currentOrNewerDataIsCopiedWithoutOldVersionDfu() {
for (int version : new int[] {SharedConstants.getCurrentVersion().getWorldVersion(), Integer.MAX_VALUE}) {
- CompoundNBT source = player("Inventory", stack("minecraft:diamond_pickaxe", 17));
+ CompoundTag source = player("Inventory", stack("minecraft:diamond_pickaxe", 17));
RecordingFixer fixer = new RecordingFixer(root -> fail("Current data must not be reinterpreted"));
- CompoundNBT result = LegacyPlayerDataFixes.update(fixer, DefaultTypeReferences.PLAYER, source, version);
+ CompoundTag result = LegacyPlayerDataFixes.update(fixer, DataFixTypes.PLAYER, source, version);
assertEquals(source, result);
assertNotSame(source, result);
assertTrue(fixer.calls.isEmpty());
@@ -159,11 +159,11 @@ public class LegacyPlayerDataFixesTest {
@Test public void addingAnItemToAnEmptyInventoryFailsClosed() {
for (String inventory : new String[] {"Inventory", "EnderItems"}) {
- CompoundNBT source = new CompoundNBT();
- source.put(inventory, new ListNBT());
+ CompoundTag source = new CompoundTag();
+ source.put(inventory, new ListTag());
try {
LegacyPlayerDataFixes.update(new RecordingFixer(root -> root.getList(inventory, 10)
- .add(stack("minecraft:stone", 0))), DefaultTypeReferences.PLAYER, source, 704);
+ .add(stack("minecraft:stone", 0))), DataFixTypes.PLAYER, source, 704);
fail("An empty inventory must not acquire an unpaired item");
} catch (IllegalStateException expected) { assertTrue(source.getList(inventory, 10).isEmpty()); }
}
@@ -171,8 +171,8 @@ public class LegacyPlayerDataFixesTest {
@Test public void post704PlayerBooksRetainNames() {
for (int version : new int[] {704, 1343, 1519, 2230}) {
- CompoundNBT source = player("EnderItems", enchanted("minecraft:enchanted_book", "StoredEnchantments", true));
- CompoundNBT result = convert(source, version);
+ CompoundTag source = player("EnderItems", enchanted("minecraft:enchanted_book", "StoredEnchantments", true));
+ CompoundTag result = convert(source, version);
assertEquals("steamadvantage:steam_capacity", enchantment(item(result, "EnderItems", 0), "StoredEnchantments").getString("id"));
}
}
@@ -188,67 +188,67 @@ public class LegacyPlayerDataFixesTest {
@Test public void wrongNativeTypeIsRejected() {
try {
- LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.CHUNK,
- new CompoundNBT(), 512);
+ LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.CHUNK,
+ new CompoundTag(), 512);
fail("The player-only wrapper must reject a different type");
} catch (IllegalArgumentException expected) { assertTrue(expected.getMessage().contains("PLAYER")); }
}
- private static void rejected(Consumer mutation) {
- CompoundNBT source = player("Inventory", enchanted("minecraft:enchanted_book", "StoredEnchantments", true));
- CompoundNBT before = source.copy();
+ private static void rejected(Consumer mutation) {
+ CompoundTag source = player("Inventory", enchanted("minecraft:enchanted_book", "StoredEnchantments", true));
+ CompoundTag before = source.copy();
try {
- LegacyPlayerDataFixes.update(new RecordingFixer(mutation), DefaultTypeReferences.PLAYER, source, 704);
+ LegacyPlayerDataFixes.update(new RecordingFixer(mutation), DataFixTypes.PLAYER, source, 704);
fail("An unpairable native inventory result must fail closed");
} catch (IllegalStateException expected) { assertEquals(before, source); }
}
- private static CompoundNBT convert(CompoundNBT source, int version) {
- return LegacyPlayerDataFixes.update(DataFixesManager.getDataFixer(), DefaultTypeReferences.PLAYER, source, version);
+ private static CompoundTag convert(CompoundTag source, int version) {
+ return LegacyPlayerDataFixes.update(DataFixers.getDataFixer(), DataFixTypes.PLAYER, source, version);
}
- static CompoundNBT player(String inventory, CompoundNBT item) {
- CompoundNBT player = new CompoundNBT();
+ static CompoundTag player(String inventory, CompoundTag item) {
+ CompoundTag player = new CompoundTag();
player.putInt("DataVersion", 512);
- ListNBT items = new ListNBT();
+ ListTag items = new ListTag();
items.add(item);
player.put(inventory, items);
return player;
}
- static CompoundNBT stack(String id, int damage) {
- CompoundNBT item = new CompoundNBT();
+ static CompoundTag stack(String id, int damage) {
+ CompoundTag item = new CompoundTag();
item.putString("id", id);
item.putByte("Count", (byte) 1);
item.putByte("Slot", (byte) 0);
item.putShort("Damage", (short) damage);
- item.put("tag", new CompoundNBT());
+ item.put("tag", new CompoundTag());
return item;
}
- static CompoundNBT enchanted(String id, String key, boolean named) {
- CompoundNBT item = stack(id, 17);
- CompoundNBT entry = new CompoundNBT();
+ static CompoundTag enchanted(String id, String key, boolean named) {
+ CompoundTag item = stack(id, 17);
+ CompoundTag entry = new CompoundTag();
if (named) entry.putString("id", "steamadvantage:steam_capacity");
else entry.putShort("id", (short) 32);
entry.putShort("lvl", (short) 3);
- ListNBT enchantments = new ListNBT();
+ ListTag enchantments = new ListTag();
enchantments.add(entry);
item.getCompound("tag").put(key, enchantments);
return item;
}
- static CompoundNBT item(CompoundNBT root, String inventory, int index) { return root.getList(inventory, 10).getCompound(index); }
- static CompoundNBT enchantment(CompoundNBT item, String key) { return item.getCompound("tag").getList(key, 10).getCompound(0); }
+ static CompoundTag item(CompoundTag root, String inventory, int index) { return root.getList(inventory, 10).getCompound(index); }
+ static CompoundTag enchantment(CompoundTag item, String key) { return item.getCompound("tag").getList(key, 10).getCompound(0); }
private static final class RecordingFixer implements DataFixer {
- private final Consumer mutation;
+ private final Consumer mutation;
final List calls = new ArrayList<>();
- RecordingFixer(Consumer mutation) { this.mutation = mutation; }
+ RecordingFixer(Consumer mutation) { this.mutation = mutation; }
@Override public Dynamic update(DSL.TypeReference type, Dynamic input, int from, int to) {
- assertSame(TypeReferences.PLAYER, type);
+ assertSame(References.PLAYER, type);
calls.add(from + "->" + to);
- mutation.accept((CompoundNBT) input.getValue());
+ mutation.accept((CompoundTag) input.getValue());
return input;
}
@Override public Schema getSchema(int version) { throw new AssertionError("Not used by the wrapper"); }
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerTransformerTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerTransformerTest.java
similarity index 90%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerTransformerTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerTransformerTest.java
index 06004e9d..05e3e645 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyPlayerTransformerTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyPlayerTransformerTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -16,15 +16,15 @@
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.MethodNode;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.datafix.DataFixesManager;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.util.datafix.DataFixers;
import static org.junit.Assert.*;
public class LegacyPlayerTransformerTest {
- private static final String NATIVE = "net/minecraft/nbt/NBTUtil";
- private static final String WRAPPER = "zone/moddev/mc/poweradvantage/migration/LegacyPlayerDataFixes";
- private static final String DESC = "(Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/util/datafix/DefaultTypeReferences;"
- + "Lnet/minecraft/nbt/CompoundNBT;I)Lnet/minecraft/nbt/CompoundNBT;";
+ private static final String NATIVE = "net/minecraft/nbt/NbtUtils";
+ private static final String WRAPPER = "zone/moddev/mc/basepower/migration/LegacyPlayerDataFixes";
+ private static final String DESC = "(Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/util/datafix/DataFixTypes;"
+ + "Lnet/minecraft/nbt/CompoundTag;I)Lnet/minecraft/nbt/CompoundTag;";
private static final String[][] TARGETS = {{"PlayerData", "legacy_player_file"}, {"ServerWorldInfo", "legacy_embedded_player"}};
@Test public void exactNativeLoosePlayerLoadAndEmbeddedUpdateArePatched() throws Exception {
@@ -58,7 +58,7 @@ public class LegacyPlayerTransformerTest {
}
@Test public void transformedNativeEmbeddedGetterExecutesAndDoesNotReconvert() throws Exception {
- net.minecraft.util.registry.Bootstrap.bootStrap();
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
ClassNode node = nativeClass("ServerWorldInfo");
transform(node, "legacy_embedded_player");
ClassWriter writer = new ClassWriter(0);
@@ -68,11 +68,11 @@ public class LegacyPlayerTransformerTest {
Class> define() { return defineClass(null, bytes, 0, bytes.length); }
}.define();
for (int version : new int[] {512, 1343}) {
- CompoundNBT source = LegacyPlayerDataFixesTest.player("Inventory", LegacyPlayerDataFixesTest
+ CompoundTag source = LegacyPlayerDataFixesTest.player("Inventory", LegacyPlayerDataFixesTest
.enchanted("minecraft:enchanted_book", "StoredEnchantments", true));
- CompoundNBT before = source.copy();
+ CompoundTag before = source.copy();
Object info = embeddedInfo(type, source, version);
- CompoundNBT result = (CompoundNBT) type.getMethod("getLoadedPlayerTag").invoke(info);
+ CompoundTag result = (CompoundTag) type.getMethod("getLoadedPlayerTag").invoke(info);
assertEquals("steamadvantage:steam_capacity", LegacyPlayerDataFixesTest.enchantment(
LegacyPlayerDataFixesTest.item(result, "Inventory", 0), "StoredEnchantments").getString("id"));
assertSame("The native upgraded flag must prevent repeat conversion", result,
@@ -163,13 +163,14 @@ private static int calls(ClassNode node, String owner) {
private static ClassNode nativeClass(String name) throws Exception {
ClassNode node = new ClassNode();
- try (InputStream input = resource("/net/minecraft/world/storage/" + name + ".class")) {
+ String nativeName = name.equals("PlayerData") ? "PlayerDataStorage" : "PrimaryLevelData";
+ try (InputStream input = resource("/net/minecraft/world/level/storage/" + nativeName + ".class")) {
new ClassReader(input).accept(node, 0);
}
return node;
}
- private static Object embeddedInfo(Class> type, CompoundNBT source, int version) throws Exception {
+ private static Object embeddedInfo(Class> type, CompoundTag source, int version) throws Exception {
// The real private constructor only assigns fields. The getter needs its
// fixer/version/player arguments, not a world, generator, or live server.
for (Constructor> constructor : type.getDeclaredConstructors()) {
@@ -182,7 +183,7 @@ private static Object embeddedInfo(Class> type, CompoundNBT source, int versio
if (types[i] == long.class) args[i] = 0L;
if (types[i] == float.class) args[i] = 0F;
}
- args[0] = DataFixesManager.getDataFixer();
+ args[0] = DataFixers.getDataFixer();
args[1] = version;
args[2] = source;
constructor.setAccessible(true);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyTransformerOrderTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyTransformerOrderTest.java
similarity index 82%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyTransformerOrderTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/LegacyTransformerOrderTest.java
index 5c742c3b..945cf784 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/LegacyTransformerOrderTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyTransformerOrderTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -24,9 +24,9 @@ public class LegacyTransformerOrderTest {
private static void check(boolean baseFirst, boolean productionNames) throws Exception {
String[][] targets = {
- {"net/minecraft/world/storage/SaveFormat", "legacy_world_info", "prepareLegacyWorld"},
- {"net/minecraft/world/chunk/storage/ChunkLoader", "legacy_chunk_status", "prepareLegacyChunk"},
- {"net/minecraft/world/gen/WorldGenRegion", "legacy_worldgen_guard", "shouldBlockWorldgenWrite"}
+ {"net/minecraft/world/level/storage/LevelStorageSource", "legacy_world_info", "prepareLegacyWorld"},
+ {"net/minecraft/world/level/chunk/storage/ChunkStorage", "legacy_chunk_status", "prepareLegacyChunk"},
+ {"net/minecraft/server/level/WorldGenRegion", "legacy_worldgen_guard", "shouldBlockWorldgenWrite"}
};
for (String[] target : targets) {
ClassNode node = new ClassNode();
@@ -35,13 +35,13 @@ private static void check(boolean baseFirst, boolean productionNames) throws Exc
if (!method.name.startsWith("<")) method.name = "test_srg_" + method.name;
transform(node, target[1], baseFirst);
transform(node, target[1], !baseFirst);
- assertEquals(target[0], 1, calls(node, "poweradvantage", target[2]));
+ assertEquals(target[0], 1, calls(node, "basepower", target[2]));
assertEquals(target[0], 1, calls(node, "basemetals", target[2]));
if (target[1].equals("legacy_chunk_status")) {
- assertEquals(1, calls(node, "poweradvantage", "finalizeLegacyChunk"));
+ assertEquals(1, calls(node, "basepower", "finalizeLegacyChunk"));
assertEquals(1, calls(node, "basemetals", "finalizeLegacyChunk"));
- assertEquals(1, calls(node, "poweradvantage", "copyChunkForMigration"));
- assertEquals(1, calls(node, "poweradvantage", "prepareLegacyEntities"));
+ assertEquals(1, calls(node, "basepower", "copyChunkForMigration"));
+ assertEquals(1, calls(node, "basepower", "prepareLegacyEntities"));
assertEntityPreparationOrder(node);
}
}
@@ -62,7 +62,7 @@ private static void assertEntityPreparationOrder(ClassNode node) {
assertEquals("Both mod item migrations must precede entity DFU", 2, preparations);
entitiesPrepared = true;
}
- if (call.owner.equals(node.name) && call.desc.equals("(Lnet/minecraft/nbt/CompoundNBT;)I")) {
+ if (call.owner.equals(node.name) && call.desc.equals("(Lnet/minecraft/nbt/CompoundTag;)I")) {
assertTrue("Entity staging must precede native version handling", entitiesPrepared);
}
}
@@ -71,9 +71,9 @@ private static void assertEntityPreparationOrder(ClassNode node) {
private static void transform(ClassNode node, String target, boolean base) throws Exception {
String mod = base ? "basemetals" : "poweradvantage";
- String path = base ? "/coremods/basemetals_116_compatibility.js" : "/coremods/poweradvantage_116_migration.js";
+ String path = base ? "/coremods/basemetals_117_compatibility.js" : "/coremods/poweradvantage_116_migration.js";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
- assertNotNull("Transformer tests require the Java 8 test toolchain", engine);
+ assertNotNull("Transformer tests require Forge's bundled Nashorn engine", engine);
try (InputStreamReader reader = new InputStreamReader(getResource(path), StandardCharsets.UTF_8)) { engine.eval(reader); }
engine.put("targetClass", node);
assertSame(node, engine.eval("initializeCoreMod()." + mod + "_" + target + ".transformer(targetClass)"));
diff --git a/src/test/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadataTest.java b/src/test/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadataTest.java
new file mode 100644
index 00000000..0c97f013
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/migration/LegacyWorldMetadataTest.java
@@ -0,0 +1,88 @@
+package zone.moddev.mc.basepower.migration;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Set;
+
+import cyano.poweradvantage.api.migration.LegacyMigrationApi;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.StringTag;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class LegacyWorldMetadataTest {
+ @BeforeClass public static void registerAliases() {
+ AdvantageLegacyMigrations.registerPowerAdvantage();
+ LegacyMigrationApi.registerNamespaceAlias("test_old_expansion", "test_new_expansion");
+ }
+
+ @Test public void migratesSavedModAndPackNamesWithoutTouchingRegistries() {
+ CompoundTag root = world(mods(mod("poweradvantage", "2.4.1"), mod("unrelated", "1")),
+ packs("vanilla", "mod:poweradvantage", "file/poweradvantage.zip", "mod:unrelated"),
+ packs("mod:test_old_expansion"));
+ CompoundTag expected = world(mods(mod("basepower", "2.4.1"), mod("unrelated", "1")),
+ packs("vanilla", "mod:basepower", "file/poweradvantage.zip", "mod:unrelated"),
+ packs("mod:test_new_expansion"));
+ LegacyWorldMetadata.remap(root, Set.of("basepower", "test_new_expansion")::contains);
+ assertEquals(expected, root);
+ LegacyWorldMetadata.remap(root, Set.of("basepower", "test_new_expansion")::contains);
+ assertEquals(expected, root);
+ }
+
+ @Test public void keepsTheCurrentPackChoiceAndVersionIfAlreadyRecorded() {
+ CompoundTag root = world(mods(mod("poweradvantage", "2.4.1"), mod("basepower", "2.4.9")),
+ packs("vanilla", "mod:poweradvantage"), packs("mod:basepower"));
+ LegacyWorldMetadata.remap(root, Set.of("basepower")::contains);
+ assertEquals(world(mods(mod("basepower", "2.4.9")), packs("vanilla"), packs("mod:basepower")), root);
+ }
+
+ @Test public void leavesUninstalledReplacementsAndStillInstalledLegacyModsVisible() {
+ CompoundTag root = world(mods(mod("poweradvantage", "2.4.1"), mod("test_old_expansion", "1")),
+ packs("mod:test_old_expansion", "mod:invalid:id"), packs("mod:poweradvantage"));
+ CompoundTag original = root.copy();
+ LegacyWorldMetadata.remap(root, Set.of("poweradvantage", "basepower")::contains);
+ assertEquals(original, root);
+ }
+
+ @Test public void doesNotAddMissingMetadataToPreFlatteningOrNewWorlds() {
+ CompoundTag root = new CompoundTag();
+ root.put("FML", mod("poweradvantage", "2.4.0"));
+ CompoundTag original = root.copy();
+ LegacyWorldMetadata.remap(root, Set.of("basepower")::contains);
+ assertEquals(original, root);
+ }
+
+ private static CompoundTag world(ListTag mods, ListTag enabled, ListTag disabled) {
+ CompoundTag root = new CompoundTag(), fml = new CompoundTag(), data = new CompoundTag();
+ CompoundTag registries = new CompoundTag(), packs = new CompoundTag();
+ registries.putString("witness", "poweradvantage:fluid_pipe");
+ fml.put("LoadingModList", mods);
+ fml.put("Registries", registries);
+ packs.put("Enabled", enabled);
+ packs.put("Disabled", disabled);
+ data.put("DataPacks", packs);
+ root.put("fml", fml);
+ root.put("Data", data);
+ return root;
+ }
+
+ private static ListTag packs(String... ids) {
+ ListTag result = new ListTag();
+ for (String id : ids) result.add(StringTag.valueOf(id));
+ return result;
+ }
+
+ private static ListTag mods(CompoundTag... mods) {
+ ListTag result = new ListTag();
+ for (CompoundTag mod : mods) result.add(mod);
+ return result;
+ }
+
+ private static CompoundTag mod(String id, String version) {
+ CompoundTag mod = new CompoundTag();
+ mod.putString("ModId", id);
+ mod.putString("ModVersion", version);
+ return mod;
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/RetiredProfessionSnapshotTest.java b/src/test/java/zone/moddev/mc/basepower/migration/RetiredProfessionSnapshotTest.java
similarity index 64%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/RetiredProfessionSnapshotTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/RetiredProfessionSnapshotTest.java
index 179777ed..d3a20a84 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/RetiredProfessionSnapshotTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/RetiredProfessionSnapshotTest.java
@@ -1,15 +1,15 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
import org.junit.Test;
import static org.junit.Assert.*;
public class RetiredProfessionSnapshotTest {
@Test public void removesOnlyRetiredVanillaIndexAndIsIdempotent() {
for (String namespace : new String[] {"FML", "fml"}) {
- CompoundNBT root = world(namespace, "minecraft:farmer");
- CompoundNBT player = new CompoundNBT();
+ CompoundTag root = world(namespace, "minecraft:farmer");
+ CompoundTag player = new CompoundTag();
player.putInt("XpLevel", 34);
root.put("Player", player);
assertTrue(LegacyWorldDataHook.removeRetiredVanillaProfessionRegistry(root));
@@ -20,25 +20,25 @@ public class RetiredProfessionSnapshotTest {
}
@Test public void preservesCustomProfessionIndexInsteadOfHidingMissingMappings() {
- CompoundNBT root = world("fml", "othermod:machinist");
- CompoundNBT before = root.copy();
+ CompoundTag root = world("fml", "othermod:machinist");
+ CompoundTag before = root.copy();
assertFalse(LegacyWorldDataHook.removeRetiredVanillaProfessionRegistry(root));
assertEquals(before, root);
}
- private static CompoundNBT world(String namespace, String profession) {
- CompoundNBT entry = new CompoundNBT();
+ private static CompoundTag world(String namespace, String profession) {
+ CompoundTag entry = new CompoundTag();
entry.putString("K", profession);
entry.putInt("V", 1);
- ListNBT ids = new ListNBT();
+ ListTag ids = new ListTag();
ids.add(entry);
- CompoundNBT snapshot = new CompoundNBT();
+ CompoundTag snapshot = new CompoundTag();
snapshot.put("ids", ids);
- CompoundNBT registries = new CompoundNBT();
+ CompoundTag registries = new CompoundTag();
registries.put("minecraft:villagerprofessions", snapshot);
- CompoundNBT fml = new CompoundNBT();
+ CompoundTag fml = new CompoundTag();
fml.put("Registries", registries);
- CompoundNBT root = new CompoundNBT();
+ CompoundTag root = new CompoundTag();
root.put(namespace, fml);
return root;
}
diff --git a/src/test/java/zone/moddev/mc/basepower/migration/SeparateEntityStorageTest.java b/src/test/java/zone/moddev/mc/basepower/migration/SeparateEntityStorageTest.java
new file mode 100644
index 00000000..29932dd3
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/migration/SeparateEntityStorageTest.java
@@ -0,0 +1,68 @@
+package zone.moddev.mc.basepower.migration;
+
+import java.util.UUID;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class SeparateEntityStorageTest {
+ @BeforeClass public static void bootstrap() {
+ net.minecraft.SharedConstants.tryDetectVersion();
+ net.minecraft.server.Bootstrap.bootStrap();
+ AdvantageLegacyMigrations.registerPowerAdvantage();
+ }
+
+ @Test public void separateEntityStoragePreservesForeignPayloadsAndPasseningTreesOnACopy() {
+ CompoundTag source = fixture();
+ CompoundTag before = source.copy();
+ CompoundTag staged = LegacyWorldDataHook.prepareEntityChunkForMigration(source);
+ assertEquals(before, source);
+ assertNotSame(source, staged);
+ assertEquals(0, staged.getList("Entities", 10).size());
+ LegacyWorldDataHook.finalizeLegacyChunk(staged);
+ CompoundTag entity = staged.getList("Entities", 10).getCompound(0);
+ assertEquals("foreign:machine_witness", entity.getString("id"));
+ assertEquals("keep this payload", entity.getString("ForeignState"));
+ assertEquals(new UUID(0, 17), entity.getUUID("UUID"));
+ assertEquals(new UUID(9, 0), entity.getList("Passengers", 10).getCompound(0).getUUID("UUID"));
+ assertArrayEquals(new int[] {7, -8}, staged.getIntArray("Position"));
+ assertFalse(staged.contains("AdvantageLegacyEntityDataFix"));
+ assertEquals(before, source);
+ }
+
+ @Test(expected = IllegalStateException.class) public void missingChunkCoordinatesFailClosed() {
+ CompoundTag source = fixture();
+ source.remove("Position");
+ LegacyWorldDataHook.prepareEntityChunkForMigration(source);
+ }
+
+ @Test(expected = IllegalStateException.class) public void malformedChunkCoordinatesFailClosed() {
+ CompoundTag source = fixture();
+ source.putIntArray("Position", new int[] {7});
+ LegacyWorldDataHook.prepareEntityChunkForMigration(source);
+ }
+
+ private static CompoundTag fixture() {
+ CompoundTag root = new CompoundTag();
+ root.putInt("DataVersion", 2586);
+ root.putIntArray("Position", new int[] {7, -8});
+ CompoundTag entity = new CompoundTag();
+ entity.putString("id", "foreign:machine_witness");
+ entity.putString("ForeignState", "keep this payload");
+ entity.putLong("UUIDMost", 0);
+ entity.putLong("UUIDLeast", 17);
+ CompoundTag passenger = new CompoundTag();
+ passenger.putString("id", "foreign:passenger");
+ passenger.putLong("UUIDMost", 9);
+ passenger.putLong("UUIDLeast", 0);
+ ListTag riders = new ListTag();
+ riders.add(passenger);
+ entity.put("Passengers", riders);
+ ListTag entities = new ListTag();
+ entities.add(entity);
+ root.put("Entities", entities);
+ return root;
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryMappingEventTest.java b/src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryMappingEventTest.java
similarity index 98%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryMappingEventTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryMappingEventTest.java
index 49ed2a40..02340093 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryMappingEventTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryMappingEventTest.java
@@ -1,8 +1,8 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
import java.lang.reflect.Proxy;
import java.util.Collections;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.event.RegistryEvent.MissingMappings;
import net.minecraftforge.registries.ForgeRegistryEntry;
import net.minecraftforge.registries.IForgeRegistry;
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemapsTest.java b/src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemapsTest.java
similarity index 73%
rename from src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemapsTest.java
rename to src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemapsTest.java
index c064ad30..90991ef3 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/migration/VanillaRegistryRemapsTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/migration/VanillaRegistryRemapsTest.java
@@ -1,10 +1,20 @@
-package zone.moddev.mc.poweradvantage.migration;
+package zone.moddev.mc.basepower.migration;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
import org.junit.Test;
import static org.junit.Assert.*;
public class VanillaRegistryRemapsTest {
+ @Test public void retainsBothGrassPathRegistrySnapshots() {
+ expect("block", "grass_path", "dirt_path");
+ expect("item", "grass_path", "dirt_path");
+ assertNull(VanillaRegistryRemaps.replacement(id("entity_type"), id("grass_path")));
+ }
+
+ @Test public void retainsTheRenamedBerryPickingSound() {
+ expect("sound_event", "item.sweet_berries.pick_from_bush", "block.sweet_berry_bush.pick_berries");
+ assertNull(VanillaRegistryRemaps.replacement(id("item"), id("item.sweet_berries.pick_from_bush")));
+ }
@Test public void retainsTheRenamedPigmanEntity() {
expect("entity_type", "zombie_pigman", "zombified_piglin");
}
diff --git a/src/test/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPackTest.java b/src/test/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPackTest.java
new file mode 100644
index 00000000..74be58b5
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/recipe/MaterialPolicyPackTest.java
@@ -0,0 +1,59 @@
+package zone.moddev.mc.basepower.recipe;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.packs.PackType;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class MaterialPolicyPackTest {
+ @Test public void enabledPolicyAddsOnlyTheHistoricalAliases() throws Exception {
+ MaterialPolicyPack pack = new MaterialPolicyPack(true, true);
+ for (String path : new String[] {"rubber", "ingots/rubber"}) {
+ JsonObject tag = read(pack, path);
+ assertFalse(tag.get("replace").getAsBoolean());
+ assertEquals(1, tag.getAsJsonArray("values").size());
+ assertEquals("basepower:bioplastic_ingot", tag.getAsJsonArray("values").get(0).getAsString());
+ }
+ JsonObject solder = read(pack, "solder");
+ assertEquals(3, solder.getAsJsonArray("values").size());
+ int index = 0;
+ for (String metal : new String[] {"lead", "tin", "silver"}) {
+ JsonObject entry = solder.getAsJsonArray("values").get(index++).getAsJsonObject();
+ assertEquals("#forge:ingots/" + metal, entry.get("id").getAsString());
+ assertFalse(entry.get("required").getAsBoolean());
+ }
+ }
+
+ @Test public void disabledPolicyDoesNotReplacePlayerTagsOrSupplyAliases() throws Exception {
+ MaterialPolicyPack pack = new MaterialPolicyPack(false, false);
+ for (String path : new String[] {"rubber", "ingots/rubber", "solder"}) {
+ JsonObject tag = read(pack, path);
+ assertFalse(tag.get("replace").getAsBoolean());
+ assertEquals(0, tag.getAsJsonArray("values").size());
+ }
+ }
+
+ @Test public void policyOnlySuppliesServerDataAndHonoursResourceDiscovery() {
+ MaterialPolicyPack pack = new MaterialPolicyPack(true, false);
+ ResourceLocation rubber = new ResourceLocation("forge", "tags/items/rubber.json");
+ assertTrue(pack.hasResource(PackType.SERVER_DATA, rubber));
+ assertFalse(pack.hasResource(PackType.CLIENT_RESOURCES, rubber));
+ assertEquals(3, pack.getResources(PackType.SERVER_DATA, "forge", "tags/items", 99,
+ name -> name.endsWith(".json")).size());
+ assertTrue(pack.getResources(PackType.SERVER_DATA, "basepower", "tags/items", 99,
+ name -> true).isEmpty());
+ assertTrue(pack.getResources(PackType.CLIENT_RESOURCES, "forge", "tags/items", 99,
+ name -> true).isEmpty());
+ }
+
+ private static JsonObject read(MaterialPolicyPack pack, String path) throws Exception {
+ try (InputStream stream = pack.getResource(PackType.SERVER_DATA,
+ new ResourceLocation("forge", "tags/items/" + path + ".json"))) {
+ return new JsonParser().parse(new String(stream.readAllBytes(), StandardCharsets.UTF_8)).getAsJsonObject();
+ }
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/recipe/MaterialTagsTest.java b/src/test/java/zone/moddev/mc/basepower/recipe/MaterialTagsTest.java
similarity index 70%
rename from src/test/java/zone/moddev/mc/poweradvantage/recipe/MaterialTagsTest.java
rename to src/test/java/zone/moddev/mc/basepower/recipe/MaterialTagsTest.java
index 36964876..767638bb 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/recipe/MaterialTagsTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/recipe/MaterialTagsTest.java
@@ -1,27 +1,27 @@
-package zone.moddev.mc.poweradvantage.recipe;
+package zone.moddev.mc.basepower.recipe;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
-import net.minecraft.item.Item;
-import net.minecraft.item.Items;
-import net.minecraft.tags.ITag;
-import net.minecraft.tags.ITagCollection;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.Items;
+import net.minecraft.tags.Tag;
+import net.minecraft.tags.TagCollection;
+import net.minecraft.resources.ResourceLocation;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class MaterialTagsTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void updatesNativeImmutableCollectionWithoutLosingUserEntries() {
- ITagCollection
- tags = fixture();
+ TagCollection
- tags = fixture();
try {
tags.getAllTags().put(new ResourceLocation("test", "must_be_immutable"), null);
fail("Fixture must reproduce native immutable tag maps");
} catch (UnsupportedOperationException expected) { }
- ITagCollection
- original = tags;
+ TagCollection
- original = tags;
tags = MaterialTags.applyPolicy(tags, Items.APPLE, true, true);
assertFalse(tag(original, "forge:rubber").contains(Items.APPLE));
assertTrue(tag(tags, "forge:rubber").contains(Items.STICK));
@@ -36,23 +36,23 @@ public class MaterialTagsTest {
}
@Test public void disabledOptionsDoNotAddAliases() {
- ITagCollection
- tags = fixture();
+ TagCollection
- tags = fixture();
assertSame(tags, MaterialTags.applyPolicy(tags, Items.APPLE, false, false));
assertFalse(tag(tags, "forge:rubber").contains(Items.APPLE));
assertTrue(tag(tags, "forge:solder").getValues().isEmpty());
assertTrue(tag(tags, "test:unrelated").contains(Items.REDSTONE));
}
- private static ITag
- tag(ITagCollection
- tags, String name) { return tags.getTagOrEmpty(new ResourceLocation(name)); }
+ private static Tag
- tag(TagCollection
- tags, String name) { return tags.getTagOrEmpty(new ResourceLocation(name)); }
- private static ITagCollection
- fixture() {
- Map> tags = new LinkedHashMap<>();
+ private static TagCollection
- fixture() {
+ Map> tags = new LinkedHashMap<>();
tags.put(new ResourceLocation("forge:rubber"), singleton(Items.STICK));
tags.put(new ResourceLocation("forge:ingots/lead"), singleton(Items.IRON_INGOT));
tags.put(new ResourceLocation("forge:ingots/tin"), singleton(Items.GOLD_INGOT));
tags.put(new ResourceLocation("test:unrelated"), singleton(Items.REDSTONE));
- return ITagCollection.of(tags);
+ return TagCollection.of(tags);
}
- private static ITag
- singleton(Item item) { return ITag.fromSet(java.util.Collections.singleton(item)); }
+ private static Tag
- singleton(Item item) { return Tag.fromSet(java.util.Collections.singleton(item)); }
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/recipe/PartsLootTest.java b/src/test/java/zone/moddev/mc/basepower/recipe/PartsLootTest.java
similarity index 60%
rename from src/test/java/zone/moddev/mc/poweradvantage/recipe/PartsLootTest.java
rename to src/test/java/zone/moddev/mc/basepower/recipe/PartsLootTest.java
index fac61954..b83c8057 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/recipe/PartsLootTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/recipe/PartsLootTest.java
@@ -1,7 +1,7 @@
-package zone.moddev.mc.poweradvantage.recipe;
+package zone.moddev.mc.basepower.recipe;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.loot.LootTable;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.level.storage.loot.LootTable;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -10,31 +10,31 @@ public class PartsLootTest {
LootTable table = LootTable.lootTable().build();
ResourceLocation chest = new ResourceLocation("minecraft", "chests/simple_dungeon");
PartsLoot.addPools(table, chest, true, mod -> true);
- Object original = table.getPool("steamadvantage:legacy_parts");
+ Object original = table.getPool("basesteam:legacy_parts");
assertNotNull(original);
PartsLoot.addPools(table, chest, true, mod -> true);
- assertSame(original, table.getPool("steamadvantage:legacy_parts"));
- assertNotNull(table.getPool("poweradvantage:legacy_parts"));
- assertNotNull(table.getPool("electricadvantage:legacy_parts"));
+ assertSame(original, table.getPool("basesteam:legacy_parts"));
+ assertNotNull(table.getPool("basepower:legacy_parts"));
+ assertNotNull(table.getPool("baseelectric:legacy_parts"));
}
@Test public void keepsEndCityExceptionAndAbsentMods() {
LootTable table = LootTable.lootTable().build();
PartsLoot.addPools(table, new ResourceLocation("minecraft", "chests/end_city_treasure"), true,
- mod -> !mod.equals("steamadvantage"));
- assertNull(table.getPool("poweradvantage:legacy_parts"));
- assertNull(table.getPool("steamadvantage:legacy_parts"));
- assertNotNull(table.getPool("electricadvantage:legacy_parts"));
+ mod -> !mod.equals("basesteam"));
+ assertNull(table.getPool("basepower:legacy_parts"));
+ assertNull(table.getPool("basesteam:legacy_parts"));
+ assertNotNull(table.getPool("baseelectric:legacy_parts"));
}
@Test public void leavesUnrelatedTablesAndDisabledLootUnchanged() {
for (String id : new String[] {"minecraft:chests/desert_pyramid", "othermod:chests/simple_dungeon"}) {
LootTable table = LootTable.lootTable().build();
PartsLoot.addPools(table, new ResourceLocation(id), true, mod -> true);
- assertNull(table.getPool("poweradvantage:legacy_parts"));
+ assertNull(table.getPool("basepower:legacy_parts"));
}
LootTable table = LootTable.lootTable().build();
PartsLoot.addPools(table, new ResourceLocation("minecraft", "chests/simple_dungeon"), false, mod -> true);
- assertNull(table.getPool("poweradvantage:legacy_parts"));
+ assertNull(table.getPool("basepower:legacy_parts"));
}
}
diff --git a/src/test/java/zone/moddev/mc/basepower/registry/MachineGuiTitleTest.java b/src/test/java/zone/moddev/mc/basepower/registry/MachineGuiTitleTest.java
new file mode 100644
index 00000000..8f403e25
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/registry/MachineGuiTitleTest.java
@@ -0,0 +1,33 @@
+package zone.moddev.mc.basepower.registry;
+
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.entity.ChestBlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class MachineGuiTitleTest {
+ @BeforeClass public static void bootstrap() {
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
+ }
+
+ @Test public void defaultTitleUsesTheBlockTranslationInsteadOfAnInternalInventoryName() {
+ assertEquals("block.minecraft.chest", ((TranslatableComponent) MachineGUIRegistry.menuTitle(
+ new ChestBlockEntity(net.minecraft.core.BlockPos.ZERO, Blocks.CHEST.defaultBlockState()), Blocks.CHEST)).getKey());
+ }
+
+ @Test public void renamedMachinesKeepThePlayersFullName() {
+ ChestBlockEntity tile = new ChestBlockEntity(net.minecraft.core.BlockPos.ZERO, Blocks.CHEST.defaultBlockState());
+ tile.setCustomName(new TextComponent("John's oil tank"));
+ assertEquals("John's oil tank", MachineGUIRegistry.menuTitle(tile, Blocks.CHEST).getString());
+ }
+
+ @Test public void unnamedTilesWithoutInventoryNamesStillHaveATranslatableTitle() {
+ BlockEntity tile = new BlockEntity(BlockEntityType.CHEST, net.minecraft.core.BlockPos.ZERO, Blocks.CHEST.defaultBlockState()) {};
+ assertEquals("block.minecraft.chest", ((TranslatableComponent) MachineGUIRegistry.menuTitle(tile, Blocks.CHEST)).getKey());
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/BuildWorkflowContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/BuildWorkflowContractTest.java
similarity index 87%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/BuildWorkflowContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/BuildWorkflowContractTest.java
index 7352aff0..87a359b8 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/BuildWorkflowContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/BuildWorkflowContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import org.junit.Test;
@@ -33,13 +33,14 @@ public class BuildWorkflowContractTest {
int policy = workflow.indexOf("run: git config --global core.autocrlf false");
int checkout = workflow.indexOf("- name: Check out pinned Base Metals");
assertTrue(name, policy >= 0 && checkout > policy);
- assertTrue(name, workflow.contains("ref: 995f6cc4dd2d5eecc628a42e5c43fa5390c24bca"));
- assertTrue(name, workflow.contains("BaseMetals-3.1.1.116051-deobf.jar"));
- assertTrue(name, workflow.contains("ref: a113e5d767169189f0e35ade1e173a12d550b00e"));
- assertTrue(name, workflow.contains("master-1.16.5"));
+ assertTrue(name, workflow.contains("ref: 0deeeeecdbbc1fbcdecf910c59477de8efe164d7"));
+ assertTrue(name, workflow.contains("BaseMetals-3.1.1.117011-deobf.jar"));
+ assertTrue(name, workflow.contains("ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf"));
+ assertTrue(name, workflow.contains("master-1.17.1"));
assertTrue(name, workflow.contains("java-version: '25.0.3+9.0.LTS'"));
assertTrue(name, workflow.contains("java-version: '17.0.1+12'"));
assertTrue(name, workflow.contains("java-version: '8.0.502+7'"));
+ assertTrue(name, workflow.contains("java-version: '16.0.2+7'"));
assertTrue(name, workflow.contains("-Porg.gradle.java.installations.paths="));
assertTrue(name, workflow.contains("-Porg.gradle.java.installations.auto-detect=false"));
assertTrue(name, workflow.contains("-Porg.gradle.java.installations.auto-download=false"));
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/ClientResourceContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/ClientResourceContractTest.java
similarity index 92%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/ClientResourceContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/ClientResourceContractTest.java
index 64247224..7a836406 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/ClientResourceContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/ClientResourceContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -20,7 +20,7 @@
public class ClientResourceContractTest {
private static final Path ROOT = Paths.get("src/main/resources");
- private static final Path ASSETS = ROOT.resolve("assets/poweradvantage");
+ private static final Path ASSETS = ROOT.resolve("assets/basepower");
@Test public void blockstatesResolveLiteralModelPaths() throws IOException {
for (Path file : jsonFiles(ASSETS.resolve("blockstates"))) {
@@ -62,7 +62,7 @@ public class ClientResourceContractTest {
JsonObject locale = read(file);
for (Map.Entry entry : locale.entrySet()) {
String key = entry.getKey();
- if ((key.startsWith("tile.poweradvantage.") || key.startsWith("item.poweradvantage."))
+ if ((key.startsWith("tile.basepower.") || key.startsWith("item.basepower."))
&& key.endsWith(".name")) {
String modern = key.substring(0, key.length() - ".name".length());
if (modern.startsWith("tile.")) modern = "block." + modern.substring("tile.".length());
@@ -76,10 +76,10 @@ public class ClientResourceContractTest {
JsonObject locale = read(ASSETS.resolve("lang/en_us.json"));
for (Path file : jsonFiles(ASSETS.resolve("blockstates"))) {
String id = file.getFileName().toString().replace(".json", "");
- assertTrue("Missing block name: " + id, locale.has("block.poweradvantage." + id));
+ assertTrue("Missing block name: " + id, locale.has("block.basepower." + id));
}
for (String id : new String[] {"crude_oil", "refined_oil"}) {
- assertEquals(locale.get("item.bucket." + id), locale.get("item.poweradvantage." + id + "_bucket"));
+ assertEquals(locale.get("item.bucket." + id), locale.get("item.basepower." + id + "_bucket"));
}
}
@@ -101,7 +101,7 @@ private static void verifyReference(String reference, String directory, String s
String path = parts.length == 2 ? parts[1] : parts[0];
if (directory.equals("models") && namespace.equals("minecraft") && path.startsWith("builtin/")) return;
String resource = "assets/" + namespace + "/" + directory + "/" + path + suffix;
- boolean found = namespace.equals("poweradvantage") ? Files.isRegularFile(ROOT.resolve(resource))
+ boolean found = namespace.equals("basepower") ? Files.isRegularFile(ROOT.resolve(resource))
: ClientResourceContractTest.class.getClassLoader().getResource(resource) != null;
assertTrue(file + " references missing resource " + resource, found);
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/ConverterEnergyDirectionTest.java b/src/test/java/zone/moddev/mc/basepower/resources/ConverterEnergyDirectionTest.java
similarity index 97%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/ConverterEnergyDirectionTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/ConverterEnergyDirectionTest.java
index 5739ba8e..67c985cf 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/ConverterEnergyDirectionTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/ConverterEnergyDirectionTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import java.io.InputStream;
import org.junit.Test;
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/CreativeTabInitializationTest.java b/src/test/java/zone/moddev/mc/basepower/resources/CreativeTabInitializationTest.java
similarity index 80%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/CreativeTabInitializationTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/CreativeTabInitializationTest.java
index b9609164..f23a617d 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/CreativeTabInitializationTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/CreativeTabInitializationTest.java
@@ -1,8 +1,8 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import java.lang.reflect.Modifier;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.init.ItemGroups;
+import zone.moddev.mc.basepower.init.ItemGroups;
import static org.junit.Assert.assertTrue;
public class CreativeTabInitializationTest {
diff --git a/src/test/java/zone/moddev/mc/basepower/resources/NativeBlockEntityFactoryTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativeBlockEntityFactoryTest.java
new file mode 100644
index 00000000..2f4dffde
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativeBlockEntityFactoryTest.java
@@ -0,0 +1,67 @@
+package zone.moddev.mc.basepower.resources;
+
+import cyano.poweradvantage.api.GUIBlock;
+import java.io.InputStream;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.entity.BlockEntityType;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.material.Material;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.tree.AbstractInsnNode;
+import org.objectweb.asm.tree.ClassNode;
+import org.objectweb.asm.tree.MethodInsnNode;
+import org.objectweb.asm.tree.MethodNode;
+import zone.moddev.mc.basepower.init.Entities;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor;
+import static org.junit.Assert.*;
+
+public class NativeBlockEntityFactoryTest {
+ @BeforeClass public static void bootstrap() {
+ net.minecraft.SharedConstants.tryDetectVersion();
+ net.minecraft.server.Bootstrap.bootStrap();
+ }
+
+ @Test public void nativeFactoriesKeepTheActualPositionAndFacing() {
+ BlockConveyor block = new BlockConveyor(Material.PISTON, 0.75F);
+ BlockEntityType old = Entities.CONVEYOR;
+ try {
+ Entities.CONVEYOR = BlockEntityType.Builder.of(TileEntityConveyor::new, block).build(null);
+ BlockPos position = new BlockPos(37, 83, -41);
+ BlockState state = block.defaultBlockState().setValue(BlockConveyor.FACING, net.minecraft.core.Direction.UP);
+ TileEntityConveyor placed = (TileEntityConveyor)block.newBlockEntity(position, state);
+ TileEntityConveyor restored = Entities.CONVEYOR.create(position, state);
+ for (TileEntityConveyor tile : new TileEntityConveyor[] {placed, restored}) {
+ assertEquals(position, tile.getBlockPos());
+ assertSame(state, tile.getBlockState());
+ assertSame(Entities.CONVEYOR, tile.getType());
+ assertNotNull(block.getTicker(null, state, Entities.CONVEYOR));
+ net.minecraft.nbt.CompoundTag saved = new net.minecraft.nbt.CompoundTag();
+ saved.putInt("x", 0);
+ tile.load(saved);
+ assertEquals("NBT cannot replace the native factory's final position", position, tile.getBlockPos());
+ }
+ assertNull(block.getTicker(null, state, BlockEntityType.CHEST));
+ } finally { Entities.CONVEYOR = old; }
+ }
+
+ @Test public void nativeTickersActuallyDispatchBothMachineFamilies() throws Exception {
+ ClassNode node = new ClassNode();
+ try (InputStream input = GUIBlock.class.getResourceAsStream("/cyano/poweradvantage/api/GUIBlock.class")) {
+ assertNotNull(input);
+ new ClassReader(input).accept(node, 0);
+ }
+ int powered = 0, conveyors = 0;
+ for (MethodNode method : node.methods) for (AbstractInsnNode instruction : method.instructions.toArray()) {
+ if (!(instruction instanceof MethodInsnNode)) continue;
+ MethodInsnNode call = (MethodInsnNode)instruction;
+ if (!call.name.equals("tick") || !call.desc.equals("()V")) continue;
+ if (call.owner.equals("cyano/poweradvantage/api/PoweredEntity")) powered++;
+ if (call.owner.equals("zone/moddev/mc/basepower/machines/conveyors/TileEntityConveyor")) conveyors++;
+ }
+ assertEquals(1, powered);
+ assertEquals(1, conveyors);
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeLootContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativeLootContractTest.java
similarity index 76%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/NativeLootContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/NativeLootContractTest.java
index d69b782f..3c52aa1f 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeLootContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativeLootContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -13,10 +13,10 @@ public class NativeLootContractTest {
private static final Path ROOT = Paths.get("src/main/resources");
@Test public void everyRegisteredBlockHasANativeLootTable() throws Exception {
- try (java.util.stream.Stream states = Files.list(ROOT.resolve("assets/poweradvantage/blockstates"))) {
+ try (java.util.stream.Stream states = Files.list(ROOT.resolve("assets/basepower/blockstates"))) {
for (Path file : (Iterable) states.filter(p -> p.toString().endsWith(".json"))::iterator) {
String id = file.getFileName().toString();
- JsonObject table = read(ROOT.resolve("data/poweradvantage/loot_tables/blocks").resolve(id));
+ JsonObject table = read(ROOT.resolve("data/basepower/loot_tables/blocks").resolve(id));
assertEquals(id, "minecraft:block", table.get("type").getAsString());
if (id.equals("crude_oil.json") || id.equals("refined_oil.json")) assertEquals(0, table.getAsJsonArray("pools").size());
else assertEquals(id, 1, table.getAsJsonArray("pools").size());
@@ -25,12 +25,12 @@ public class NativeLootContractTest {
}
@Test public void portableTankCopiesTheExistingItemKeysAndTerminalReturnsAPlainPipe() throws Exception {
- JsonObject table = read(ROOT.resolve("data/poweradvantage/loot_tables/blocks/fluid_storage_tank.json"));
+ JsonObject table = read(ROOT.resolve("data/basepower/loot_tables/blocks/fluid_storage_tank.json"));
String serialized = table.toString();
assertTrue(serialized.contains("\"source\":\"Tank.FluidName\",\"target\":\"FluidID\""));
assertTrue(serialized.contains("\"source\":\"Tank.Amount\",\"target\":\"Volume\""));
- JsonObject pipe = read(ROOT.resolve("data/poweradvantage/loot_tables/blocks/fluid_pipe_terminal.json"));
- assertEquals("poweradvantage:fluid_pipe", pipe.getAsJsonArray("pools").get(0).getAsJsonObject()
+ JsonObject pipe = read(ROOT.resolve("data/basepower/loot_tables/blocks/fluid_pipe_terminal.json"));
+ assertEquals("basepower:fluid_pipe", pipe.getAsJsonArray("pools").get(0).getAsJsonObject()
.getAsJsonArray("entries").get(0).getAsJsonObject().get("name").getAsString());
}
diff --git a/src/test/java/zone/moddev/mc/basepower/resources/NativeMachineDirtyStateTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativeMachineDirtyStateTest.java
new file mode 100644
index 00000000..cfd0530b
--- /dev/null
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativeMachineDirtyStateTest.java
@@ -0,0 +1,58 @@
+package zone.moddev.mc.basepower.resources;
+
+import static org.junit.Assert.*;
+import java.io.InputStream;
+import org.junit.Test;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.tree.AbstractInsnNode;
+import org.objectweb.asm.tree.ClassNode;
+import org.objectweb.asm.tree.MethodInsnNode;
+import org.objectweb.asm.tree.MethodNode;
+
+/** Wiring guard; stopped-region regression tests prove actual machine persistence. */
+public class NativeMachineDirtyStateTest {
+ private ClassNode production() throws Exception {
+ ClassNode node = new ClassNode();
+ try (InputStream input = getClass().getResourceAsStream("/cyano/poweradvantage/api/PoweredEntity.class")) {
+ assertNotNull(input);
+ new ClassReader(input).accept(node, 0);
+ }
+ return node;
+ }
+
+ private int calls(MethodNode method, String owner, String name) {
+ int count = 0;
+ for (AbstractInsnNode instruction : method.instructions.toArray()) {
+ if (instruction instanceof MethodInsnNode) {
+ MethodInsnNode call = (MethodInsnNode) instruction;
+ if (call.owner.equals(owner) && call.name.equals(name)) count++;
+ }
+ }
+ return count;
+ }
+
+ @Test public void timersAndExternalEnergyTransfersInvalidateTheSavedChunk() throws Exception {
+ int tick = 0, transfers = 0;
+ for (MethodNode method : production().methods) {
+ int marks = calls(method, "cyano/poweradvantage/api/PoweredEntity", "markMachineStateUnsaved");
+ if (method.name.equals("tick")) tick += marks;
+ if (method.name.equals("addEnergy")) transfers += marks;
+ }
+ assertEquals("A native machine tick must retain progress even without a GUI sync", 1, tick);
+ assertEquals("All three energy-transfer return paths must retain the changed buffer", 3, transfers);
+ }
+
+ @Test public void dirtyMarkUsesOnlyAnAlreadyLoadedChunkWithoutComparatorNotifications() throws Exception {
+ MethodNode mark = null;
+ for (MethodNode method : production().methods) if (method.name.equals("markMachineStateUnsaved")) mark = method;
+ assertNotNull("Missing native save invalidation", mark);
+ assertEquals(1, calls(mark, "net/minecraft/server/level/ServerChunkCache", "getChunkNow"));
+ assertEquals(1, calls(mark, "net/minecraft/world/level/chunk/LevelChunk", "setUnsaved"));
+ for (AbstractInsnNode instruction : mark.instructions.toArray()) if (instruction instanceof MethodInsnNode) {
+ String name = ((MethodInsnNode) instruction).name;
+ assertFalse("Dirty marking must not load chunks or send comparator/client updates: " + name,
+ name.equals("getChunk") || name.equals("getChunkAt") || name.equals("setChanged")
+ || name.equals("sendBlockUpdated") || name.equals("updateNeighbourForOutputSignal"));
+ }
+ }
+}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeMachinePropertyTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativeMachinePropertyTest.java
similarity index 73%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/NativeMachinePropertyTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/NativeMachinePropertyTest.java
index 1b916bf5..941ffe0e 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeMachinePropertyTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativeMachinePropertyTest.java
@@ -1,18 +1,18 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import cyano.poweradvantage.api.GUIBlock;
import cyano.poweradvantage.api.ConduitType;
import cyano.poweradvantage.api.simple.BlockSimplePowerConduit;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.registry.Bootstrap;
-import net.minecraft.world.IBlockReader;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.server.Bootstrap;
+import net.minecraft.world.level.BlockGetter;
import org.junit.BeforeClass;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyor;
-import zone.moddev.mc.poweradvantage.machines.conveyors.BlockConveyorFilter;
-import zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyor;
+import zone.moddev.mc.basepower.machines.conveyors.BlockConveyorFilter;
+import zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor;
import static org.junit.Assert.*;
public class NativeMachinePropertyTest {
@@ -36,7 +36,7 @@ public class NativeMachinePropertyTest {
private static final class MaterialMachine extends GUIBlock {
MaterialMachine() { super(Material.PISTON, 0.75F); }
- @Override public TileEntity newBlockEntity(IBlockReader world) { return null; }
+ @Override public BlockEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { return null; }
}
@Test public void conduitSubclassesCanChooseNativePropertiesWithoutReplacingNetworkBehavior() {
@@ -50,7 +50,7 @@ private static final class MaterialMachine extends GUIBlock {
private static final class PropertyMachine extends GUIBlock {
PropertyMachine(Block.Properties properties) { super(properties); }
- @Override public TileEntity newBlockEntity(IBlockReader world) { return null; }
+ @Override public BlockEntity newBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { return null; }
}
private static final class PropertyConduit extends BlockSimplePowerConduit {
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativePlatformContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativePlatformContractTest.java
similarity index 84%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/NativePlatformContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/NativePlatformContractTest.java
index cedbf671..e5ac92f8 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativePlatformContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativePlatformContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -26,18 +26,18 @@ public class NativePlatformContractTest {
}
@Test public void pinnedForgeFiresTagEventAfterBindingNativeCollections() throws Exception {
- ClassNode node = read("net/minecraft/tags/ITagCollectionSupplier");
+ ClassNode node = read("net/minecraft/tags/TagContainer");
int events = 0;
for (MethodNode method : node.methods) {
boolean installed = false;
for (AbstractInsnNode instruction : method.instructions.toArray()) {
if (instruction instanceof MethodInsnNode) {
MethodInsnNode call = (MethodInsnNode) instruction;
- if (call.owner.equals("net/minecraft/tags/TagRegistryManager")
+ if (call.owner.equals("net/minecraft/tags/StaticTags")
&& call.name.equals("resetAll")) installed = true;
}
if (instruction instanceof TypeInsnNode
- && ((TypeInsnNode) instruction).desc.equals("net/minecraftforge/event/TagsUpdatedEvent$VanillaTagTypes")) {
+ && ((TypeInsnNode) instruction).desc.equals("net/minecraftforge/event/TagsUpdatedEvent")) {
assertTrue("Bind tags before notifying observers", installed);
events++;
}
@@ -47,16 +47,16 @@ public class NativePlatformContractTest {
}
@Test public void nativeLootLoaderCallsForgeJsonHookAndNotTheRemovedAdvantageBridge() throws Exception {
- ClassNode node = read("net/minecraft/loot/LootTableManager");
+ ClassNode node = read("net/minecraft/world/level/storage/loot/LootTables");
int calls = 0;
for (MethodNode method : node.methods) for (AbstractInsnNode instruction : method.instructions.toArray()) {
if (!(instruction instanceof MethodInsnNode)) continue;
MethodInsnNode call = (MethodInsnNode) instruction;
- assertNotEquals("zone/moddev/mc/poweradvantage/recipe/PartsLoot", call.owner);
+ assertNotEquals("zone/moddev/mc/basepower/recipe/PartsLoot", call.owner);
if (call.owner.equals("net/minecraftforge/common/ForgeHooks") && call.name.equals("loadLootTable")) {
- assertEquals("(Lcom/google/gson/Gson;Lnet/minecraft/util/ResourceLocation;"
- + "Lcom/google/gson/JsonElement;ZLnet/minecraft/loot/LootTableManager;)"
- + "Lnet/minecraft/loot/LootTable;", call.desc);
+ assertEquals("(Lcom/google/gson/Gson;Lnet/minecraft/resources/ResourceLocation;"
+ + "Lcom/google/gson/JsonElement;ZLnet/minecraft/world/level/storage/loot/LootTables;)"
+ + "Lnet/minecraft/world/level/storage/loot/LootTable;", call.desc);
calls++;
}
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeTagReaderContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/NativeTagReaderContractTest.java
similarity index 58%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/NativeTagReaderContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/NativeTagReaderContractTest.java
index b1d682a3..1118ef2a 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/NativeTagReaderContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/NativeTagReaderContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -6,10 +6,10 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
-import net.minecraft.item.Item;
-import net.minecraft.item.Items;
-import net.minecraft.tags.ITag;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.Items;
+import net.minecraft.tags.Tag;
+import net.minecraft.resources.ResourceLocation;
import org.junit.BeforeClass;
import org.junit.Test;
import org.objectweb.asm.ClassReader;
@@ -20,40 +20,36 @@
import static org.junit.Assert.*;
public class NativeTagReaderContractTest {
- @BeforeClass public static void bootstrap() { net.minecraft.util.registry.Bootstrap.bootStrap(); }
+ @BeforeClass public static void bootstrap() { net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap(); }
@Test public void optionalSteelBarsUseTheNativeParserWithAndWithoutBaseMetals() throws Exception {
JsonObject json = new JsonParser().parse(new String(Files.readAllBytes(Paths.get(
"src/main/resources/data/forge/tags/items/bars/steel.json")), StandardCharsets.UTF_8)).getAsJsonObject();
assertFalse("Do not silently ignore an obsolete optional array", json.has("optional"));
- ITag.Builder builder = ITag.Builder.tag().addFromJson(json, "test");
- ITag
- absent = builder.
- build(id -> null, id -> null).get();
+ Tag.Builder builder = Tag.Builder.tag().addFromJson(json, "test");
+ Tag
- absent = builder.
- build(id -> null, id -> null).right().get();
assertTrue(absent.getValues().isEmpty());
- ITag
- present = builder.
- build(id -> null, id ->
- id.equals(new ResourceLocation("basemetals:steel_bars")) ? Items.IRON_BARS : null).get();
+ Tag
- present = builder.
- build(id -> null, id ->
+ id.equals(new ResourceLocation("basemetals:steel_bars")) ? Items.IRON_BARS : null).right().get();
assertEquals(java.util.Collections.singletonList(Items.IRON_BARS), present.getValues());
}
- @Test public void configuredAliasesAreAppliedInsideTheNativeReaderWithoutGlobalMutation() throws Exception {
+ @Test public void configuredAliasesUseANativeDataPackWithoutGlobalTagMutation() throws Exception {
ClassNode node = new ClassNode();
try (InputStream input = getClass().getResourceAsStream(
- "/zone/moddev/mc/poweradvantage/recipe/MaterialTags$1.class")) {
+ "/zone/moddev/mc/basepower/recipe/MaterialTags.class")) {
assertNotNull(input);
new ClassReader(input).accept(node, 0);
}
int policies = 0;
for (MethodNode method : node.methods) {
- boolean nativeLoaded = false;
for (AbstractInsnNode instruction : method.instructions.toArray()) {
if (!(instruction instanceof MethodInsnNode)) continue;
MethodInsnNode call = (MethodInsnNode) instruction;
- assertNotEquals("net/minecraft/tags/TagCollectionManager", call.owner);
- assertNotEquals("net/minecraft/tags/TagRegistryManager", call.owner);
- if (call.owner.equals("net/minecraft/tags/TagCollectionReader") && call.name.equals("load"))
- nativeLoaded = true;
- if (call.owner.equals("zone/moddev/mc/poweradvantage/recipe/MaterialTags")
- && call.name.equals("applyPolicy")) {
- assertTrue("Preserve and resolve data-pack entries before adding aliases", nativeLoaded);
+ assertNotEquals("net/minecraft/tags/SerializationTags", call.owner);
+ assertNotEquals("net/minecraft/tags/StaticTags", call.owner);
+ if (call.owner.equals("net/minecraft/server/packs/repository/Pack")
+ && call.name.equals("create")) {
policies++;
}
}
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/PersistenceRegistrationThreadTest.java b/src/test/java/zone/moddev/mc/basepower/resources/PersistenceRegistrationThreadTest.java
similarity index 92%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/PersistenceRegistrationThreadTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/PersistenceRegistrationThreadTest.java
index 11537adb..b32e9f5a 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/PersistenceRegistrationThreadTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/PersistenceRegistrationThreadTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import java.io.InputStream;
import org.junit.Test;
@@ -14,11 +14,11 @@
public class PersistenceRegistrationThreadTest {
@Test public void sharedForgeHookListIsOnlyUpdatedThroughQueuedSetup() throws Exception {
ClassNode node = new ClassNode();
- try (InputStream input = getClass().getResourceAsStream("/zone/moddev/mc/poweradvantage/PowerAdvantage.class")) {
+ try (InputStream input = getClass().getResourceAsStream("/zone/moddev/mc/basepower/PowerAdvantage.class")) {
assertNotNull(input);
new ClassReader(input).accept(node, 0);
}
- String hook = "zone/moddev/mc/poweradvantage/migration/LegacyWorldDataHook";
+ String hook = "zone/moddev/mc/basepower/migration/LegacyWorldDataHook";
int queuedRegistrations = 0;
for (MethodNode method : node.methods) {
boolean hookRunnable = false;
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeRegistrationThreadTest.java b/src/test/java/zone/moddev/mc/basepower/resources/RecipeRegistrationThreadTest.java
similarity index 92%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeRegistrationThreadTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/RecipeRegistrationThreadTest.java
index 1b1a7f12..2e727047 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeRegistrationThreadTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/RecipeRegistrationThreadTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import java.io.InputStream;
import org.junit.Test;
@@ -14,11 +14,11 @@
public class RecipeRegistrationThreadTest {
@Test public void sharedForgeConditionsAreRegisteredAfterParallelSetup() throws Exception {
ClassNode node = new ClassNode();
- try (InputStream input = getClass().getResourceAsStream("/zone/moddev/mc/poweradvantage/PowerAdvantage.class")) {
+ try (InputStream input = getClass().getResourceAsStream("/zone/moddev/mc/basepower/PowerAdvantage.class")) {
assertNotNull(input);
new ClassReader(input).accept(node, 0);
}
- String conditions = "zone/moddev/mc/poweradvantage/recipe/RecipeConditions";
+ String conditions = "zone/moddev/mc/basepower/recipe/RecipeConditions";
int queued = 0;
for (MethodNode method : node.methods) {
boolean registrationRunnable = false;
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeUnlockContractTest.java b/src/test/java/zone/moddev/mc/basepower/resources/RecipeUnlockContractTest.java
similarity index 80%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeUnlockContractTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/RecipeUnlockContractTest.java
index 6c026f38..5106191c 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/RecipeUnlockContractTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/RecipeUnlockContractTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -21,7 +21,7 @@
import static org.junit.Assert.*;
public class RecipeUnlockContractTest {
- private static final String MOD = "poweradvantage";
+ private static final String MOD = "basepower";
private static final Path DATA = Paths.get("src/main/resources/data", MOD);
private static final Set IGNORED = new LinkedHashSet<>(java.util.Arrays.asList(
"item:minecraft:stick", "item:minecraft:string", "item:minecraft:feather", "tag:forge:rods/wooden"));
@@ -54,7 +54,7 @@ public class RecipeUnlockContractTest {
assertEquals("Finding ONE ingredient must be enough: " + file, 1, items.size());
JsonObject predicate = items.get(0).getAsJsonObject();
assertEquals("Only an item or tag predicate is expected", 1, predicate.size());
- actual.add(predicateKey(predicate));
+ actual.add(unlockPredicateKey(predicate));
}
List choices = new ArrayList<>();
if (recipe.has("key")) {
@@ -111,6 +111,28 @@ private static String predicateKey(JsonObject predicate) {
return type + ":" + predicate.get(type).getAsString();
}
+ private static String unlockPredicateKey(JsonObject predicate) {
+ assertEquals("One explicit native ingredient predicate is required", 1, predicate.size());
+ if (predicate.has("tag")) return "tag:" + predicate.get("tag").getAsString();
+ assertTrue("Minecraft 1.17 ignores the old singular item advancement field", predicate.has("items"));
+ JsonArray items = predicate.getAsJsonArray("items");
+ assertEquals("Each criterion discovers exactly one recipe ingredient", 1, items.size());
+ return "item:" + items.get(0).getAsString();
+ }
+
+ @Test public void nativeParserDoesNotUnlockStarchForAnUnrelatedItem() throws IOException {
+ net.minecraft.SharedConstants.tryDetectVersion();
+ net.minecraft.server.Bootstrap.bootStrap();
+ JsonObject criterion = read(DATA.resolve("advancements/recipes/starch_from_potato.json"))
+ .getAsJsonObject("criteria").getAsJsonObject("has_ingredient_1");
+ JsonObject predicate = criterion.getAsJsonObject("conditions").getAsJsonArray("items").get(0).getAsJsonObject();
+ net.minecraft.advancements.critereon.ItemPredicate nativePredicate =
+ net.minecraft.advancements.critereon.ItemPredicate.fromJson(predicate);
+ assertTrue(nativePredicate.matches(new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.POTATO)));
+ assertFalse("An unrelated dirt stack must not satisfy the real native predicate",
+ nativePredicate.matches(new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.DIRT)));
+ }
+
private static void collect(JsonElement element, List result) {
if (element.isJsonArray()) for (JsonElement child : element.getAsJsonArray()) collect(child, result);
else result.add(element.getAsJsonObject());
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/resources/StarchRecipeTest.java b/src/test/java/zone/moddev/mc/basepower/resources/StarchRecipeTest.java
similarity index 82%
rename from src/test/java/zone/moddev/mc/poweradvantage/resources/StarchRecipeTest.java
rename to src/test/java/zone/moddev/mc/basepower/resources/StarchRecipeTest.java
index dab10709..4a6e7691 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/resources/StarchRecipeTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/resources/StarchRecipeTest.java
@@ -1,4 +1,4 @@
-package zone.moddev.mc.poweradvantage.resources;
+package zone.moddev.mc.basepower.resources;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -19,7 +19,7 @@ public class StarchRecipeTest {
JsonArray inputs = recipe.getAsJsonArray("ingredients");
assertEquals(1, inputs.size());
assertEquals(potatoes(), items(inputs.get(0).getAsJsonArray()));
- assertEquals("poweradvantage:starch", recipe.getAsJsonObject("result").get("item").getAsString());
+ assertEquals("basepower:starch", recipe.getAsJsonObject("result").get("item").getAsString());
assertEquals(1, recipe.getAsJsonObject("result").get("count").getAsInt());
}
@@ -27,13 +27,13 @@ public class StarchRecipeTest {
JsonObject recipe = read("crushing_potato_starch");
assertEquals("basemetals:crushing", recipe.get("type").getAsString());
assertEquals(potatoes(), items(recipe.getAsJsonArray("ingredient")));
- assertEquals("poweradvantage:starch", recipe.getAsJsonObject("result").get("item").getAsString());
+ assertEquals("basepower:starch", recipe.getAsJsonObject("result").get("item").getAsString());
assertEquals(1, recipe.getAsJsonObject("result").get("count").getAsInt());
}
private static JsonObject read(String name) throws Exception {
return new JsonParser().parse(new String(Files.readAllBytes(Paths.get(
- "src/main/resources/data/poweradvantage/recipes/" + name + ".json")), StandardCharsets.UTF_8)).getAsJsonObject();
+ "src/main/resources/data/basepower/recipes/" + name + ".json")), StandardCharsets.UTF_8)).getAsJsonObject();
}
private static Set potatoes() {
return new HashSet<>(java.util.Arrays.asList("minecraft:potato", "minecraft:poisonous_potato"));
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapterTest.java b/src/test/java/zone/moddev/mc/basepower/util/ForgeFluidAdapterTest.java
similarity index 91%
rename from src/test/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapterTest.java
rename to src/test/java/zone/moddev/mc/basepower/util/ForgeFluidAdapterTest.java
index 254ac9fa..fbf679b3 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/util/ForgeFluidAdapterTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/util/ForgeFluidAdapterTest.java
@@ -1,13 +1,13 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import cyano.poweradvantage.api.fluid.FluidStack;
import cyano.poweradvantage.api.fluid.FluidTank;
import cyano.poweradvantage.api.fluid.FluidTankInfo;
import cyano.poweradvantage.api.fluid.IAdvantageFluidHandler;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.fluid.WaterFluid;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.Direction;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.WaterFluid;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.Direction;
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
import org.junit.Test;
import org.junit.BeforeClass;
@@ -17,8 +17,8 @@ public class ForgeFluidAdapterTest {
private static Fluid WATER;
@BeforeClass public static void bootstrapNativeRegistries() {
- net.minecraft.util.registry.Bootstrap.bootStrap();
- WATER = net.minecraft.fluid.Fluids.WATER;
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
+ WATER = net.minecraft.world.level.material.Fluids.WATER;
}
@Test public void simulatesWithoutChangingTankOrInputThenExecutesExactAmount() {
@@ -26,7 +26,7 @@ public class ForgeFluidAdapterTest {
int[] changes = {0};
ForgeFluidAdapter adapter = new ForgeFluidAdapter(tank, Direction.NORTH, () -> changes[0]++);
net.minecraftforge.fluids.FluidStack offered = new net.minecraftforge.fluids.FluidStack(WATER, 1500);
- CompoundNBT tag = new CompoundNBT();
+ CompoundTag tag = new CompoundTag();
tag.putString("Owner", "preserve-me");
offered.setTag(tag);
assertEquals(1000, adapter.fill(offered, FluidAction.SIMULATE));
@@ -75,7 +75,7 @@ public class ForgeFluidAdapterTest {
@Test public void copiesBothDirectionsIncludingNbt() {
FluidStack source = new FluidStack(WATER, 700);
- source.tag = new CompoundNBT();
+ source.tag = new CompoundTag();
source.tag.putInt("batch", 7);
net.minecraftforge.fluids.FluidStack nativeStack = ForgeFluidAdapter.toForge(source);
FluidStack copy = ForgeFluidAdapter.fromForge(nativeStack);
diff --git a/src/test/java/zone/moddev/mc/poweradvantage/util/MachineCapabilitiesLifecycleTest.java b/src/test/java/zone/moddev/mc/basepower/util/MachineCapabilitiesLifecycleTest.java
similarity index 73%
rename from src/test/java/zone/moddev/mc/poweradvantage/util/MachineCapabilitiesLifecycleTest.java
rename to src/test/java/zone/moddev/mc/basepower/util/MachineCapabilitiesLifecycleTest.java
index 2da028dc..48145f3d 100644
--- a/src/test/java/zone/moddev/mc/poweradvantage/util/MachineCapabilitiesLifecycleTest.java
+++ b/src/test/java/zone/moddev/mc/basepower/util/MachineCapabilitiesLifecycleTest.java
@@ -1,11 +1,11 @@
-package zone.moddev.mc.poweradvantage.util;
+package zone.moddev.mc.basepower.util;
import java.lang.reflect.Constructor;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicBoolean;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.INBT;
-import net.minecraft.util.Direction;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.Tag;
+import net.minecraft.core.Direction;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
@@ -17,30 +17,15 @@
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import zone.moddev.mc.poweradvantage.machines.fluidmachines.MetalTankTileEntity;
+import zone.moddev.mc.basepower.machines.fluidmachines.MetalTankTileEntity;
import static org.junit.Assert.*;
public class MachineCapabilitiesLifecycleTest {
- private static Capability oldFluid;
- private static Capability oldItem;
- private static Capability oldEnergy;
-
@BeforeClass public static void nativeCapabilityTokens() throws Exception {
- net.minecraft.util.registry.Bootstrap.bootStrap();
- oldFluid = CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY;
- oldItem = CapabilityItemHandler.ITEM_HANDLER_CAPABILITY;
- oldEnergy = CapabilityEnergy.ENERGY;
- // Forge injects these in a real process. Headless tests install distinct real
- // Capability tokens without running a mod loader or changing registrations.
- CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY = token(IFluidHandler.class.getName());
- CapabilityItemHandler.ITEM_HANDLER_CAPABILITY = token(IItemHandler.class.getName());
- CapabilityEnergy.ENERGY = token(IEnergyStorage.class.getName());
- }
-
- @AfterClass public static void restoreTokens() {
- CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY = oldFluid;
- CapabilityItemHandler.ITEM_HANDLER_CAPABILITY = oldItem;
- CapabilityEnergy.ENERGY = oldEnergy;
+ net.minecraft.SharedConstants.tryDetectVersion(); net.minecraft.server.Bootstrap.bootStrap();
+ assertNotNull(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
+ assertNotNull(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
+ assertNotNull(CapabilityEnergy.ENERGY);
}
@Test public void chunkUnloadCannotRecreateAdaptersOnAnUnremovedTile() {
@@ -70,7 +55,7 @@ public class MachineCapabilitiesLifecycleTest {
@Test public void clearRemovedCreatesFreshOptionalsWithoutRevivingOldOnes() {
TestTank tank = new TestTank();
- tank.getTank().setFluid(new cyano.poweradvantage.api.fluid.FluidStack(net.minecraft.fluid.Fluids.WATER, 500));
+ tank.getTank().setFluid(new cyano.poweradvantage.api.fluid.FluidStack(net.minecraft.world.level.material.Fluids.WATER, 500));
LazyOptional old = tank.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null);
tank.onChunkUnloaded();
tank.clearRemoved();
@@ -106,8 +91,8 @@ public class MachineCapabilitiesLifecycleTest {
}
@Test public void conveyorsFollowTheSameUnloadAndRevivalContract() {
- zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor conveyor =
- new zone.moddev.mc.poweradvantage.machines.conveyors.TileEntityConveyor();
+ zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor conveyor =
+ new zone.moddev.mc.basepower.machines.conveyors.TileEntityConveyor(net.minecraft.core.BlockPos.ZERO, net.minecraft.world.level.block.Blocks.HOPPER.defaultBlockState());
LazyOptional old = conveyor.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
assertTrue(old.isPresent());
conveyor.onChunkUnloaded();
@@ -148,24 +133,14 @@ public class MachineCapabilitiesLifecycleTest {
assertFalse(reacquired.get());
}
- @SuppressWarnings("unchecked")
- private static Capability