diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 8a4ccb503..6859c6b9e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -36,7 +36,7 @@ body: If your Minecraft version isn't listed here, it means that it's no longer supported. In that case, don't create an issue. options: - Minecraft 1.18.2 - - Minecraft 1.16.5 + - Minecraft 1.19.2 validations: required: true - type: input diff --git a/CHANGELOG.md b/CHANGELOG.md index c4faa0055..9a2225b94 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed + +- Ported to Minecraft 1.19.2. + +## [v1.10.3] - 2022-08-06 + ### Fixed - Fixed Destructor dupe bug diff --git a/build.gradle b/build.gradle index c7f85197f..e0ffdb98a 100755 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ apply plugin: 'maven-publish' group = 'com.refinedmods' archivesBaseName = 'refinedstorage' -version = '1.10.3' +version = '1.11.0' if (System.getenv('GITHUB_SHA') != null) { version += '+' + System.getenv('GITHUB_SHA').substring(0, 7) @@ -50,7 +50,7 @@ tasks.withType(JavaCompile) { } minecraft { - mappings channel: 'official', version: '1.18.2' + mappings channel: 'official', version: '1.19.2' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { @@ -102,17 +102,18 @@ processResources { } dependencies { - minecraft 'net.minecraftforge:forge:1.18.2-40.1.48' + minecraft 'net.minecraftforge:forge:1.19.2-43.1.32' - compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.1.232:api") - runtimeOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.1.232") + compileOnly fg.deobf("mezz.jei:jei-1.19.2-common-api:11.3.0.262") + compileOnly fg.deobf("mezz.jei:jei-1.19.2-forge-api:11.3.0.262") + runtimeOnly fg.deobf("mezz.jei:jei-1.19.2-forge:11.3.0.262") - compileOnly fg.deobf('curse.maven:mouse-tweaks-60089:3578801') + compileOnly fg.deobf('curse.maven:mouse-tweaks-60089:3871353') - compileOnly fg.deobf('curse.maven:crafting-tweaks-233071:3584842') + compileOnly fg.deobf('curse.maven:crafting-tweaks-233071:3914007') - runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18.2-5.0.6.3") - compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18.2-5.0.6.3:api") + runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.19.2-5.1.1.0") + compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.19.2-5.1.1.0:api") } jar { @@ -137,7 +138,7 @@ if (System.getenv("CURSEFORGE_TOKEN") != null) { changelog = System.getenv("CHANGELOG") changelogType = 'markdown' releaseType = project.version.toString().contains('beta') ? 'beta' : (project.version.toString().contains('alpha') ? 'alpha' : 'release') - addGameVersion "1.18.2" + addGameVersion "1.19.2" mainArtifact(jar) { displayName = "v$project.version" } diff --git a/src/generated/resources/assets/refinedstorage/blockstates/black_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/black_disk_manipulator.json index c9875c4dd..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/black_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/black_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/black" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/black", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/black", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/black", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/blue_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/blue_disk_manipulator.json index 0ecece15c..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/blue_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/blue_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/blue" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/blue", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/blue", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/blue", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/brown_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/brown_disk_manipulator.json index 5cf775d69..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/brown_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/brown_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/brown" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/brown", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/brown", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/brown", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/cyan_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/cyan_disk_manipulator.json index d9d3dd3ee..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/cyan_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/cyan_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/cyan" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/cyan", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/cyan", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/cyan", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/disk_manipulator.json index ccdd9a38b..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/light_blue" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/light_blue", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/light_blue", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/light_blue", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/gray_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/gray_disk_manipulator.json index 21531f9c3..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/gray_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/gray_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/gray" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/gray", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/gray", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/gray", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/green_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/green_disk_manipulator.json index 12a5fd9e7..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/green_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/green_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/green" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/green", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/green", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/green", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/light_gray_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/light_gray_disk_manipulator.json index ebf4e850f..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/light_gray_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/light_gray_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/light_gray" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/light_gray", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/light_gray", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/light_gray", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/lime_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/lime_disk_manipulator.json index 1457c7fac..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/lime_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/lime_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/lime" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/lime", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/lime", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/lime", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/magenta_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/magenta_disk_manipulator.json index 1fc5bc778..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/magenta_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/magenta_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/magenta" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/magenta", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/magenta", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/magenta", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/orange_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/orange_disk_manipulator.json index f8a6e85d6..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/orange_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/orange_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/orange" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/orange", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/orange", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/orange", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/pink_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/pink_disk_manipulator.json index f65490ae8..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/pink_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/pink_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/pink" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/pink", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/pink", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/pink", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/purple_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/purple_disk_manipulator.json index e6b115eef..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/purple_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/purple_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/purple" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/purple", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/purple", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/purple", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/red_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/red_disk_manipulator.json index f12f3c8de..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/red_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/red_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/red" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/red", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/red", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/red", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/white_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/white_disk_manipulator.json index edcd42d25..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/white_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/white_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/white" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/white", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/white", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/white", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/blockstates/yellow_disk_manipulator.json b/src/generated/resources/assets/refinedstorage/blockstates/yellow_disk_manipulator.json index 9163018fe..d7bc1786a 100644 --- a/src/generated/resources/assets/refinedstorage/blockstates/yellow_disk_manipulator.json +++ b/src/generated/resources/assets/refinedstorage/blockstates/yellow_disk_manipulator.json @@ -1,34 +1,7 @@ { "variants": { - "connected=false,direction=north": { - "model": "refinedstorage:block/disk_manipulator/disconnected" - }, - "connected=true,direction=north": { - "model": "refinedstorage:block/disk_manipulator/yellow" - }, - "connected=false,direction=south": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 180 - }, - "connected=true,direction=south": { - "model": "refinedstorage:block/disk_manipulator/yellow", - "y": 180 - }, - "connected=false,direction=west": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 270 - }, - "connected=true,direction=west": { - "model": "refinedstorage:block/disk_manipulator/yellow", - "y": 270 - }, - "connected=false,direction=east": { - "model": "refinedstorage:block/disk_manipulator/disconnected", - "y": 90 - }, - "connected=true,direction=east": { - "model": "refinedstorage:block/disk_manipulator/yellow", - "y": 90 + "": { + "model": "refinedstorage:block/disk_manipulator/loader" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/black.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/black.json index 0ee52fc19..5a30b702f 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/black.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/black.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/black", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/black" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/blue.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/blue.json index 4c04d0bfe..c6579e654 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/blue.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/blue.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/blue", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/blue" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/brown.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/brown.json index 9fa3f5f7d..c73c95f1a 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/brown.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/brown.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/brown", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/brown" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/cyan.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/cyan.json index 4bf8e3b8f..222a5bf86 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/cyan.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/cyan.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/cyan", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/cyan" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/disconnected.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/disconnected.json index adc72d784..eb028766e 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/disconnected.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/disconnected.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/disconnected", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/disconnected" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/gray.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/gray.json index bd6418e27..c4889e805 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/gray.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/gray.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/gray", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/gray" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/green.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/green.json index 3fcf22935..874cf5c90 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/green.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/green.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/green", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/green" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_blue.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_blue.json index 6ba87df9e..c5661ba4a 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_blue.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_blue.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/light_blue", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/light_blue" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_gray.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_gray.json index f5712e3e4..96814e9a4 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_gray.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/light_gray.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/light_gray", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/light_gray" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/lime.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/lime.json index 7c01a3f71..8b6abd8d6 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/lime.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/lime.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/lime", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/lime" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/loader.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/loader.json new file mode 100644 index 000000000..6dcce063b --- /dev/null +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/loader.json @@ -0,0 +1,4 @@ +{ + "loader": "refinedstorage:disk_manipulator", + "render_type": "minecraft:cutout" +} \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/magenta.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/magenta.json index e2cb10b86..9e1b4cbb2 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/magenta.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/magenta.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/magenta", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/magenta" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/orange.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/orange.json index 1a1056feb..5d98b9f1f 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/orange.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/orange.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/orange", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/orange" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/pink.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/pink.json index 81104a85c..a1331baa9 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/pink.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/pink.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/pink", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/pink" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/purple.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/purple.json index 014d05f07..e29102849 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/purple.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/purple.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/purple", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/purple" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/red.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/red.json index da84cbdfe..5f1876563 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/red.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/red.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/red", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/red" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/white.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/white.json index 5c38c161a..04fee4a07 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/white.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/white.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/white", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/white" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/yellow.json b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/yellow.json index c577af3c4..935b5db4c 100644 --- a/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/yellow.json +++ b/src/generated/resources/assets/refinedstorage/models/block/disk_manipulator/yellow.json @@ -1,13 +1,13 @@ { "parent": "refinedstorage:block/cube_north_cutout", "textures": { - "particle": "refinedstorage:block/disk_manipulator/right", - "east": "refinedstorage:block/disk_manipulator/right", - "south": "refinedstorage:block/disk_manipulator/back", - "west": "refinedstorage:block/disk_manipulator/left", - "up": "refinedstorage:block/disk_manipulator/top", + "cutout": "refinedstorage:block/disk_manipulator/cutouts/yellow", "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/disk_manipulator/right", "north": "refinedstorage:block/disk_manipulator/front", - "cutout": "refinedstorage:block/disk_manipulator/cutouts/yellow" + "particle": "refinedstorage:block/disk_manipulator/right", + "south": "refinedstorage:block/disk_manipulator/back", + "up": "refinedstorage:block/disk_manipulator/top", + "west": "refinedstorage:block/disk_manipulator/left" } } \ No newline at end of file diff --git a/src/main/java/com/refinedmods/refinedstorage/RS.java b/src/main/java/com/refinedmods/refinedstorage/RS.java index a6a48c117..5f2a52697 100644 --- a/src/main/java/com/refinedmods/refinedstorage/RS.java +++ b/src/main/java/com/refinedmods/refinedstorage/RS.java @@ -10,10 +10,8 @@ import com.refinedmods.refinedstorage.network.NetworkHandler; import com.refinedmods.refinedstorage.setup.ClientSetup; import com.refinedmods.refinedstorage.setup.CommonSetup; import com.refinedmods.refinedstorage.setup.ServerSetup; -import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.DistExecutor; @@ -36,8 +34,11 @@ public final class RS { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onClientSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onModelBake); - FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onModelRegistry); + FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onRegisterAdditionalModels); FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onTextureStitch); + FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onRegisterModelGeometry); + FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onRegisterKeymappings); + FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::onRegisterColorBindings); MinecraftForge.EVENT_BUS.addListener(ClientSetup::addReloadListener); }); @@ -51,13 +52,14 @@ public final class RS { RSLootFunctions.register(); FMLJavaModLoadingContext.get().getModEventBus().addListener(CommonSetup::onCommonSetup); - FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(BlockEntityType.class, CommonSetup::onRegisterBlockEntities); - FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(RecipeSerializer.class, CommonSetup::onRegisterRecipeSerializers); - FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(MenuType.class, CommonSetup::onRegisterMenus); FMLJavaModLoadingContext.get().getModEventBus().addListener(CommonSetup::onRegisterCapabilities); FMLJavaModLoadingContext.get().getModEventBus().register(new DataGenerators()); FMLJavaModLoadingContext.get().getModEventBus().register(new CuriosIntegration()); + RSContainerMenus.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + RSBlockEntities.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + RSRecipeSerializers.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + API.deliver(); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/RSBlockEntities.java b/src/main/java/com/refinedmods/refinedstorage/RSBlockEntities.java index d69217568..3217fe7cf 100644 --- a/src/main/java/com/refinedmods/refinedstorage/RSBlockEntities.java +++ b/src/main/java/com/refinedmods/refinedstorage/RSBlockEntities.java @@ -1,90 +1,106 @@ package com.refinedmods.refinedstorage; +import com.refinedmods.refinedstorage.api.network.NetworkType; +import com.refinedmods.refinedstorage.api.network.grid.GridType; +import com.refinedmods.refinedstorage.apiimpl.storage.FluidStorageType; +import com.refinedmods.refinedstorage.apiimpl.storage.ItemStorageType; import com.refinedmods.refinedstorage.blockentity.*; import com.refinedmods.refinedstorage.blockentity.craftingmonitor.CraftingMonitorBlockEntity; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity; import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridBlockEntity; +import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraftforge.registries.ObjectHolder; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; -@ObjectHolder(RS.ID) public final class RSBlockEntities { - @ObjectHolder("controller") - public static final BlockEntityType CONTROLLER = null; - @ObjectHolder("creative_controller") - public static final BlockEntityType CREATIVE_CONTROLLER = null; - @ObjectHolder("detector") - public static final BlockEntityType DETECTOR = null; - @ObjectHolder("disk_drive") - public static final BlockEntityType DISK_DRIVE = null; - @ObjectHolder("exporter") - public static final BlockEntityType EXPORTER = null; - @ObjectHolder("external_storage") - public static final BlockEntityType EXTERNAL_STORAGE = null; - @ObjectHolder("grid") - public static final BlockEntityType GRID = null; - @ObjectHolder("crafting_grid") - public static final BlockEntityType CRAFTING_GRID = null; - @ObjectHolder("pattern_grid") - public static final BlockEntityType PATTERN_GRID = null; - @ObjectHolder("fluid_grid") - public static final BlockEntityType FLUID_GRID = null; - @ObjectHolder("importer") - public static final BlockEntityType IMPORTER = null; - @ObjectHolder("network_transmitter") - public static final BlockEntityType NETWORK_TRANSMITTER = null; - @ObjectHolder("network_receiver") - public static final BlockEntityType NETWORK_RECEIVER = null; - @ObjectHolder("relay") - public static final BlockEntityType RELAY = null; - @ObjectHolder("cable") - public static final BlockEntityType CABLE = null; - @ObjectHolder("1k_storage_block") - public static final BlockEntityType ONE_K_STORAGE_BLOCK = null; - @ObjectHolder("4k_storage_block") - public static final BlockEntityType FOUR_K_STORAGE_BLOCK = null; - @ObjectHolder("16k_storage_block") - public static final BlockEntityType SIXTEEN_K_STORAGE_BLOCK = null; - @ObjectHolder("64k_storage_block") - public static final BlockEntityType SIXTY_FOUR_K_STORAGE_BLOCK = null; - @ObjectHolder("creative_storage_block") - public static final BlockEntityType CREATIVE_STORAGE_BLOCK = null; - @ObjectHolder("64k_fluid_storage_block") - public static final BlockEntityType SIXTY_FOUR_K_FLUID_STORAGE_BLOCK = null; - @ObjectHolder("256k_fluid_storage_block") - public static final BlockEntityType TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK = null; - @ObjectHolder("1024k_fluid_storage_block") - public static final BlockEntityType THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK = null; - @ObjectHolder("4096k_fluid_storage_block") - public static final BlockEntityType FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK = null; - @ObjectHolder("creative_fluid_storage_block") - public static final BlockEntityType CREATIVE_FLUID_STORAGE_BLOCK = null; - @ObjectHolder("security_manager") - public static final BlockEntityType SECURITY_MANAGER = null; - @ObjectHolder("interface") - public static final BlockEntityType INTERFACE = null; - @ObjectHolder("fluid_interface") - public static final BlockEntityType FLUID_INTERFACE = null; - @ObjectHolder("wireless_transmitter") - public static final BlockEntityType WIRELESS_TRANSMITTER = null; - @ObjectHolder("storage_monitor") - public static final BlockEntityType STORAGE_MONITOR = null; - @ObjectHolder("constructor") - public static final BlockEntityType CONSTRUCTOR = null; - @ObjectHolder("destructor") - public static final BlockEntityType DESTRUCTOR = null; - @ObjectHolder("disk_manipulator") - public static final BlockEntityType DISK_MANIPULATOR = null; - @ObjectHolder("portable_grid") - public static final BlockEntityType PORTABLE_GRID = null; - @ObjectHolder("creative_portable_grid") - public static final BlockEntityType CREATIVE_PORTABLE_GRID = null; - @ObjectHolder("crafter") - public static final BlockEntityType CRAFTER = null; - @ObjectHolder("crafter_manager") - public static final BlockEntityType CRAFTER_MANAGER = null; - @ObjectHolder("crafting_monitor") - public static final BlockEntityType CRAFTING_MONITOR = null; + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, RS.ID); + + public static final RegistryObject> CONTROLLER = + REGISTRY.register("controller", () -> registerSynchronizationParameters(ControllerBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.NORMAL, pos, state), RSBlocks.CONTROLLER.getBlocks()).build(null))); + public static final RegistryObject> CREATIVE_CONTROLLER = + REGISTRY.register("creative_controller", () -> registerSynchronizationParameters(ControllerBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.CREATIVE, pos, state), RSBlocks.CREATIVE_CONTROLLER.getBlocks()).build(null))); + public static final RegistryObject> DETECTOR = + REGISTRY.register("detector", () -> registerSynchronizationParameters(DetectorBlockEntity.SPEC, BlockEntityType.Builder.of(DetectorBlockEntity::new, RSBlocks.DETECTOR.getBlocks()).build(null))); + public static final RegistryObject> DISK_DRIVE = + REGISTRY.register("disk_drive", () -> registerSynchronizationParameters(DiskDriveBlockEntity.SPEC, BlockEntityType.Builder.of(DiskDriveBlockEntity::new, RSBlocks.DISK_DRIVE.get()).build(null))); + public static final RegistryObject> EXPORTER = + REGISTRY.register("exporter", () -> registerSynchronizationParameters(ExporterBlockEntity.SPEC, BlockEntityType.Builder.of(ExporterBlockEntity::new, RSBlocks.EXPORTER.get()).build(null))); + public static final RegistryObject> EXTERNAL_STORAGE = + REGISTRY.register("external_storage", () -> registerSynchronizationParameters(ExternalStorageBlockEntity.SPEC, BlockEntityType.Builder.of(ExternalStorageBlockEntity::new, RSBlocks.EXTERNAL_STORAGE.get()).build(null))); + public static final RegistryObject> GRID = + REGISTRY.register("grid", () -> registerSynchronizationParameters(GridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.NORMAL, pos, state), RSBlocks.GRID.getBlocks()).build(null))); + public static final RegistryObject> CRAFTING_GRID = + REGISTRY.register("crafting_grid", () -> registerSynchronizationParameters(GridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.CRAFTING, pos, state), RSBlocks.CRAFTING_GRID.getBlocks()).build(null))); + public static final RegistryObject> PATTERN_GRID = + REGISTRY.register("pattern_grid", () -> registerSynchronizationParameters(GridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.PATTERN, pos, state), RSBlocks.PATTERN_GRID.getBlocks()).build(null))); + public static final RegistryObject> FLUID_GRID = + REGISTRY.register("fluid_grid", () -> registerSynchronizationParameters(GridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.FLUID, pos, state), RSBlocks.FLUID_GRID.getBlocks()).build(null))); + public static final RegistryObject> IMPORTER = + REGISTRY.register("importer", () -> registerSynchronizationParameters(ImporterBlockEntity.SPEC, BlockEntityType.Builder.of(ImporterBlockEntity::new, RSBlocks.IMPORTER.get()).build(null))); + public static final RegistryObject> NETWORK_TRANSMITTER = + REGISTRY.register("network_transmitter", () -> registerSynchronizationParameters(NetworkTransmitterBlockEntity.SPEC, BlockEntityType.Builder.of(NetworkTransmitterBlockEntity::new, RSBlocks.NETWORK_TRANSMITTER.getBlocks()).build(null))); + public static final RegistryObject> NETWORK_RECEIVER = + REGISTRY.register("network_receiver", () -> registerSynchronizationParameters(NetworkReceiverBlockEntity.SPEC, BlockEntityType.Builder.of(NetworkReceiverBlockEntity::new, RSBlocks.NETWORK_RECEIVER.getBlocks()).build(null))); + public static final RegistryObject> RELAY = + REGISTRY.register("relay", () -> registerSynchronizationParameters(RelayBlockEntity.SPEC, BlockEntityType.Builder.of(RelayBlockEntity::new, RSBlocks.RELAY.getBlocks()).build(null))); + public static final RegistryObject> CABLE = + REGISTRY.register("cable", () -> registerSynchronizationParameters(CableBlockEntity.SPEC, BlockEntityType.Builder.of(CableBlockEntity::new, RSBlocks.CABLE.get()).build(null))); + public static final RegistryObject> ONE_K_STORAGE_BLOCK = + REGISTRY.register("1k_storage_block", () -> registerSynchronizationParameters(StorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.ONE_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.ONE_K).get()).build(null))); + public static final RegistryObject> FOUR_K_STORAGE_BLOCK = + REGISTRY.register("4k_storage_block", () -> registerSynchronizationParameters(StorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.FOUR_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.FOUR_K).get()).build(null))); + public static final RegistryObject> SIXTEEN_K_STORAGE_BLOCK = + REGISTRY.register("16k_storage_block", () -> registerSynchronizationParameters(StorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.SIXTEEN_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.SIXTEEN_K).get()).build(null))); + public static final RegistryObject> SIXTY_FOUR_K_STORAGE_BLOCK = + REGISTRY.register("64k_storage_block", () -> registerSynchronizationParameters(StorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.SIXTY_FOUR_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.SIXTY_FOUR_K).get()).build(null))); + public static final RegistryObject> CREATIVE_STORAGE_BLOCK = + REGISTRY.register("creative_storage_block", () -> registerSynchronizationParameters(StorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.CREATIVE, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.CREATIVE).get()).build(null))); + public static final RegistryObject> SIXTY_FOUR_K_FLUID_STORAGE_BLOCK = + REGISTRY.register("64k_fluid_storage_block", () -> registerSynchronizationParameters(FluidStorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.SIXTY_FOUR_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.SIXTY_FOUR_K).get()).build(null))); + public static final RegistryObject> TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK = + REGISTRY.register("256k_fluid_storage_block", () -> registerSynchronizationParameters(FluidStorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.TWO_HUNDRED_FIFTY_SIX_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.TWO_HUNDRED_FIFTY_SIX_K).get()).build(null))); + public static final RegistryObject> THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK = + REGISTRY.register("1024k_fluid_storage_block", () -> registerSynchronizationParameters(FluidStorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.THOUSAND_TWENTY_FOUR_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.THOUSAND_TWENTY_FOUR_K).get()).build(null))); + public static final RegistryObject> FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK = + REGISTRY.register("4096k_fluid_storage_block", () -> registerSynchronizationParameters(FluidStorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.FOUR_THOUSAND_NINETY_SIX_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.FOUR_THOUSAND_NINETY_SIX_K).get()).build(null))); + public static final RegistryObject> CREATIVE_FLUID_STORAGE_BLOCK = + REGISTRY.register("creative_fluid_storage_block", () -> registerSynchronizationParameters(FluidStorageBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.CREATIVE, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.CREATIVE).get()).build(null))); + public static final RegistryObject> SECURITY_MANAGER = + REGISTRY.register("security_manager", () -> registerSynchronizationParameters(SecurityManagerBlockEntity.SPEC, BlockEntityType.Builder.of(SecurityManagerBlockEntity::new, RSBlocks.SECURITY_MANAGER.getBlocks()).build(null))); + public static final RegistryObject> INTERFACE = + REGISTRY.register("interface", () -> registerSynchronizationParameters(InterfaceBlockEntity.SPEC, BlockEntityType.Builder.of(InterfaceBlockEntity::new, RSBlocks.INTERFACE.get()).build(null))); + public static final RegistryObject> FLUID_INTERFACE = + REGISTRY.register("fluid_interface", () -> registerSynchronizationParameters(FluidInterfaceBlockEntity.SPEC, BlockEntityType.Builder.of(FluidInterfaceBlockEntity::new, RSBlocks.FLUID_INTERFACE.get()).build(null))); + public static final RegistryObject> WIRELESS_TRANSMITTER = + REGISTRY.register("wireless_transmitter", () -> registerSynchronizationParameters(WirelessTransmitterBlockEntity.SPEC, BlockEntityType.Builder.of(WirelessTransmitterBlockEntity::new, RSBlocks.WIRELESS_TRANSMITTER.getBlocks()).build(null))); + public static final RegistryObject> STORAGE_MONITOR = + REGISTRY.register("storage_monitor", () -> registerSynchronizationParameters(StorageMonitorBlockEntity.SPEC, BlockEntityType.Builder.of(StorageMonitorBlockEntity::new, RSBlocks.STORAGE_MONITOR.get()).build(null))); + public static final RegistryObject> CONSTRUCTOR = + REGISTRY.register("constructor", () -> registerSynchronizationParameters(ConstructorBlockEntity.SPEC, BlockEntityType.Builder.of(ConstructorBlockEntity::new, RSBlocks.CONSTRUCTOR.get()).build(null))); + public static final RegistryObject> DESTRUCTOR = + REGISTRY.register("destructor", () -> registerSynchronizationParameters(DestructorBlockEntity.SPEC, BlockEntityType.Builder.of(DestructorBlockEntity::new, RSBlocks.DESTRUCTOR.get()).build(null))); + public static final RegistryObject> DISK_MANIPULATOR = + REGISTRY.register("disk_manipulator", () -> registerSynchronizationParameters(DiskManipulatorBlockEntity.SPEC, BlockEntityType.Builder.of(DiskManipulatorBlockEntity::new, RSBlocks.DISK_MANIPULATOR.getBlocks()).build(null))); + public static final RegistryObject> PORTABLE_GRID = + REGISTRY.register("portable_grid", () -> registerSynchronizationParameters(PortableGridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new PortableGridBlockEntity(PortableGridBlockItem.Type.NORMAL, pos, state), RSBlocks.PORTABLE_GRID.get()).build(null))); + public static final RegistryObject> CREATIVE_PORTABLE_GRID = + REGISTRY.register("creative_portable_grid", () -> registerSynchronizationParameters(PortableGridBlockEntity.SPEC, BlockEntityType.Builder.of((pos, state) -> new PortableGridBlockEntity(PortableGridBlockItem.Type.CREATIVE, pos, state), RSBlocks.CREATIVE_PORTABLE_GRID.get()).build(null))); + public static final RegistryObject> CRAFTER = + REGISTRY.register("crafter", () -> registerSynchronizationParameters(CrafterBlockEntity.SPEC, BlockEntityType.Builder.of(CrafterBlockEntity::new, RSBlocks.CRAFTER.getBlocks()).build(null))); + public static final RegistryObject> CRAFTER_MANAGER = + REGISTRY.register("crafter_manager", () -> registerSynchronizationParameters(CrafterManagerBlockEntity.SPEC, BlockEntityType.Builder.of(CrafterManagerBlockEntity::new, RSBlocks.CRAFTER_MANAGER.getBlocks()).build(null))); + public static final RegistryObject> CRAFTING_MONITOR = + REGISTRY.register("crafting_monitor", () -> registerSynchronizationParameters(CraftingMonitorBlockEntity.SPEC, BlockEntityType.Builder.of(CraftingMonitorBlockEntity::new, RSBlocks.CRAFTING_MONITOR.getBlocks()).build(null))); + + private static BlockEntityType registerSynchronizationParameters(BlockEntitySynchronizationSpec spec, BlockEntityType t) { + spec.getParameters().forEach(BlockEntitySynchronizationManager::registerParameter); + return t; + } private RSBlockEntities() { } diff --git a/src/main/java/com/refinedmods/refinedstorage/RSContainerMenus.java b/src/main/java/com/refinedmods/refinedstorage/RSContainerMenus.java index 39ee4c51b..f9218d60d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/RSContainerMenus.java +++ b/src/main/java/com/refinedmods/refinedstorage/RSContainerMenus.java @@ -1,59 +1,41 @@ package com.refinedmods.refinedstorage; +import com.refinedmods.refinedstorage.blockentity.*; import com.refinedmods.refinedstorage.container.*; +import com.refinedmods.refinedstorage.container.factory.*; import net.minecraft.world.inventory.MenuType; -import net.minecraftforge.registries.ObjectHolder; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; -@ObjectHolder(RS.ID) public final class RSContainerMenus { - @ObjectHolder("controller") - public static final MenuType CONTROLLER = null; - @ObjectHolder("grid") - public static final MenuType GRID = null; - @ObjectHolder("detector") - public static final MenuType DETECTOR = null; - @ObjectHolder("exporter") - public static final MenuType EXPORTER = null; - @ObjectHolder("external_storage") - public static final MenuType EXTERNAL_STORAGE = null; - @ObjectHolder("filter") - public static final MenuType FILTER = null; - @ObjectHolder("importer") - public static final MenuType IMPORTER = null; - @ObjectHolder("network_transmitter") - public static final MenuType NETWORK_TRANSMITTER = null; - @ObjectHolder("relay") - public static final MenuType RELAY = null; - @ObjectHolder("disk_drive") - public static final MenuType DISK_DRIVE = null; - @ObjectHolder("storage_block") - public static final MenuType STORAGE_BLOCK = null; - @ObjectHolder("fluid_storage_block") - public static final MenuType FLUID_STORAGE_BLOCK = null; - @ObjectHolder("security_manager") - public static final MenuType SECURITY_MANAGER = null; - @ObjectHolder("interface") - public static final MenuType INTERFACE = null; - @ObjectHolder("fluid_interface") - public static final MenuType FLUID_INTERFACE = null; - @ObjectHolder("wireless_transmitter") - public static final MenuType WIRELESS_TRANSMITTER = null; - @ObjectHolder("storage_monitor") - public static final MenuType STORAGE_MONITOR = null; - @ObjectHolder("constructor") - public static final MenuType CONSTRUCTOR = null; - @ObjectHolder("destructor") - public static final MenuType DESTRUCTOR = null; - @ObjectHolder("disk_manipulator") - public static final MenuType DISK_MANIPULATOR = null; - @ObjectHolder("crafter") - public static final MenuType CRAFTER = null; - @ObjectHolder("crafter_manager") - public static final MenuType CRAFTER_MANAGER = null; - @ObjectHolder("crafting_monitor") - public static final MenuType CRAFTING_MONITOR = null; - @ObjectHolder("wireless_crafting_monitor") - public static final MenuType WIRELESS_CRAFTING_MONITOR = null; + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.MENU_TYPES, RS.ID); + + public static final RegistryObject> CONTROLLER = REGISTRY.register("controller", () -> IForgeMenuType.create(((windowId, inv, data) -> new ControllerContainerMenu(null, inv.player, windowId)))); + public static final RegistryObject> GRID = REGISTRY.register("grid", () -> IForgeMenuType.create(new GridContainerFactory())); + public static final RegistryObject> DETECTOR = REGISTRY.register("detector", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DetectorContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> EXPORTER = REGISTRY.register("exporter", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ExporterContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> EXTERNAL_STORAGE = REGISTRY.register("external_storage", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ExternalStorageContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> FILTER = REGISTRY.register("filter", () -> IForgeMenuType.create((windowId, inv, data) -> new FilterContainerMenu(inv.player, inv.getSelected(), windowId))); + public static final RegistryObject> IMPORTER = REGISTRY.register("importer", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ImporterContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> NETWORK_TRANSMITTER = REGISTRY.register("network_transmitter", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new NetworkTransmitterContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> RELAY = REGISTRY.register("relay", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new RelayContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> DISK_DRIVE = REGISTRY.register("disk_drive", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DiskDriveContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> STORAGE_BLOCK = REGISTRY.register("storage_block", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new StorageContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> FLUID_STORAGE_BLOCK = REGISTRY.register("fluid_storage_block", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new FluidStorageContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> SECURITY_MANAGER = REGISTRY.register("security_manager", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new SecurityManagerContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> INTERFACE = REGISTRY.register("interface", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new InterfaceContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> FLUID_INTERFACE = REGISTRY.register("fluid_interface", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new FluidInterfaceContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> WIRELESS_TRANSMITTER = REGISTRY.register("wireless_transmitter", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new WirelessTransmitterContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> STORAGE_MONITOR = REGISTRY.register("storage_monitor", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new StorageMonitorContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> CONSTRUCTOR = REGISTRY.register("constructor", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ConstructorContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> DESTRUCTOR = REGISTRY.register("destructor", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DestructorContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> DISK_MANIPULATOR = REGISTRY.register("disk_manipulator", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DiskManipulatorContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> CRAFTER = REGISTRY.register("crafter", () -> IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new CrafterContainerMenu(blockEntity, inv.player, windowId)))); + public static final RegistryObject> CRAFTER_MANAGER = REGISTRY.register("crafter_manager", () -> IForgeMenuType.create(new CrafterManagerContainerFactory())); + public static final RegistryObject> CRAFTING_MONITOR = REGISTRY.register("crafting_monitor", () -> IForgeMenuType.create(new CraftingMonitorContainerFactory())); + public static final RegistryObject> WIRELESS_CRAFTING_MONITOR = REGISTRY.register("wireless_crafting_monitor", () -> IForgeMenuType.create(new WirelessCraftingMonitorContainerFactory())); private RSContainerMenus() { } diff --git a/src/main/java/com/refinedmods/refinedstorage/RSItems.java b/src/main/java/com/refinedmods/refinedstorage/RSItems.java index dfef761f5..ef5e6b036 100644 --- a/src/main/java/com/refinedmods/refinedstorage/RSItems.java +++ b/src/main/java/com/refinedmods/refinedstorage/RSItems.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.item.*; import com.refinedmods.refinedstorage.item.blockitem.*; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.ColorMap; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -167,13 +168,13 @@ public final class RSItems { LATE_REGISTRATION.add(() -> { RSBlocks.CONTROLLER.forEach((color, block) -> { if (color != ColorMap.DEFAULT_COLOR) { - CONTROLLER.put(color, ITEMS.register(RSBlocks.CONTROLLER.get(color).getId().getPath(), () -> new ControllerBlockItem(RSBlocks.CONTROLLER.get(color).get(), color, new TranslatableComponent(RSBlocks.CONTROLLER.get(ColorMap.DEFAULT_COLOR).get().getDescriptionId())))); + CONTROLLER.put(color, ITEMS.register(RSBlocks.CONTROLLER.get(color).getId().getPath(), () -> new ControllerBlockItem(RSBlocks.CONTROLLER.get(color).get(), color, Component.translatable(RSBlocks.CONTROLLER.get(ColorMap.DEFAULT_COLOR).get().getDescriptionId())))); } }); RSBlocks.CREATIVE_CONTROLLER.forEach((color, block) -> { if (color != ColorMap.DEFAULT_COLOR) { - CREATIVE_CONTROLLER.put(color, ITEMS.register(RSBlocks.CREATIVE_CONTROLLER.get(color).getId().getPath(), () -> new ControllerBlockItem(RSBlocks.CREATIVE_CONTROLLER.get(color).get(), color, new TranslatableComponent(RSBlocks.CREATIVE_CONTROLLER.get(ColorMap.DEFAULT_COLOR).get().getDescriptionId())))); + CREATIVE_CONTROLLER.put(color, ITEMS.register(RSBlocks.CREATIVE_CONTROLLER.get(color).getId().getPath(), () -> new ControllerBlockItem(RSBlocks.CREATIVE_CONTROLLER.get(color).get(), color, Component.translatable(RSBlocks.CREATIVE_CONTROLLER.get(ColorMap.DEFAULT_COLOR).get().getDescriptionId())))); } }); }); diff --git a/src/main/java/com/refinedmods/refinedstorage/RSRecipeSerializers.java b/src/main/java/com/refinedmods/refinedstorage/RSRecipeSerializers.java new file mode 100644 index 000000000..2a2beb021 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/RSRecipeSerializers.java @@ -0,0 +1,21 @@ +package com.refinedmods.refinedstorage; + +import com.refinedmods.refinedstorage.recipe.CoverRecipe; +import com.refinedmods.refinedstorage.recipe.HollowCoverRecipe; +import com.refinedmods.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer; +import net.minecraft.core.Registry; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.registries.DeferredRegister; + +public final class RSRecipeSerializers { + public static final DeferredRegister> REGISTRY = DeferredRegister.create(Registry.RECIPE_SERIALIZER_REGISTRY, RS.ID); + + static { + REGISTRY.register("upgrade_with_enchanted_book", UpgradeWithEnchantedBookRecipeSerializer::new); + REGISTRY.register("cover_recipe", () -> CoverRecipe.SERIALIZER); + REGISTRY.register("hollow_cover_recipe", () -> HollowCoverRecipe.SERIALIZER); + } + + private RSRecipeSerializers() { + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPattern.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPattern.java index c7b524b33..8558fe018 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPattern.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPattern.java @@ -268,6 +268,11 @@ public class CraftingPattern implements ICraftingPattern { public static class DummyCraftingContainer extends CraftingContainer { public DummyCraftingContainer() { super(new AbstractContainerMenu(null, 0) { + @Override + public ItemStack quickMoveStack(Player p_38941_, int p_38942_) { + return ItemStack.EMPTY; + } + @Override public boolean stillValid(Player player) { return true; diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPatternFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPatternFactory.java index 3ef5fa45b..9b3876d73 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPatternFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/CraftingPatternFactory.java @@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPatternContainer import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; import com.refinedmods.refinedstorage.item.PatternItem; import net.minecraft.core.NonNullList; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; @@ -48,7 +48,7 @@ public class CraftingPatternFactory { } if (outputs.isEmpty() && fluidOutputs.isEmpty()) { - throw new CraftingPatternFactoryException(new TranslatableComponent("misc.refinedstorage.pattern.error.processing_no_outputs")); + throw new CraftingPatternFactoryException(Component.translatable("misc.refinedstorage.pattern.error.processing_no_outputs")); } } else { CraftingContainer craftingContainer = new CraftingPattern.DummyCraftingContainer(); @@ -72,10 +72,10 @@ public class CraftingPatternFactory { modifyCraftingInputsToUseAlternatives(recipe, inputs); } } else { - throw new CraftingPatternFactoryException(new TranslatableComponent("misc.refinedstorage.pattern.error.no_output")); + throw new CraftingPatternFactoryException(Component.translatable("misc.refinedstorage.pattern.error.no_output")); } } else { - throw new CraftingPatternFactoryException(new TranslatableComponent("misc.refinedstorage.pattern.error.recipe_does_not_exist")); + throw new CraftingPatternFactoryException(Component.translatable("misc.refinedstorage.pattern.error.recipe_does_not_exist")); } } } catch (CraftingPatternFactoryException e) { @@ -116,7 +116,7 @@ public class CraftingPatternFactory { for (ResourceLocation declaredAllowedTag : declaredAllowedTags) { if (!tagsOfItem.contains(declaredAllowedTag)) { throw new CraftingPatternFactoryException( - new TranslatableComponent( + Component.translatable( "misc.refinedstorage.pattern.error.tag_no_longer_applicable", declaredAllowedTag.toString(), input.getHoverName() @@ -162,7 +162,7 @@ public class CraftingPatternFactory { for (ResourceLocation declaredAllowedTag : declaredAllowedTags) { if (!tagsOfFluid.contains(declaredAllowedTag)) { throw new CraftingPatternFactoryException( - new TranslatableComponent( + Component.translatable( "misc.refinedstorage.pattern.error.tag_no_longer_applicable", declaredAllowedTag.toString(), input.getDisplayName() diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/ErrorCraftingMonitorElement.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/ErrorCraftingMonitorElement.java index 8b08cdc07..17d5c9855 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/ErrorCraftingMonitorElement.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/ErrorCraftingMonitorElement.java @@ -8,7 +8,6 @@ import com.refinedmods.refinedstorage.render.Styles; import com.refinedmods.refinedstorage.util.PacketBufferUtils; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import javax.annotation.Nullable; @@ -48,7 +47,7 @@ public class ErrorCraftingMonitorElement implements ICraftingMonitorElement { @Override public List getTooltip() { List items = new ArrayList<>(base.getTooltip()); - items.add(new TranslatableComponent(message).setStyle(Styles.RED)); + items.add(Component.translatable(message).setStyle(Styles.RED)); return items; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java index 4388e7362..6911adf80 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java @@ -118,7 +118,7 @@ public class FluidCraftingMonitorElement implements ICraftingMonitorElement { @Nullable @Override public List getTooltip() { - return Collections.singletonList(stack.getFluid().getAttributes().getDisplayName(stack)); + return Collections.singletonList(stack.getDisplayName()); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkListener.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkListener.java index b3e2a81b5..748d39eb2 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkListener.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkListener.java @@ -9,23 +9,23 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; public class NetworkListener { @SubscribeEvent - public void onLevelTick(TickEvent.WorldTickEvent e) { - if (!e.world.isClientSide() && e.phase == TickEvent.Phase.END) { - e.world.getProfiler().push("network ticking"); + public void onLevelTick(TickEvent.LevelTickEvent e) { + if (!e.level.isClientSide() && e.phase == TickEvent.Phase.END) { + e.level.getProfiler().push("network ticking"); - for (INetwork network : API.instance().getNetworkManager((ServerLevel) e.world).all()) { + for (INetwork network : API.instance().getNetworkManager((ServerLevel) e.level).all()) { network.update(); } - e.world.getProfiler().pop(); + e.level.getProfiler().pop(); - e.world.getProfiler().push("network node ticking"); + e.level.getProfiler().push("network node ticking"); - for (INetworkNode node : API.instance().getNetworkNodeManager((ServerLevel) e.world).all()) { + for (INetworkNode node : API.instance().getNetworkNodeManager((ServerLevel) e.level).all()) { node.update(); } - e.world.getProfiler().pop(); + e.level.getProfiler().pop(); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeListener.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeListener.java index 5fb43827f..12a004510 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeListener.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/NetworkNodeListener.java @@ -3,28 +3,28 @@ package com.refinedmods.refinedstorage.apiimpl.network; import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.api.util.Action; +import com.refinedmods.refinedstorage.util.LevelUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import com.refinedmods.refinedstorage.util.PlayerUtils; -import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LevelAccessor; -import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; public class NetworkNodeListener { @SubscribeEvent public void onBlockPlace(BlockEvent.EntityPlaceEvent e) { - if (!e.getWorld().isClientSide() && e.getEntity() instanceof Player) { + if (!e.getLevel().isClientSide() && e.getEntity() instanceof Player) { Player player = (Player) e.getEntity(); - INetworkNode placed = NetworkUtils.getNodeFromBlockEntity(e.getWorld().getBlockEntity(e.getPos())); + INetworkNode placed = NetworkUtils.getNodeFromBlockEntity(e.getLevel().getBlockEntity(e.getPos())); if (placed != null) { for (Direction facing : Direction.values()) { - INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getWorld().getBlockEntity(e.getBlockSnapshot().getPos().relative(facing))); + INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getLevel().getBlockEntity(e.getBlockSnapshot().getPos().relative(facing))); if (node != null && node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, player)) { LevelUtils.sendNoPermissionMessage(player); @@ -38,7 +38,7 @@ public class NetworkNodeListener { } } - discoverNode(e.getWorld(), e.getPos()); + discoverNode(e.getLevel(), e.getPos()); placed.setOwner(player.getGameProfile().getId()); } @@ -59,8 +59,8 @@ public class NetworkNodeListener { @SubscribeEvent public void onBlockBreak(BlockEvent.BreakEvent e) { - if (!e.getWorld().isClientSide()) { - INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getWorld().getBlockEntity(e.getPos())); + if (!e.getLevel().isClientSide()) { + INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getLevel().getBlockEntity(e.getPos())); if (node != null && node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, e.getPlayer())) { LevelUtils.sendNoPermissionMessage(e.getPlayer()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java index 1e2a4a127..751d90f57 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java @@ -43,7 +43,7 @@ public class GridManager implements IGridManager { return; } - NetworkHooks.openGui(player, new GridMenuProvider(grid.getLeft(), grid.getRight()), buf -> { + NetworkHooks.openScreen(player, new GridMenuProvider(grid.getLeft(), grid.getRight()), buf -> { buf.writeResourceLocation(id); buf.writeBoolean(pos != null); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridTab.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridTab.java index 06e2cc45f..578a20d17 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridTab.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridTab.java @@ -6,7 +6,8 @@ import com.refinedmods.refinedstorage.api.network.grid.IGridTab; import com.refinedmods.refinedstorage.api.render.IElementDrawer; import com.refinedmods.refinedstorage.api.util.IFilter; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -17,7 +18,7 @@ import java.util.List; public class GridTab implements IGridTab { private final List filters; @Nullable - private final TextComponent name; + private final MutableComponent name; @Nonnull private final ItemStack icon; @Nullable @@ -25,7 +26,7 @@ public class GridTab implements IGridTab { public GridTab(List filters, String name, @Nonnull ItemStack icon, @Nullable FluidStack fluidIcon) { this.filters = filters; - this.name = name.trim().isEmpty() ? null : new TextComponent(name); + this.name = name.trim().isEmpty() ? null : Component.literal(name); this.icon = icon; this.fluidIcon = fluidIcon; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java index 435298643..01a08b6b8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/FluidGridHandler.java @@ -15,8 +15,8 @@ import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Containers; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; import org.apache.commons.lang3.tuple.Pair; @@ -36,14 +36,14 @@ public class FluidGridHandler implements IFluidGridHandler { public void onExtract(ServerPlayer player, UUID id, boolean shift) { FluidStack stack = network.getFluidStorageCache().getList().get(id); - if (stack == null || stack.getAmount() < FluidAttributes.BUCKET_VOLUME || !network.getSecurityManager().hasPermission(Permission.EXTRACT, player) || !network.canRun()) { + if (stack == null || stack.getAmount() < FluidType.BUCKET_VOLUME || !network.getSecurityManager().hasPermission(Permission.EXTRACT, player) || !network.canRun()) { return; } NetworkUtils.extractBucketFromPlayerInventoryOrNetwork(player, network, bucket -> bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { network.getFluidStorageTracker().changed(player, stack.copy()); - FluidStack extracted = network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM); + FluidStack extracted = network.extractFluid(stack, FluidType.BUCKET_VOLUME, Action.PERFORM); fluidHandler.fill(extracted, IFluidHandler.FluidAction.EXECUTE); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java index 18b2aa447..e4d986d55 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java @@ -133,7 +133,7 @@ public class ItemGridHandler implements IItemGridHandler { int itemSize = item.getCount(); // We copy here because some mods change the NBT tag of an item after getting the stack limit - int maxItemSize = item.getItem().getItemStackLimit(item.copy()); + int maxItemSize = item.getItem().getMaxStackSize(item.copy()); boolean single = (flags & EXTRACT_SINGLE) == EXTRACT_SINGLE; diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableFluidGridHandler.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableFluidGridHandler.java index 1823e0d4e..fec61b53c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableFluidGridHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableFluidGridHandler.java @@ -10,8 +10,8 @@ import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Containers; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; import org.apache.commons.lang3.tuple.Pair; @@ -34,7 +34,7 @@ public class PortableFluidGridHandler implements IFluidGridHandler { FluidStack stack = portableGrid.getFluidCache().getList().get(id); - if (stack == null || stack.getAmount() < FluidAttributes.BUCKET_VOLUME) { + if (stack == null || stack.getAmount() < FluidType.BUCKET_VOLUME) { return; } @@ -56,7 +56,7 @@ public class PortableFluidGridHandler implements IFluidGridHandler { bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { portableGrid.getFluidStorageTracker().changed(player, stack.copy()); - fluidHandler.fill(portableGrid.getFluidStorage().extract(stack, FluidAttributes.BUCKET_VOLUME, IComparer.COMPARE_NBT, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE); + fluidHandler.fill(portableGrid.getFluidStorage().extract(stack, FluidType.BUCKET_VOLUME, IComparer.COMPARE_NBT, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE); if (shift) { if (!player.getInventory().add(fluidHandler.getContainer().copy())) { diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableItemGridHandler.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableItemGridHandler.java index 90703cef9..a6c6d5f1e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableItemGridHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/handler/PortableItemGridHandler.java @@ -52,7 +52,7 @@ public class PortableItemGridHandler implements IItemGridHandler { int itemSize = item.getCount(); // We copy here because some mods change the NBT tag of an item after getting the stack limit - int maxItemSize = item.getItem().getItemStackLimit(item.copy()); + int maxItemSize = item.getItem().getMaxStackSize(item.copy()); boolean single = (flags & EXTRACT_SINGLE) == EXTRACT_SINGLE; diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java index 6dcd3c6f4..9b7c5713c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java @@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider; import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -50,7 +50,7 @@ public class NetworkItemManager implements INetworkItemManager { } if (!inRange) { - player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_range"), player.getUUID()); + player.sendSystemMessage(Component.translatable("misc.refinedstorage.network_item.out_of_range")); return; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java index 28d772011..e895d36bf 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java @@ -11,7 +11,7 @@ import com.refinedmods.refinedstorage.container.factory.CraftingMonitorMenuProvi import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; import com.refinedmods.refinedstorage.util.LevelUtils; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -59,9 +59,11 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem { WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slot); - NetworkHooks.openGui( + NetworkHooks.openScreen( (ServerPlayer) player, - new CraftingMonitorMenuProvider(RSContainerMenus.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), slot::writePlayerSlot); + new CraftingMonitorMenuProvider(RSContainerMenus.WIRELESS_CRAFTING_MONITOR.get(), wirelessCraftingMonitor, null), + slot::writePlayerSlot + ); drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()); @@ -86,6 +88,6 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem { } private void sendOutOfEnergyMessage() { - player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new TranslatableComponent(stack.getItem().getDescriptionId())), player.getUUID()); + player.sendSystemMessage(Component.translatable("misc.refinedstorage.network_item.out_of_energy", Component.translatable(stack.getItem().getDescriptionId()))); } } \ No newline at end of file diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java index c25188672..d9b9bcc8b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java @@ -10,7 +10,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessFluid import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessFluidGridItem; import com.refinedmods.refinedstorage.util.LevelUtils; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -79,6 +79,6 @@ public class WirelessFluidGridNetworkItem implements INetworkItem { } private void sendOutOfEnergyMessage() { - player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new TranslatableComponent(stack.getItem().getDescriptionId())), player.getUUID()); + player.sendSystemMessage(Component.translatable("misc.refinedstorage.network_item.out_of_energy", Component.translatable(stack.getItem().getDescriptionId()))); } } \ No newline at end of file diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java index d3d847a7d..7a2af45cc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java @@ -10,7 +10,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessGridG import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.util.LevelUtils; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -79,6 +79,6 @@ public class WirelessGridNetworkItem implements INetworkItem { } private void sendOutOfEnergyMessage() { - player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new TranslatableComponent(stack.getItem().getDescriptionId())), player.getUUID()); + player.sendSystemMessage(Component.translatable("misc.refinedstorage.network_item.out_of_energy", Component.translatable(stack.getItem().getDescriptionId()))); } } \ No newline at end of file diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ConstructorNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ConstructorNetworkNode.java index 36dcfbfa6..da1a613a4 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ConstructorNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ConstructorNetworkNode.java @@ -35,8 +35,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; @@ -100,12 +100,12 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable, private void extractAndPlaceFluid(FluidStack stack) { BlockPos front = pos.relative(getDirection()); - if (network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, compare, Action.SIMULATE).getAmount() < FluidAttributes.BUCKET_VOLUME) { + if (network.extractFluid(stack, FluidType.BUCKET_VOLUME, compare, Action.SIMULATE).getAmount() < FluidType.BUCKET_VOLUME) { if (upgrades.hasUpgrade(UpgradeItem.Type.CRAFTING)) { - network.getCraftingManager().request(this, stack, FluidAttributes.BUCKET_VOLUME); + network.getCraftingManager().request(this, stack, FluidType.BUCKET_VOLUME); } } else if (!level.getBlockState(front).getFluidState().isSource()) { - FluidUtil.tryPlaceFluid(LevelUtils.getFakePlayer((ServerLevel) level, getOwner()), level, InteractionHand.MAIN_HAND, front, new NetworkFluidHandler(StackUtils.copy(stack, FluidAttributes.BUCKET_VOLUME)), stack); + FluidUtil.tryPlaceFluid(LevelUtils.getFakePlayer((ServerLevel) level, getOwner()), level, InteractionHand.MAIN_HAND, front, new NetworkFluidHandler(StackUtils.copy(stack, FluidType.BUCKET_VOLUME)), stack); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java index 362eeb700..d9f252ceb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java @@ -12,13 +12,12 @@ import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; import com.refinedmods.refinedstorage.inventory.item.validator.PatternItemValidator; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.refinedmods.refinedstorage.item.UpgradeItem; -import com.refinedmods.refinedstorage.util.StackUtils; import com.refinedmods.refinedstorage.util.LevelUtils; +import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Nameable; @@ -40,7 +39,7 @@ import java.util.UUID; public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternContainer { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "crafter"); - private static final Component DEFAULT_NAME = new TranslatableComponent("gui.refinedstorage.crafter"); + private static final Component DEFAULT_NAME = Component.translatable("gui.refinedstorage.crafter"); private static final String NBT_DISPLAY_NAME = "DisplayName"; private static final String NBT_UUID = "CrafterUuid"; private static final String NBT_MODE = "Mode"; @@ -50,7 +49,8 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED) .addListener(new NetworkNodeInventoryListener(this)); // Used to prevent infinite recursion on getRootContainer() when there's e.g. two crafters facing each other. - private boolean visited = false; private final BaseItemHandler patternsInventory = new BaseItemHandler(9) { + private boolean visited = false; + private final BaseItemHandler patternsInventory = new BaseItemHandler(9) { @Override public int getSlotLimit(int slot) { return 1; @@ -86,6 +86,7 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC private Component displayName; @Nullable private UUID uuid = null; + public CrafterNetworkNode(Level level, BlockPos pos) { super(level, pos); } @@ -309,7 +310,7 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC } if (facing != null) { - return new TranslatableComponent(level.getBlockState(facing.getBlockPos()).getBlock().getDescriptionId()); + return Component.translatable(level.getBlockState(facing.getBlockPos()).getBlock().getDescriptionId()); } return DEFAULT_NAME; @@ -448,6 +449,4 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC } - - } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CraftingMonitorNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CraftingMonitorNetworkNode.java index 61383ed32..1707a1fb7 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CraftingMonitorNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CraftingMonitorNetworkNode.java @@ -13,7 +13,6 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -51,7 +50,7 @@ public class CraftingMonitorNetworkNode extends NetworkNode implements ICrafting @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.crafting_monitor"); + return Component.translatable("gui.refinedstorage.crafting_monitor"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/DestructorNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/DestructorNetworkNode.java index 7d6da7c12..7cd066ecf 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/DestructorNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/DestructorNetworkNode.java @@ -37,9 +37,9 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.world.BlockEvent; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.IFluidBlock; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; @@ -61,12 +61,14 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I private final BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); private final FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); private final CoverManager coverManager; - private int compare = IComparer.COMPARE_NBT; private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.SILK_TOUCH, UpgradeItem.Type.FORTUNE_1, UpgradeItem.Type.FORTUNE_2, UpgradeItem.Type.FORTUNE_3) + private int compare = IComparer.COMPARE_NBT; + private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.SILK_TOUCH, UpgradeItem.Type.FORTUNE_1, UpgradeItem.Type.FORTUNE_2, UpgradeItem.Type.FORTUNE_3) .addListener(new NetworkNodeInventoryListener(this)) .addListener((handler, slot, reading) -> tool = createTool()); private int mode = IWhitelistBlacklist.BLACKLIST; private int type = IType.ITEMS; private boolean pickupItem = false; + public DestructorNetworkNode(Level level, BlockPos pos) { super(level, pos); this.coverManager = new CoverManager(this); @@ -92,7 +94,9 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I breakFluid(); } } - } private ItemStack tool = createTool(); + } + + private ItemStack tool = createTool(); private void pickupItems() { BlockPos front = pos.relative(getDirection()); @@ -178,7 +182,7 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I if (frontBlockState.getValue(LiquidBlock.LEVEL) == 0) { Fluid fluid = ((LiquidBlock) frontBlock).getFluid(); - FluidStack stack = new FluidStack(fluid, FluidAttributes.BUCKET_VOLUME); + FluidStack stack = new FluidStack(fluid, FluidType.BUCKET_VOLUME); if (IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.getAmount(), Action.SIMULATE).isEmpty()) { @@ -358,8 +362,4 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I } - - - - } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java index be793264f..5ad64abfc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java @@ -15,15 +15,15 @@ import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.refinedmods.refinedstorage.item.UpgradeItem; -import com.refinedmods.refinedstorage.util.StackUtils; import com.refinedmods.refinedstorage.util.LevelUtils; +import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -39,7 +39,8 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy private final BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); private final FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this)); private final CoverManager coverManager; - private int compare = IComparer.COMPARE_NBT; private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.CRAFTING, UpgradeItem.Type.STACK, UpgradeItem.Type.REGULATOR) + private int compare = IComparer.COMPARE_NBT; + private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.CRAFTING, UpgradeItem.Type.STACK, UpgradeItem.Type.REGULATOR) .addListener(new NetworkNodeInventoryListener(this)) .addListener((handler, slot, reading) -> { if (!reading && !getUpgrades().hasUpgrade(UpgradeItem.Type.REGULATOR)) { @@ -57,8 +58,8 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy for (int i = 0; i < fluidFilters.getSlots(); ++i) { FluidStack filteredFluid = fluidFilters.getFluid(i); - if (!filteredFluid.isEmpty() && filteredFluid.getAmount() != FluidAttributes.BUCKET_VOLUME) { - filteredFluid.setAmount(FluidAttributes.BUCKET_VOLUME); + if (!filteredFluid.isEmpty() && filteredFluid.getAmount() != FluidType.BUCKET_VOLUME) { + filteredFluid.setAmount(FluidType.BUCKET_VOLUME); changed = true; } } @@ -173,7 +174,7 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy FluidStack stack = fluids[filterSlot]; if (stack != null) { - int toExtract = FluidAttributes.BUCKET_VOLUME * upgrades.getStackInteractCount(); + int toExtract = FluidType.BUCKET_VOLUME * upgrades.getStackInteractCount(); FluidStack stackInStorage = network.getFluidStorageCache().getList().get(stack, compare); @@ -332,6 +333,4 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy } - - } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java index 114b8f664..ccedf8268 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java @@ -28,7 +28,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -248,7 +248,7 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage:external_storage"); + return Component.translatable("gui.refinedstorage:external_storage"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/FluidInterfaceNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/FluidInterfaceNetworkNode.java index b4ed9beab..bdca98482 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/FluidInterfaceNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/FluidInterfaceNetworkNode.java @@ -23,7 +23,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.templates.FluidTank; @@ -85,7 +85,7 @@ public class FluidInterfaceNetworkNode extends NetworkNode { } if (ticks % upgrades.getSpeed() == 0) { - FluidStack drained = tankIn.drain(FluidAttributes.BUCKET_VOLUME * upgrades.getStackInteractCount(), IFluidHandler.FluidAction.EXECUTE); + FluidStack drained = tankIn.drain(FluidType.BUCKET_VOLUME * upgrades.getStackInteractCount(), IFluidHandler.FluidAction.EXECUTE); // Drain in tank if (!drained.isEmpty()) { diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/GridNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/GridNetworkNode.java index 859f9da98..03442d970 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/GridNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/GridNetworkNode.java @@ -17,6 +17,9 @@ import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.FluidGridSt import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.ItemGridStorageCacheListener; import com.refinedmods.refinedstorage.block.GridBlock; import com.refinedmods.refinedstorage.block.NetworkNodeBlock; +import com.refinedmods.refinedstorage.blockentity.config.IType; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; +import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; @@ -24,14 +27,10 @@ import com.refinedmods.refinedstorage.inventory.item.validator.ItemValidator; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.refinedmods.refinedstorage.item.PatternItem; -import com.refinedmods.refinedstorage.blockentity.config.IType; -import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; -import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity; import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -46,8 +45,8 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -94,6 +93,11 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I return false; } + @Override + public ItemStack quickMoveStack(Player p_38941_, int p_38942_) { + return ItemStack.EMPTY; + } + @Override public void slotsChanged(Container inventory) { if (!level.isClientSide) { @@ -101,7 +105,7 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I } } }; - private final FluidInventory processingMatrixFluids = new FluidInventory(PROCESSING_MATRIX_SIZE * 2, FluidAttributes.BUCKET_VOLUME * 64) + private final FluidInventory processingMatrixFluids = new FluidInventory(PROCESSING_MATRIX_SIZE * 2, FluidType.BUCKET_VOLUME * 64) .addListener(new NetworkNodeFluidInventoryListener(this)) .addListener((handler, slot, reading) -> { if (!reading && slot < PROCESSING_MATRIX_SIZE) { @@ -179,6 +183,7 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I private boolean exactPattern = true; private boolean processingPattern = false; private int processingType = IType.ITEMS; + public GridNetworkNode(Level level, BlockPos pos, GridType type) { super(level, pos); @@ -293,13 +298,13 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I public Component getTitle() { switch (type) { case CRAFTING: - return new TranslatableComponent("gui.refinedstorage.crafting_grid"); + return Component.translatable("gui.refinedstorage.crafting_grid"); case PATTERN: - return new TranslatableComponent("gui.refinedstorage.pattern_grid"); + return Component.translatable("gui.refinedstorage.pattern_grid"); case FLUID: - return new TranslatableComponent("gui.refinedstorage.fluid_grid"); + return Component.translatable("gui.refinedstorage.fluid_grid"); default: - return new TranslatableComponent("gui.refinedstorage.grid"); + return Component.translatable("gui.refinedstorage.grid"); } } @@ -775,10 +780,4 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I } - - - - - - } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java index c607165da..85158a218 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java @@ -5,27 +5,27 @@ import com.refinedmods.refinedstorage.api.network.node.ICoverable; import com.refinedmods.refinedstorage.api.util.Action; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; +import com.refinedmods.refinedstorage.blockentity.DiskDriveBlockEntity; +import com.refinedmods.refinedstorage.blockentity.ImporterBlockEntity; +import com.refinedmods.refinedstorage.blockentity.config.IComparable; +import com.refinedmods.refinedstorage.blockentity.config.IType; +import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener; import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; import com.refinedmods.refinedstorage.item.UpgradeItem; -import com.refinedmods.refinedstorage.blockentity.DiskDriveBlockEntity; -import com.refinedmods.refinedstorage.blockentity.ImporterBlockEntity; -import com.refinedmods.refinedstorage.blockentity.config.IComparable; -import com.refinedmods.refinedstorage.blockentity.config.IType; -import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; -import com.refinedmods.refinedstorage.util.StackUtils; import com.refinedmods.refinedstorage.util.LevelUtils; +import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -103,12 +103,12 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh IFluidHandler handler = LevelUtils.getFluidHandler(getFacingBlockEntity(), getDirection().getOpposite()); if (handler != null) { - FluidStack stack = handler.drain(FluidAttributes.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE); + FluidStack stack = handler.drain(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE); if (!stack.isEmpty() && IWhitelistBlacklist.acceptsFluid(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.getAmount(), Action.SIMULATE).isEmpty()) { - FluidStack toDrain = handler.drain(FluidAttributes.BUCKET_VOLUME * upgrades.getStackInteractCount(), IFluidHandler.FluidAction.SIMULATE); + FluidStack toDrain = handler.drain(FluidType.BUCKET_VOLUME * upgrades.getStackInteractCount(), IFluidHandler.FluidAction.SIMULATE); if (!toDrain.isEmpty()) { FluidStack remainder = network.insertFluidTracked(toDrain, toDrain.getAmount()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java index 2a6d0b80b..bf8a87843 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/StorageMonitorNetworkNode.java @@ -24,7 +24,7 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -50,7 +50,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl } }); - private final FluidInventory fluidFilter = new FluidInventory(1, FluidAttributes.BUCKET_VOLUME) + private final FluidInventory fluidFilter = new FluidInventory(1, FluidType.BUCKET_VOLUME) .addListener((handler, slot, reading) -> { if (!reading) { LevelUtils.updateBlock(level, pos); @@ -212,7 +212,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl } FluidStack stack = network.getFluidStorageCache().getList().get(filter); - if (stack == null || stack.getAmount() < FluidAttributes.BUCKET_VOLUME) { + if (stack == null || stack.getAmount() < FluidType.BUCKET_VOLUME) { return; } @@ -221,7 +221,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl NetworkUtils.extractBucketFromPlayerInventoryOrNetwork(player, network, bucket -> bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).ifPresent(fluidHandler -> { network.getFluidStorageTracker().changed(player, stack.copy()); - fluidHandler.fill(network.extractFluid(stack, FluidAttributes.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE); + fluidHandler.fill(network.extractFluid(stack, FluidType.BUCKET_VOLUME, Action.PERFORM), IFluidHandler.FluidAction.EXECUTE); if (!player.getInventory().add(fluidHandler.getContainer().copy())) { Containers.dropItemStack(player.getCommandSenderWorld(), player.getX(), player.getY(), player.getZ(), fluidHandler.getContainer()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java index 2a9fcfee4..c59656aac 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/diskmanipulator/DiskManipulatorNetworkNode.java @@ -29,7 +29,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -104,7 +104,7 @@ public class DiskManipulatorNetworkNode extends NetworkNode implements IComparab int count = super.getStackInteractCount(); if (type == IType.FLUIDS) { - count *= FluidAttributes.BUCKET_VOLUME; + count *= FluidType.BUCKET_VOLUME; } return count; diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java index 73792fba8..a1493b24f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/FluidStorageNetworkNode.java @@ -26,7 +26,7 @@ import com.refinedmods.refinedstorage.util.AccessTypeUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; @@ -247,7 +247,7 @@ public class FluidStorageNetworkNode extends NetworkNode implements IStorageScre @Override public Component getTitle() { - return new TranslatableComponent("block.refinedstorage." + type.getName() + "_fluid_storage_block"); + return Component.translatable("block.refinedstorage." + type.getName() + "_fluid_storage_block"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java index 5c655a33c..ef863b5b9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/storage/StorageNetworkNode.java @@ -27,7 +27,7 @@ import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; @@ -246,7 +246,7 @@ public class StorageNetworkNode extends NetworkNode implements IStorageScreen, I @Override public Component getTitle() { - return new TranslatableComponent("block.refinedstorage." + type.getName() + "_storage_block"); + return Component.translatable("block.refinedstorage." + type.getName() + "_storage_block"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/QuantityFormatter.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/QuantityFormatter.java index cdc1181f2..29039ea39 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/QuantityFormatter.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/QuantityFormatter.java @@ -2,7 +2,7 @@ package com.refinedmods.refinedstorage.apiimpl.util; import com.refinedmods.refinedstorage.api.util.IQuantityFormatter; import com.refinedmods.refinedstorage.apiimpl.API; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -60,12 +60,12 @@ public class QuantityFormatter implements IQuantityFormatter { @Override public String formatInBucketForm(int qty) { - return bucketFormatter.format((float) qty / (float) FluidAttributes.BUCKET_VOLUME) + " B"; + return bucketFormatter.format((float) qty / (float) FluidType.BUCKET_VOLUME) + " B"; } @Override public String formatInBucketFormWithOnlyTrailingDigitsIfZero(int qty) { - float amountRaw = ((float) qty / (float) FluidAttributes.BUCKET_VOLUME); + float amountRaw = ((float) qty / (float) FluidType.BUCKET_VOLUME); int amount = (int) amountRaw; if (amount >= 1) { diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ConstructorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ConstructorBlock.java index b795d3427..20daaefd2 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ConstructorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ConstructorBlock.java @@ -10,7 +10,8 @@ import com.refinedmods.refinedstorage.util.CollisionUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -92,10 +93,10 @@ public class ConstructorBlock extends CableBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!level.isClientSide && CollisionUtils.isInBounds(getHeadShape(state), pos, hit.getLocation())) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.constructor"), + Component.translatable("gui.refinedstorage.constructor"), (blockEntity, windowId, inventory, p) -> new ConstructorContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java index 20090b9a3..ea45c615b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ControllerBlock.java @@ -5,14 +5,13 @@ import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.NetworkType; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.Network; -import com.refinedmods.refinedstorage.container.ControllerContainerMenu; import com.refinedmods.refinedstorage.blockentity.ControllerBlockEntity; +import com.refinedmods.refinedstorage.container.ControllerContainerMenu; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.ColorMap; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.StringRepresentable; @@ -106,12 +105,12 @@ public class ControllerBlock extends BaseBlock implements EntityBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new MenuProvider() { @Override public Component getDisplayName() { - return new TranslatableComponent("gui.refinedstorage." + (ControllerBlock.this.getType() == NetworkType.CREATIVE ? "creative_" : "") + "controller"); + return Component.translatable("gui.refinedstorage." + (ControllerBlock.this.getType() == NetworkType.CREATIVE ? "creative_" : "") + "controller"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/block/CrafterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/CrafterBlock.java index 618b87363..d5ff308b6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/CrafterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/CrafterBlock.java @@ -55,7 +55,7 @@ public class CrafterBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( ((CrafterBlockEntity) level.getBlockEntity(pos)).getNode().getName(), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/CrafterManagerBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/CrafterManagerBlock.java index 1164283c1..81aab0d3d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/CrafterManagerBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/CrafterManagerBlock.java @@ -41,7 +41,7 @@ public class CrafterManagerBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new CrafterManagerMenuProvider((CrafterManagerBlockEntity) level.getBlockEntity(pos)), buf -> CrafterManagerMenuProvider.writeToBuffer(buf, level, pos) diff --git a/src/main/java/com/refinedmods/refinedstorage/block/CraftingMonitorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/CraftingMonitorBlock.java index 00ee3ae84..310f7a597 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/CraftingMonitorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/CraftingMonitorBlock.java @@ -44,9 +44,9 @@ public class CraftingMonitorBlock extends ColoredNetworkBlock { if (!level.isClientSide) { CraftingMonitorBlockEntity blockEntity = (CraftingMonitorBlockEntity) level.getBlockEntity(pos); - return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, - new CraftingMonitorMenuProvider(RSContainerMenus.CRAFTING_MONITOR, blockEntity.getNode(), blockEntity), + new CraftingMonitorMenuProvider(RSContainerMenus.CRAFTING_MONITOR.get(), blockEntity.getNode(), blockEntity), pos ), Permission.MODIFY, Permission.AUTOCRAFTING); } diff --git a/src/main/java/com/refinedmods/refinedstorage/block/DestructorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/DestructorBlock.java index 20c37a05d..af72f9fbb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/DestructorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/DestructorBlock.java @@ -10,7 +10,8 @@ import com.refinedmods.refinedstorage.util.CollisionUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -92,10 +93,10 @@ public class DestructorBlock extends CableBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { if (!level.isClientSide && CollisionUtils.isInBounds(getHeadShape(state), pos, hit.getLocation())) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.destructor"), + Component.translatable("gui.refinedstorage.destructor"), (blockEntity, windowId, inventory, p) -> new DestructorContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/DetectorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/DetectorBlock.java index 3836aa8fe..174744cad 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/DetectorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/DetectorBlock.java @@ -9,7 +9,8 @@ import com.refinedmods.refinedstorage.util.ColorMap; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -78,10 +79,10 @@ public class DetectorBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.detector"), + Component.translatable("gui.refinedstorage.detector"), (blockEntity, windowId, inventory, p) -> new DetectorContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/DiskDriveBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/DiskDriveBlock.java index d61e07a4b..e12a5cf3d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/DiskDriveBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/DiskDriveBlock.java @@ -6,7 +6,8 @@ import com.refinedmods.refinedstorage.blockentity.DiskDriveBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -36,10 +37,10 @@ public class DiskDriveBlock extends NetworkNodeBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult rayTraceResult) { if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.disk_drive"), + Component.translatable("gui.refinedstorage.disk_drive"), (blockEntity, windowId, inventory, p) -> new DiskDriveContainerMenu(blockEntity, p, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/DiskManipulatorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/DiskManipulatorBlock.java index 6e2943ef5..82d2c432f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/DiskManipulatorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/DiskManipulatorBlock.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.blockentity.DiskManipulatorBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -37,10 +38,10 @@ public class DiskManipulatorBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.disk_manipulator"), + Component.translatable("gui.refinedstorage.disk_manipulator"), (blockEntity, windowId, inventory, p) -> new DiskManipulatorContainerMenu(blockEntity, p, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java index a1d9aa06e..1f513b84d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java @@ -10,7 +10,8 @@ import com.refinedmods.refinedstorage.util.CollisionUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -116,10 +117,10 @@ public class ExporterBlock extends CableBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!level.isClientSide && CollisionUtils.isInBounds(getLineShape(state), pos, hit.getLocation())) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.exporter"), + Component.translatable("gui.refinedstorage.exporter"), (blockEntity, windowId, inventory, p) -> new ExporterContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java index c30a9dceb..add7e81a8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java @@ -13,7 +13,8 @@ import com.refinedmods.refinedstorage.util.CollisionUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -96,10 +97,10 @@ public class ExternalStorageBlock extends CableBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!level.isClientSide && CollisionUtils.isInBounds(getHeadShape(state), pos, hit.getLocation())) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.external_storage"), + Component.translatable("gui.refinedstorage.external_storage"), (blockEntity, windowId, inventory, p) -> new ExternalStorageContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/FluidInterfaceBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/FluidInterfaceBlock.java index 0c392b85a..dc60b7a87 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/FluidInterfaceBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/FluidInterfaceBlock.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.blockentity.FluidInterfaceBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -32,10 +33,10 @@ public class FluidInterfaceBlock extends NetworkNodeBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { if (!level.isClientSide) { - return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.fluid_interface"), + Component.translatable("gui.refinedstorage.fluid_interface"), (blockEntity, windowId, inventory, p) -> new FluidInterfaceContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/FluidStorageBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/FluidStorageBlock.java index 36921f0d7..55168cbfd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/FluidStorageBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/FluidStorageBlock.java @@ -58,7 +58,7 @@ public class FluidStorageBlock extends NetworkNodeBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui((ServerPlayer) player, new BlockEntityMenuProvider( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen((ServerPlayer) player, new BlockEntityMenuProvider( ((FluidStorageBlockEntity) level.getBlockEntity(pos)).getNode().getTitle(), (blockEntity, windowId, inventory, p) -> new FluidStorageContainerMenu(blockEntity, player, windowId), pos diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java index 360b5cbf4..48dc8da1d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java @@ -10,7 +10,8 @@ import com.refinedmods.refinedstorage.util.CollisionUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -115,10 +116,10 @@ public class ImporterBlock extends CableBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!level.isClientSide && CollisionUtils.isInBounds(getLineShape(state), pos, hit.getLocation())) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.importer"), + Component.translatable("gui.refinedstorage.importer"), (blockEntity, windowId, inventory, p) -> new ImporterContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/InterfaceBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/InterfaceBlock.java index 6bf72c8f7..c665db67a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/InterfaceBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/InterfaceBlock.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.blockentity.InterfaceBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -32,10 +33,10 @@ public class InterfaceBlock extends NetworkNodeBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { if (!level.isClientSide) { - return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attempt(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.interface"), + Component.translatable("gui.refinedstorage.interface"), (blockEntity, windowId, inventory, p) -> new InterfaceContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/NetworkTransmitterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/NetworkTransmitterBlock.java index 0086f62e9..67732b1b6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/NetworkTransmitterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/NetworkTransmitterBlock.java @@ -1,13 +1,13 @@ package com.refinedmods.refinedstorage.block; import com.refinedmods.refinedstorage.RSBlocks; +import com.refinedmods.refinedstorage.blockentity.NetworkTransmitterBlockEntity; import com.refinedmods.refinedstorage.container.NetworkTransmitterContainerMenu; import com.refinedmods.refinedstorage.container.factory.BlockEntityMenuProvider; -import com.refinedmods.refinedstorage.blockentity.NetworkTransmitterBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -37,10 +37,10 @@ public class NetworkTransmitterBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.network_transmitter"), + Component.translatable("gui.refinedstorage.network_transmitter"), (blockEntity, windowId, inventory, p) -> new NetworkTransmitterContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/RelayBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/RelayBlock.java index 15f22d29a..7310c6417 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/RelayBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/RelayBlock.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.blockentity.RelayBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -37,10 +38,10 @@ public class RelayBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.relay"), + Component.translatable("gui.refinedstorage.relay"), (blockEntity, windowId, inventory, p) -> new RelayContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/SecurityManagerBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/SecurityManagerBlock.java index 517b4b033..97e032bbb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/SecurityManagerBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/SecurityManagerBlock.java @@ -8,7 +8,8 @@ import com.refinedmods.refinedstorage.blockentity.SecurityManagerBlockEntity; import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -38,10 +39,10 @@ public class SecurityManagerBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - Runnable action = () -> NetworkHooks.openGui( + Runnable action = () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.security_manager"), + Component.translatable("gui.refinedstorage.security_manager"), (blockEntity, windowId, inventory, p) -> new SecurityManagerContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/StorageBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/StorageBlock.java index 11924919a..a3a9ea9ef 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/StorageBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/StorageBlock.java @@ -60,7 +60,7 @@ public class StorageBlock extends NetworkNodeBlock { @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui((ServerPlayer) player, new BlockEntityMenuProvider( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen((ServerPlayer) player, new BlockEntityMenuProvider( ((StorageBlockEntity) level.getBlockEntity(pos)).getNode().getTitle(), (blockEntity, windowId, inventory, p) -> new StorageContainerMenu(blockEntity, player, windowId), pos diff --git a/src/main/java/com/refinedmods/refinedstorage/block/StorageMonitorBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/StorageMonitorBlock.java index 74b4e2722..1412c667d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/StorageMonitorBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/StorageMonitorBlock.java @@ -8,7 +8,8 @@ import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.LevelUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -43,10 +44,10 @@ public class StorageMonitorBlock extends NetworkNodeBlock { ItemStack held = player.getItemInHand(handIn); if (player.isCrouching()) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.storage_monitor"), + Component.translatable("gui.refinedstorage.storage_monitor"), (blockEntity, windowId, inventory, p) -> new StorageMonitorContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/block/WirelessTransmitterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/WirelessTransmitterBlock.java index 20648d9fe..892d6a780 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/WirelessTransmitterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/WirelessTransmitterBlock.java @@ -7,7 +7,8 @@ import com.refinedmods.refinedstorage.blockentity.WirelessTransmitterBlockEntity import com.refinedmods.refinedstorage.util.BlockUtils; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -79,10 +80,10 @@ public class WirelessTransmitterBlock extends ColoredNetworkBlock { } if (!level.isClientSide) { - return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openGui( + return NetworkUtils.attemptModify(level, pos, player, () -> NetworkHooks.openScreen( (ServerPlayer) player, new BlockEntityMenuProvider( - new TranslatableComponent("gui.refinedstorage.wireless_transmitter"), + Component.translatable("gui.refinedstorage.wireless_transmitter"), (blockEntity, windowId, inventory, p) -> new WirelessTransmitterContainerMenu(blockEntity, player, windowId), pos ), diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/BaseBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/BaseBlockEntity.java index e1af23cf3..404fa5ca8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/BaseBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/BaseBlockEntity.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; @@ -10,12 +11,12 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; public abstract class BaseBlockEntity extends BlockEntity { - protected final BlockEntitySynchronizationManager dataManager = new BlockEntitySynchronizationManager(this); - + private final BlockEntitySynchronizationManager dataManager; private boolean unloaded; - public BaseBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + protected BaseBlockEntity(BlockEntityType type, BlockPos pos, BlockState state, BlockEntitySynchronizationSpec syncSpec) { super(type, pos, state); + this.dataManager = new BlockEntitySynchronizationManager(this, syncSpec); } public BlockEntitySynchronizationManager getDataManager() { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java index 0a9cdf6b1..850fd763d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java @@ -4,14 +4,14 @@ import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; @@ -19,9 +19,13 @@ public class CableBlockEntity extends NetworkNodeBlockEntity { public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COVER_MANAGER) + .build(); + public CableBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.CABLE, pos, state); - dataManager.addWatchedParameter(COVER_MANAGER); + super(RSBlockEntities.CABLE.get(), pos, state, SPEC); } @Override @@ -32,8 +36,8 @@ public class CableBlockEntity extends NetworkNodeBlockEntity { @Nonnull @Override - public IModelData getModelData() { - return new ModelDataMap.Builder().withInitial(CoverManager.PROPERTY, this.getNode().getCoverManager()).build(); + public ModelData getModelData() { + return ModelData.builder().with(CoverManager.PROPERTY, this.getNode().getCoverManager()).build(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java index 5e383b4e5..3e4026b8d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java @@ -6,14 +6,14 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IType; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; @@ -31,13 +31,16 @@ public class ConstructorBlockEntity extends NetworkNodeBlockEntity { }); - public ConstructorBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.CONSTRUCTOR, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(TYPE) + .addWatchedParameter(DROP) + .addWatchedParameter(COVER_MANAGER) + .build(); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(DROP); - dataManager.addWatchedParameter(COVER_MANAGER); + public ConstructorBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.CONSTRUCTOR.get(), pos, state, SPEC); } @Override @@ -48,8 +51,8 @@ public class ConstructorBlockEntity extends NetworkNodeBlockEntity ENERGY_CAPACITY = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getMaxEnergyStored()); public static final BlockEntitySynchronizationParameter, ControllerBlockEntity> NODES = new BlockEntitySynchronizationParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(ENERGY_USAGE) + .addWatchedParameter(ENERGY_STORED) + .addParameter(ENERGY_CAPACITY) + .addParameter(NODES) + .build(); + private final LazyOptional> networkNodeProxyCap = LazyOptional.of(() -> this); private final NetworkType type; private INetwork removedNetwork; @@ -44,14 +53,7 @@ public class ControllerBlockEntity extends BaseBlockEntity implements INetworkNo private final LazyOptional energyProxyCap = LazyOptional.of(() -> getNetwork().getEnergyStorage()); public ControllerBlockEntity(NetworkType type, BlockPos pos, BlockState state) { - super(type == NetworkType.CREATIVE ? RSBlockEntities.CREATIVE_CONTROLLER : RSBlockEntities.CONTROLLER, pos, state); - - dataManager.addWatchedParameter(REDSTONE_MODE); - dataManager.addWatchedParameter(ENERGY_USAGE); - dataManager.addWatchedParameter(ENERGY_STORED); - dataManager.addParameter(ENERGY_CAPACITY); - dataManager.addParameter(NODES); - + super(type == NetworkType.CREATIVE ? RSBlockEntities.CREATIVE_CONTROLLER.get() : RSBlockEntities.CONTROLLER.get(), pos, state, SPEC); this.type = type; } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java index 5d74b6924..0835aaa2e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java @@ -2,8 +2,9 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterNetworkNode; -import com.refinedmods.refinedstorage.screen.CrafterBlockEntitySynchronizationClientListener; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; +import com.refinedmods.refinedstorage.screen.CrafterBlockEntitySynchronizationClientListener; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.syncher.EntityDataSerializers; @@ -21,13 +22,16 @@ public class CrafterBlockEntity extends NetworkNodeBlockEntity MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, CrafterNetworkNode.CrafterMode.IGNORE.ordinal(), t -> t.getNode().getMode().ordinal(), (t, v) -> t.getNode().setMode(CrafterNetworkNode.CrafterMode.getById(v))); private static final BlockEntitySynchronizationParameter HAS_ROOT = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new CrafterBlockEntitySynchronizationClientListener().onChanged(t, v)); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(MODE) + .addParameter(HAS_ROOT) + .build(); + private final LazyOptional patternsCapability = LazyOptional.of(() -> getNode().getPatternInventory()); public CrafterBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.CRAFTER, pos, state); - - dataManager.addWatchedParameter(MODE); - dataManager.addParameter(HAS_ROOT); + super(RSBlockEntities.CRAFTER.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java index e02cb3876..fea88a907 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java @@ -3,38 +3,41 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterManagerNetworkNode; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.screen.CrafterManagerScreen; -import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.core.BlockPos; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; public class CrafterManagerBlockEntity extends NetworkNodeBlockEntity { - public CrafterManagerBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.CRAFTER_MANAGER, pos, state); - - dataManager.addWatchedParameter(SIZE); - dataManager.addWatchedParameter(SEARCH_BOX_MODE); - } public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { + if (IGrid.isValidSearchBoxMode(v)) { + t.getNode().setSearchBoxMode(v); + t.getNode().markDirty(); + } + }, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, crafterManager -> crafterManager.getSearchField().setMode(p))); + public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { if (IGrid.isValidSize(v)) { t.getNode().setSize(v); t.getNode().markDirty(); } }, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, BaseScreen::init)); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(SIZE) + .addWatchedParameter(SEARCH_BOX_MODE) + .build(); + + public CrafterManagerBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.CRAFTER_MANAGER.get(), pos, state, SPEC); + } + @Override public CrafterManagerNetworkNode createNode(Level level, BlockPos pos) { return new CrafterManagerNetworkNode(level, pos); - } public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { - if (IGrid.isValidSearchBoxMode(v)) { - t.getNode().setSearchBoxMode(v); - t.getNode().markDirty(); - } - }, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, crafterManager -> crafterManager.getSearchField().setMode(p))); - - - - + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java index 1b7148ec8..7bac6fa56 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java @@ -7,14 +7,14 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IType; import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; @@ -33,14 +33,17 @@ public class DestructorBlockEntity extends NetworkNodeBlockEntity { }); - public DestructorBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.DESTRUCTOR, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(TYPE) + .addWatchedParameter(PICKUP) + .addWatchedParameter(COVER_MANAGER) + .build(); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(PICKUP); - dataManager.addWatchedParameter(COVER_MANAGER); + public DestructorBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.DESTRUCTOR.get(), pos, state, SPEC); } @Override @@ -51,8 +54,8 @@ public class DestructorBlockEntity extends NetworkNodeBlockEntity BaseScreen.executeLater(DetectorScreen.class, detectorScreen -> detectorScreen.updateAmountField(value))); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(TYPE) + .addWatchedParameter(MODE) + .addWatchedParameter(AMOUNT) + .build(); + private static final String NBT_POWERED = "Powered"; public DetectorBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.DETECTOR, pos, state); - - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(MODE); - dataManager.addWatchedParameter(AMOUNT); + super(RSBlockEntities.DETECTOR.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java index 98e5b8452..7b5fbe9cf 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java @@ -6,8 +6,9 @@ import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; import com.refinedmods.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; import com.refinedmods.refinedstorage.blockentity.config.*; -import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; +import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -17,8 +18,7 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; @@ -77,9 +77,19 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity DISK_STATE_PROPERTY = new ModelProperty<>(); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(PRIORITY) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(TYPE) + .addWatchedParameter(ACCESS_TYPE) + .addWatchedParameter(STORED) + .addWatchedParameter(CAPACITY) + .build(); + private static final String NBT_DISK_STATE = "DiskStates"; private final LazyOptional diskCapability = LazyOptional.of(() -> getNode().getDisks()); @@ -87,16 +97,7 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity DISK_STATE_PROPERTY = new ModelProperty<>(); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(TYPE) + .addWatchedParameter(IO_MODE) + .build(); + private static final String NBT_DISK_STATE = "DiskStates"; private final LazyOptional diskCapability = LazyOptional.of(() -> getNode().getDisks()); @@ -47,13 +55,7 @@ public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public ExporterBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.EXPORTER, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(TYPE) + .addWatchedParameter(COVER_MANAGER) + .build(); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(COVER_MANAGER); + public ExporterBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.EXPORTER.get(), pos, state, SPEC); } @Override @@ -44,8 +47,8 @@ public class ExporterBlockEntity extends NetworkNodeBlockEntity COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); - public ExternalStorageBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.EXTERNAL_STORAGE, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(PRIORITY) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(STORED) + .addWatchedParameter(CAPACITY) + .addWatchedParameter(TYPE) + .addWatchedParameter(ACCESS_TYPE) + .addWatchedParameter(COVER_MANAGER) + .build(); - dataManager.addWatchedParameter(PRIORITY); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(STORED); - dataManager.addWatchedParameter(CAPACITY); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(ACCESS_TYPE); - dataManager.addWatchedParameter(COVER_MANAGER); + public ExternalStorageBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.EXTERNAL_STORAGE.get(), pos, state, SPEC); } @Override @@ -78,8 +81,8 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity TANK_IN = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankIn().getFluid()); public static final BlockEntitySynchronizationParameter TANK_OUT = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().getFluid()); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addParameter(TANK_IN) + .addParameter(TANK_OUT) + .build(); + private final LazyOptional tankCapability = LazyOptional.of(() -> getNode().getTank()); private final LazyOptional inCapability = LazyOptional.of(() -> getNode().getIn()); public FluidInterfaceBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.FLUID_INTERFACE, pos, state); - - dataManager.addParameter(TANK_IN); - dataManager.addParameter(TANK_OUT); + super(RSBlockEntities.FLUID_INTERFACE.get(), pos, state, SPEC); } @Nonnull diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java index aa03ff2c7..c96a83ada 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java @@ -8,8 +8,9 @@ import com.refinedmods.refinedstorage.blockentity.config.IAccessType; import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IPrioritizable; import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; -import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; +import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -24,35 +25,30 @@ public class FluidStorageBlockEntity extends NetworkNodeBlockEntity ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(PRIORITY) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(STORED) + .addWatchedParameter(ACCESS_TYPE) + .build(); + private final FluidStorageType type; public FluidStorageBlockEntity(FluidStorageType type, BlockPos pos, BlockState state) { - super(getType(type), pos, state); - + super(getType(type), pos, state, SPEC); this.type = type; - - dataManager.addWatchedParameter(PRIORITY); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(STORED); - dataManager.addWatchedParameter(ACCESS_TYPE); } public static BlockEntityType getType(FluidStorageType type) { - switch (type) { - case SIXTY_FOUR_K: - return RSBlockEntities.SIXTY_FOUR_K_FLUID_STORAGE_BLOCK; - case TWO_HUNDRED_FIFTY_SIX_K: - return RSBlockEntities.TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK; - case THOUSAND_TWENTY_FOUR_K: - return RSBlockEntities.THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK; - case FOUR_THOUSAND_NINETY_SIX_K: - return RSBlockEntities.FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK; - case CREATIVE: - return RSBlockEntities.CREATIVE_FLUID_STORAGE_BLOCK; - default: - throw new IllegalArgumentException("Unknown storage type " + type); - } + return switch (type) { + case SIXTY_FOUR_K -> RSBlockEntities.SIXTY_FOUR_K_FLUID_STORAGE_BLOCK.get(); + case TWO_HUNDRED_FIFTY_SIX_K -> RSBlockEntities.TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK.get(); + case THOUSAND_TWENTY_FOUR_K -> RSBlockEntities.THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK.get(); + case FOUR_THOUSAND_NINETY_SIX_K -> RSBlockEntities.FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK.get(); + case CREATIVE -> RSBlockEntities.CREATIVE_FLUID_STORAGE_BLOCK.get(); + }; } public FluidStorageType getFluidStorageType() { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java index 1aa85b314..b4b1c1140 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java @@ -7,14 +7,14 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IType; import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; @@ -25,13 +25,16 @@ public class ImporterBlockEntity extends NetworkNodeBlockEntity COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); - public ImporterBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.IMPORTER, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(TYPE) + .addWatchedParameter(COVER_MANAGER) + .build(); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(TYPE); - dataManager.addWatchedParameter(COVER_MANAGER); + public ImporterBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.IMPORTER.get(), pos, state, SPEC); } @Override @@ -42,8 +45,8 @@ public class ImporterBlockEntity extends NetworkNodeBlockEntity { public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(COMPARE) + .build(); + private final LazyOptional itemsCapability = LazyOptional.of(() -> getNode().getItems()); public InterfaceBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.INTERFACE, pos, state); - - dataManager.addWatchedParameter(COMPARE); + super(RSBlockEntities.INTERFACE.get(), pos, state, SPEC); } @Nonnull diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java index b81292352..d7629fb53 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java @@ -9,6 +9,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; import com.refinedmods.refinedstorage.blockentity.config.IRedstoneConfigurable; import com.refinedmods.refinedstorage.blockentity.config.RedstoneMode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -26,16 +27,15 @@ import javax.annotation.Nullable; public abstract class NetworkNodeBlockEntity extends BaseBlockEntity implements INetworkNodeProxy, IRedstoneConfigurable { public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(); + private final LazyOptional> networkNodeProxy = LazyOptional.of(() -> this); private N clientNode; private N removedNode; private static final Logger LOGGER = LogManager.getLogger(); - protected NetworkNodeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - - dataManager.addWatchedParameter(REDSTONE_MODE); + protected NetworkNodeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state, BlockEntitySynchronizationSpec syncSpec) { + super(type, pos, state, syncSpec); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkReceiverBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkReceiverBlockEntity.java index d0a044105..cf0d2f045 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkReceiverBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkReceiverBlockEntity.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkReceiverNetworkNode; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -9,8 +10,12 @@ import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class NetworkReceiverBlockEntity extends NetworkNodeBlockEntity { + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .build(); + public NetworkReceiverBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.NETWORK_RECEIVER, pos, state); + super(RSBlockEntities.NETWORK_RECEIVER.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java index 46a11df1b..112c2bdb3 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.core.BlockPos; @@ -29,13 +30,16 @@ public class NetworkTransmitterBlockEntity extends NetworkNodeBlockEntity networkCardCapability = LazyOptional.of(() -> getNode().getNetworkCard()); public NetworkTransmitterBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.NETWORK_TRANSMITTER, pos, state); - - dataManager.addWatchedParameter(DISTANCE); - dataManager.addWatchedParameter(RECEIVER_DIMENSION); + super(RSBlockEntities.NETWORK_TRANSMITTER.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/RelayBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/RelayBlockEntity.java index 002975fc1..5fb657c2c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/RelayBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/RelayBlockEntity.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.RelayNetworkNode; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -9,8 +10,12 @@ import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class RelayBlockEntity extends NetworkNodeBlockEntity { + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .build(); + public RelayBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.RELAY, pos, state); + super(RSBlockEntities.RELAY.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/SecurityManagerBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/SecurityManagerBlockEntity.java index f89535d94..e270e0993 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/SecurityManagerBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/SecurityManagerBlockEntity.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.SecurityManagerNetworkNode; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -9,8 +10,12 @@ import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class SecurityManagerBlockEntity extends NetworkNodeBlockEntity { + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .build(); + public SecurityManagerBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.SECURITY_MANAGER, pos, state); + super(RSBlockEntities.SECURITY_MANAGER.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java index 19d56e307..12cb93ead 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java @@ -8,8 +8,9 @@ import com.refinedmods.refinedstorage.blockentity.config.IAccessType; import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IPrioritizable; import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist; -import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; +import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -24,35 +25,30 @@ public class StorageBlockEntity extends NetworkNodeBlockEntity ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(PRIORITY) + .addWatchedParameter(COMPARE) + .addWatchedParameter(WHITELIST_BLACKLIST) + .addWatchedParameter(STORED) + .addWatchedParameter(ACCESS_TYPE) + .build(); + private final ItemStorageType type; public StorageBlockEntity(ItemStorageType type, BlockPos pos, BlockState state) { - super(getType(type), pos, state); - + super(getType(type), pos, state, SPEC); this.type = type; - - dataManager.addWatchedParameter(PRIORITY); - dataManager.addWatchedParameter(COMPARE); - dataManager.addWatchedParameter(WHITELIST_BLACKLIST); - dataManager.addWatchedParameter(STORED); - dataManager.addWatchedParameter(ACCESS_TYPE); } public static BlockEntityType getType(ItemStorageType type) { - switch (type) { - case ONE_K: - return RSBlockEntities.ONE_K_STORAGE_BLOCK; - case FOUR_K: - return RSBlockEntities.FOUR_K_STORAGE_BLOCK; - case SIXTEEN_K: - return RSBlockEntities.SIXTEEN_K_STORAGE_BLOCK; - case SIXTY_FOUR_K: - return RSBlockEntities.SIXTY_FOUR_K_STORAGE_BLOCK; - case CREATIVE: - return RSBlockEntities.CREATIVE_STORAGE_BLOCK; - default: - throw new IllegalArgumentException("Unknown storage type " + type); - } + return switch (type) { + case ONE_K -> RSBlockEntities.ONE_K_STORAGE_BLOCK.get(); + case FOUR_K -> RSBlockEntities.FOUR_K_STORAGE_BLOCK.get(); + case SIXTEEN_K -> RSBlockEntities.SIXTEEN_K_STORAGE_BLOCK.get(); + case SIXTY_FOUR_K -> RSBlockEntities.SIXTY_FOUR_K_STORAGE_BLOCK.get(); + case CREATIVE -> RSBlockEntities.CREATIVE_STORAGE_BLOCK.get(); + }; } public ItemStorageType getItemStorageType() { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java index 76f968e46..a43e918ba 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java @@ -5,6 +5,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.StorageMonitorNetwork import com.refinedmods.refinedstorage.blockentity.config.IComparable; import com.refinedmods.refinedstorage.blockentity.config.IType; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; @@ -23,6 +24,12 @@ public class StorageMonitorBlockEntity extends NetworkNodeBlockEntity { public static final BlockEntitySynchronizationParameter RANGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getRange()); - public WirelessTransmitterBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.WIRELESS_TRANSMITTER, pos, state); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(RANGE) + .build(); - dataManager.addWatchedParameter(RANGE); + public WirelessTransmitterBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.WIRELESS_TRANSMITTER.get(), pos, state, SPEC); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java index 075e92341..1517eac60 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode; import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.world.level.Level; @@ -14,12 +15,7 @@ import java.util.Optional; import java.util.UUID; public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity { - public CraftingMonitorBlockEntity(BlockPos pos, BlockState state) { - super(RSBlockEntities.CRAFTING_MONITOR, pos, state); - - dataManager.addWatchedParameter(TAB_SELECTED); - dataManager.addWatchedParameter(TAB_PAGE); - } public static final BlockEntitySynchronizationParameter, CraftingMonitorBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.OPTIONAL_UUID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { + public static final BlockEntitySynchronizationParameter, CraftingMonitorBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.OPTIONAL_UUID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) { t.getNode().setTabSelected(Optional.empty()); } else { @@ -29,18 +25,26 @@ public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { + public static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { if (v >= 0) { t.getNode().setTabPage(v); t.getNode().markDirty(); } }); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(TAB_SELECTED) + .addWatchedParameter(TAB_PAGE) + .build(); + public CraftingMonitorBlockEntity(BlockPos pos, BlockState state) { + super(RSBlockEntities.CRAFTING_MONITOR.get(), pos, state, SPEC); + } - + @Override + @Nonnull + public CraftingMonitorNetworkNode createNode(Level level, BlockPos pos) { + return new CraftingMonitorNetworkNode(level, pos); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/WirelessCraftingMonitor.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/WirelessCraftingMonitor.java index ee0a7c319..1e7eab006 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/WirelessCraftingMonitor.java @@ -12,7 +12,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; @@ -57,7 +57,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.wireless_crafting_monitor"); + return Component.translatable("gui.refinedstorage.wireless_crafting_monitor"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java index 2f04791d8..5f0824a1b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java @@ -4,7 +4,6 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.network.sync.BlockEntitySynchronizationParamaterUpdateMessage; import net.minecraft.world.level.block.entity.BlockEntity; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -13,49 +12,26 @@ import java.util.concurrent.CopyOnWriteArrayList; public class BlockEntitySynchronizationManager { private static final Map REGISTRY = new HashMap<>(); private static int lastId = 0; + private final BlockEntity blockEntity; - - private final List parameters = new ArrayList<>(); - private final List watchedParameters = new ArrayList<>(); - + private final List parameters; + private final List watchedParameters; private final List watchers = new CopyOnWriteArrayList<>(); - public BlockEntitySynchronizationManager(BlockEntity blockEntity) { + public BlockEntitySynchronizationManager(BlockEntity blockEntity, BlockEntitySynchronizationSpec spec) { this.blockEntity = blockEntity; - } - - public static void registerParameter(BlockEntitySynchronizationParameter parameter) { - parameter.setId(lastId); - - REGISTRY.put(lastId++, parameter); - } - - public static BlockEntitySynchronizationParameter getParameter(int id) { - return REGISTRY.get(id); - } - - public static void setParameter(BlockEntitySynchronizationParameter parameter, Object value) { - RS.NETWORK_HANDLER.sendToServer(new BlockEntitySynchronizationParamaterUpdateMessage(parameter, value)); + this.parameters = spec.getParameters(); + this.watchedParameters = spec.getWatchedParameters(); } public BlockEntity getBlockEntity() { return blockEntity; } - public void addParameter(BlockEntitySynchronizationParameter parameter) { - parameters.add(parameter); - } - public List getParameters() { return parameters; } - public void addWatchedParameter(BlockEntitySynchronizationParameter parameter) { - addParameter(parameter); - - watchedParameters.add(parameter); - } - public List getWatchedParameters() { return watchedParameters; } @@ -71,4 +47,19 @@ public class BlockEntitySynchronizationManager { public void sendParameterToWatchers(BlockEntitySynchronizationParameter parameter) { watchers.forEach(l -> l.sendParameter(false, parameter)); } + + // Synchronized so we don't conflict with addons that reuse this register method in parallel. + public synchronized static void registerParameter(BlockEntitySynchronizationParameter parameter) { + parameter.setId(lastId); + + REGISTRY.put(lastId++, parameter); + } + + public static BlockEntitySynchronizationParameter getParameter(int id) { + return REGISTRY.get(id); + } + + public static void setParameter(BlockEntitySynchronizationParameter parameter, Object value) { + RS.NETWORK_HANDLER.sendToServer(new BlockEntitySynchronizationParamaterUpdateMessage(parameter, value)); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationSpec.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationSpec.java new file mode 100644 index 000000000..a5b92923a --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationSpec.java @@ -0,0 +1,47 @@ +package com.refinedmods.refinedstorage.blockentity.data; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class BlockEntitySynchronizationSpec { + private final List parameters; + private final List watchedParameters; + + public BlockEntitySynchronizationSpec(List parameters, List watchedParameters) { + this.parameters = Collections.unmodifiableList(parameters); + this.watchedParameters = Collections.unmodifiableList(watchedParameters); + } + + public List getParameters() { + return parameters; + } + + public List getWatchedParameters() { + return watchedParameters; + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private final List parameters = new ArrayList<>(); + private final List watchedParameters = new ArrayList<>(); + + public Builder addParameter(BlockEntitySynchronizationParameter parameter) { + parameters.add(parameter); + return this; + } + + public Builder addWatchedParameter(BlockEntitySynchronizationParameter parameter) { + addParameter(parameter); + watchedParameters.add(parameter); + return this; + } + + public BlockEntitySynchronizationSpec build() { + return new BlockEntitySynchronizationSpec(parameters, watchedParameters); + } + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java index 628085205..c5978ca60 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java @@ -4,12 +4,13 @@ import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; -import com.refinedmods.refinedstorage.screen.BaseScreen; -import com.refinedmods.refinedstorage.screen.grid.GridScreen; import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; import com.refinedmods.refinedstorage.blockentity.config.IType; -import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; +import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; +import com.refinedmods.refinedstorage.screen.BaseScreen; +import com.refinedmods.refinedstorage.screen.grid.GridScreen; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.syncher.EntityDataSerializers; @@ -33,91 +34,27 @@ public class GridBlockEntity extends NetworkNodeBlockEntity { t.getNode().setExactPattern(v); t.getNode().markDirty(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.updateExactPattern(p))); - public static final BlockEntitySynchronizationParameter PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); public static final BlockEntitySynchronizationParameter VIEW_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> { + public static final BlockEntitySynchronizationParameter PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); + public static final BlockEntitySynchronizationParameter VIEW_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> { if (IGrid.isValidViewType(v)) { t.getNode().setViewType(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_ITEM_TAGS = new BlockEntitySynchronizationParameter<>(RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedItemTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedItemTags(v)); - public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_FLUID_TAGS = new BlockEntitySynchronizationParameter<>(RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedFluidTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedFluidTags(v)); public static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> { + public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_FLUID_TAGS = new BlockEntitySynchronizationParameter<>(RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedFluidTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedFluidTags(v)); + public static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> { if (IGrid.isValidSortingDirection(v)) { t.getNode().setSortingDirection(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); - private final GridType type; - private final LazyOptional diskCapability = LazyOptional.of(() -> getNode().getPatterns()); public static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> { if (IGrid.isValidSortingType(v)) { t.getNode().setSortingType(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); - public GridBlockEntity(GridType type, BlockPos pos, BlockState state) { - super(getType(type), pos, state); - - this.type = type; - - dataManager.addWatchedParameter(VIEW_TYPE); - dataManager.addWatchedParameter(SORTING_DIRECTION); - dataManager.addWatchedParameter(SORTING_TYPE); - dataManager.addWatchedParameter(SEARCH_BOX_MODE); - dataManager.addWatchedParameter(SIZE); - dataManager.addWatchedParameter(TAB_SELECTED); - dataManager.addWatchedParameter(TAB_PAGE); - dataManager.addWatchedParameter(EXACT_PATTERN); - dataManager.addWatchedParameter(PROCESSING_PATTERN); - dataManager.addWatchedParameter(PROCESSING_TYPE); - dataManager.addParameter(ALLOWED_ITEM_TAGS); - dataManager.addParameter(ALLOWED_FLUID_TAGS); - } - - public static void trySortGrid(boolean initial) { - if (!initial) { - BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()); - } - } public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { - if (IGrid.isValidSearchBoxMode(v)) { - t.getNode().setSearchBoxMode(v); - t.getNode().markDirty(); - } - }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p))); - - public static BlockEntityType getType(GridType type) { - switch (type) { - case NORMAL: - return RSBlockEntities.GRID; - case CRAFTING: - return RSBlockEntities.CRAFTING_GRID; - case PATTERN: - return RSBlockEntities.PATTERN_GRID; - case FLUID: - return RSBlockEntities.FLUID_GRID; - default: - throw new IllegalArgumentException("Unknown grid type " + type); - } - } - - @Override - @Nonnull - public GridNetworkNode createNode(Level level, BlockPos pos) { - return new GridNetworkNode(level, pos, type); - } public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> { - if (IGrid.isValidSize(v)) { - t.getNode().setSize(v); - t.getNode().markDirty(); - } - }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height))); - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && type == GridType.PATTERN) { - return diskCapability.cast(); - } - - return super.getCapability(cap, direction); - } public static final BlockEntitySynchronizationParameter TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabSelected(), (t, v) -> { t.getNode().setTabSelected(v == t.getNode().getTabSelected() ? -1 : v); t.getNode().markDirty(); @@ -133,15 +70,71 @@ public class GridBlockEntity extends NetworkNodeBlockEntity { t.getNode().clearMatrix(); t.getNode().markDirty(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); + public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> { + if (IGrid.isValidSize(v)) { + t.getNode().setSize(v); + t.getNode().markDirty(); + } + }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height))); + public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { + if (IGrid.isValidSearchBoxMode(v)) { + t.getNode().setSearchBoxMode(v); + t.getNode().markDirty(); + } + }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p))); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(VIEW_TYPE) + .addWatchedParameter(SORTING_DIRECTION) + .addWatchedParameter(SORTING_TYPE) + .addWatchedParameter(SEARCH_BOX_MODE) + .addWatchedParameter(SIZE) + .addWatchedParameter(TAB_SELECTED) + .addWatchedParameter(TAB_PAGE) + .addWatchedParameter(EXACT_PATTERN) + .addWatchedParameter(PROCESSING_PATTERN) + .addWatchedParameter(PROCESSING_TYPE) + .addParameter(ALLOWED_ITEM_TAGS) + .addParameter(ALLOWED_FLUID_TAGS) + .build(); + public static BlockEntityType getType(GridType type) { + return switch (type) { + case NORMAL -> RSBlockEntities.GRID.get(); + case CRAFTING -> RSBlockEntities.CRAFTING_GRID.get(); + case PATTERN -> RSBlockEntities.PATTERN_GRID.get(); + case FLUID -> RSBlockEntities.FLUID_GRID.get(); + }; + } + public static void trySortGrid(boolean initial) { + if (!initial) { + BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()); + } + } + private final GridType type; + private final LazyOptional diskCapability = LazyOptional.of(() -> getNode().getPatterns()); + public GridBlockEntity(GridType type, BlockPos pos, BlockState state) { + super(getType(type), pos, state, SPEC); + this.type = type; + } + @Override + @Nonnull + public GridNetworkNode createNode(Level level, BlockPos pos) { + return new GridNetworkNode(level, pos, type); + } + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction direction) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && type == GridType.PATTERN) { + return diskCapability.cast(); + } - - - + return super.getCapability(cap, direction); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessFluidGrid.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessFluidGrid.java index ff7b31381..24726afad 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessFluidGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessFluidGrid.java @@ -22,7 +22,7 @@ import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; @@ -138,7 +138,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.fluid_grid"); + return Component.translatable("gui.refinedstorage.fluid_grid"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessGrid.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessGrid.java index 627661044..da5e5921f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/WirelessGrid.java @@ -22,7 +22,7 @@ import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; @@ -140,7 +140,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.grid"); + return Component.translatable("gui.refinedstorage.grid"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGrid.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGrid.java index 3f77042f2..ac15d5c96 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGrid.java @@ -42,7 +42,7 @@ import com.refinedmods.refinedstorage.screen.grid.GridScreen; import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -254,7 +254,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.portable_grid"); + return Component.translatable("gui.refinedstorage.portable_grid"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java index ad78b56d6..028bedfdc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java @@ -38,6 +38,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IRedstoneConfigurable; import com.refinedmods.refinedstorage.blockentity.config.RedstoneMode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity; import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; @@ -47,15 +48,14 @@ import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.screen.grid.GridScreen; -import com.refinedmods.refinedstorage.util.StackUtils; import com.refinedmods.refinedstorage.util.LevelUtils; +import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -128,6 +128,16 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I } }); + public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() + .addWatchedParameter(REDSTONE_MODE) + .addWatchedParameter(SORTING_DIRECTION) + .addWatchedParameter(SORTING_TYPE) + .addWatchedParameter(SEARCH_BOX_MODE) + .addWatchedParameter(SIZE) + .addWatchedParameter(TAB_SELECTED) + .addWatchedParameter(TAB_PAGE) + .build(); + private final PortableGridBlockItem.Type type; private final List filters = new ArrayList<>(); private final List tabs = new ArrayList<>(); @@ -158,17 +168,8 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I private boolean loadNextTick; public PortableGridBlockEntity(PortableGridBlockItem.Type type, BlockPos pos, BlockState state) { - super(type == PortableGridBlockItem.Type.CREATIVE ? RSBlockEntities.CREATIVE_PORTABLE_GRID : RSBlockEntities.PORTABLE_GRID, pos, state); - + super(type == PortableGridBlockItem.Type.CREATIVE ? RSBlockEntities.CREATIVE_PORTABLE_GRID.get() : RSBlockEntities.PORTABLE_GRID.get(), pos, state, SPEC); this.type = type; - - dataManager.addWatchedParameter(REDSTONE_MODE); - dataManager.addWatchedParameter(SORTING_DIRECTION); - dataManager.addWatchedParameter(SORTING_TYPE); - dataManager.addWatchedParameter(SEARCH_BOX_MODE); - dataManager.addWatchedParameter(SIZE); - dataManager.addWatchedParameter(TAB_SELECTED); - dataManager.addWatchedParameter(TAB_PAGE); } public static void serverTick(PortableGridBlockEntity blockEntity) { @@ -354,7 +355,7 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I @Override public Component getTitle() { - return new TranslatableComponent("gui.refinedstorage.portable_grid"); + return Component.translatable("gui.refinedstorage.portable_grid"); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/command/disk/CreateDiskCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/disk/CreateDiskCommand.java index 6be2a4436..f8975df2f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/disk/CreateDiskCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/disk/CreateDiskCommand.java @@ -12,8 +12,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.commands.arguments.UuidArgument; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.item.ItemEntity; @@ -40,7 +39,7 @@ public class CreateDiskCommand implements Command { IStorageDisk disk = API.instance().getStorageDiskManager(context.getSource().getLevel()).get(id); if (disk == null) { - context.getSource().sendFailure(new TranslatableComponent("commands.refinedstorage.disk.create.error.disk_not_found", id)); + context.getSource().sendFailure(Component.translatable("commands.refinedstorage.disk.create.error.disk_not_found", id)); } else { IStorageDiskFactory factory = API.instance().getStorageDiskRegistry().get(disk.getFactoryId()); @@ -67,9 +66,9 @@ public class CreateDiskCommand implements Command { } } - context.getSource().sendSuccess(new TranslatableComponent( + context.getSource().sendSuccess(Component.translatable( "commands.refinedstorage.disk.create.success", - new TextComponent(id.toString()).setStyle(Styles.YELLOW), + Component.literal(id.toString()).setStyle(Styles.YELLOW), context.getSource().getDisplayName().copy().setStyle(Styles.YELLOW) ), false); } diff --git a/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskCommand.java index 4eeebb150..7f0028939 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskCommand.java @@ -6,7 +6,7 @@ import com.mojang.brigadier.context.CommandContext; import com.refinedmods.refinedstorage.apiimpl.API; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; public class ListDiskCommand implements Command { public static ArgumentBuilder register() { @@ -21,7 +21,7 @@ public class ListDiskCommand implements Command { API.instance().getStorageDiskManager(context.getSource().getLevel()) .getAll() .keySet() - .forEach(id -> context.getSource().sendSuccess(new TextComponent(id.toString()), false)); + .forEach(id -> context.getSource().sendSuccess(Component.literal(id.toString()), false)); return 0; } diff --git a/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskForPlayerCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskForPlayerCommand.java index 27669cc3e..9d942ba69 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskForPlayerCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/disk/ListDiskForPlayerCommand.java @@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.apiimpl.API; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; import java.util.Map; @@ -28,7 +28,7 @@ public class ListDiskForPlayerCommand implements Command { .stream() .filter(entry -> player.getGameProfile().getId().equals(entry.getValue().getOwner())) .map(Map.Entry::getKey) - .forEach(id -> context.getSource().sendSuccess(new TextComponent(id.toString()), false)); + .forEach(id -> context.getSource().sendSuccess(Component.literal(id.toString()), false)); return 0; } diff --git a/src/main/java/com/refinedmods/refinedstorage/command/network/ListNetworkCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/network/ListNetworkCommand.java index 46b06991f..ba3928c98 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/network/ListNetworkCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/network/ListNetworkCommand.java @@ -10,8 +10,8 @@ import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.DimensionArgument; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import java.text.DecimalFormat; @@ -29,31 +29,31 @@ public class ListNetworkCommand implements Command { public static void sendInfo(CommandContext context, NetworkInList listItem, boolean detailed) { context.getSource().sendSuccess( - new TranslatableComponent( + Component.translatable( "commands.refinedstorage.network.list.pos", listItem.network.getPosition().getX(), listItem.network.getPosition().getY(), listItem.network.getPosition().getZ() ) .append(" [") - .append(new TranslatableComponent( + .append(Component.translatable( "commands.refinedstorage.network.list.tick_times", - new TextComponent(TIME_FORMATTER.format(listItem.tickTime)).setStyle(Styles.YELLOW), - new TextComponent(TIME_FORMATTER.format(listItem.tps)).setStyle(Styles.YELLOW) + Component.literal(TIME_FORMATTER.format(listItem.tickTime)).setStyle(Styles.YELLOW), + Component.literal(TIME_FORMATTER.format(listItem.tps)).setStyle(Styles.YELLOW) )) .append("]"), false); if (detailed) { - context.getSource().sendSuccess(new TranslatableComponent("commands.refinedstorage.network.list.autocrafting_tasks", - new TextComponent(listItem.network.getCraftingManager().getTasks().size() + "").setStyle(Styles.YELLOW) + context.getSource().sendSuccess(Component.translatable("commands.refinedstorage.network.list.autocrafting_tasks", + Component.literal(listItem.network.getCraftingManager().getTasks().size() + "").setStyle(Styles.YELLOW) ), false); - context.getSource().sendSuccess(new TranslatableComponent("commands.refinedstorage.network.list.nodes", - new TextComponent(listItem.network.getNodeGraph().all().size() + "").setStyle(Styles.YELLOW) + context.getSource().sendSuccess(Component.translatable("commands.refinedstorage.network.list.nodes", + Component.literal(listItem.network.getNodeGraph().all().size() + "").setStyle(Styles.YELLOW) ), false); - context.getSource().sendSuccess(new TranslatableComponent("commands.refinedstorage.network.list.energy_usage", - new TextComponent(listItem.network.getEnergyUsage() + "").setStyle(Styles.YELLOW) + context.getSource().sendSuccess(Component.translatable("commands.refinedstorage.network.list.energy_usage", + Component.literal(listItem.network.getEnergyUsage() + "").setStyle(Styles.YELLOW) ), false); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/command/network/NetworkCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/network/NetworkCommand.java index 2c77481dd..8cfc03702 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/network/NetworkCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/network/NetworkCommand.java @@ -9,7 +9,8 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TranslatableComponent; + +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; public abstract class NetworkCommand implements Command { @@ -21,7 +22,7 @@ public abstract class NetworkCommand implements Command { INetwork network = API.instance().getNetworkManager(level).getNetwork(pos); if (network == null) { - context.getSource().sendFailure(new TranslatableComponent("commands.refinedstorage.network.get.error.not_found")); + context.getSource().sendFailure(Component.translatable("commands.refinedstorage.network.get.error.not_found")); return 0; } else { return run(context, network); diff --git a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/CancelAllAutocraftingCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/CancelAllAutocraftingCommand.java index e0f571aeb..540720d3b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/CancelAllAutocraftingCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/CancelAllAutocraftingCommand.java @@ -7,8 +7,8 @@ import com.refinedmods.refinedstorage.command.network.NetworkCommand; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; + public class CancelAllAutocraftingCommand extends NetworkCommand { public static ArgumentBuilder register() { @@ -23,7 +23,7 @@ public class CancelAllAutocraftingCommand extends NetworkCommand { translationKey = "commands.refinedstorage.network.autocrafting.cancel.single"; } - context.getSource().sendSuccess(new TranslatableComponent(translationKey, new TextComponent("" + count).setStyle(Styles.YELLOW)), false); + context.getSource().sendSuccess(Component.translatable(translationKey, Component.literal("" + count).setStyle(Styles.YELLOW)), false); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/GetAutocraftingCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/GetAutocraftingCommand.java index 1a68d6d88..a009d2610 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/GetAutocraftingCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/GetAutocraftingCommand.java @@ -8,7 +8,8 @@ import com.refinedmods.refinedstorage.command.network.NetworkCommand; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.UuidArgument; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; + import java.util.UUID; @@ -26,7 +27,7 @@ public class GetAutocraftingCommand extends NetworkCommand { ICraftingTask task = network.getCraftingManager().getTask(id); if (task == null) { - context.getSource().sendFailure(new TranslatableComponent("commands.refinedstorage.network.autocrafting.get.error.not_found")); + context.getSource().sendFailure(Component.translatable("commands.refinedstorage.network.autocrafting.get.error.not_found")); } else { ListAutocraftingCommand.addInfo(context, task); } diff --git a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/ListAutocraftingCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/ListAutocraftingCommand.java index f6ace2ab1..237933f78 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/ListAutocraftingCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/network/autocrafting/ListAutocraftingCommand.java @@ -10,7 +10,6 @@ import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public class ListAutocraftingCommand extends NetworkCommand { public static ArgumentBuilder register() { @@ -19,12 +18,12 @@ public class ListAutocraftingCommand extends NetworkCommand { public static void addInfo(CommandContext context, ICraftingTask task) { context.getSource().sendSuccess( - new TextComponent(getAmount(task.getRequested()) + "x ") + Component.literal(getAmount(task.getRequested()) + "x ") .append(getName(task.getRequested()).copy().setStyle(Styles.YELLOW)) .append(" ") .append("(" + task.getCompletionPercentage() + "%)") .append(" ") - .append(new TextComponent("[" + task.getId().toString() + "]").setStyle(Styles.GRAY)), + .append(Component.literal("[" + task.getId().toString() + "]").setStyle(Styles.GRAY)), false ); } @@ -50,7 +49,7 @@ public class ListAutocraftingCommand extends NetworkCommand { return info.getFluid().getDisplayName(); } - return TextComponent.EMPTY; + return Component.empty(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/command/pattern/PatternDumpCommand.java b/src/main/java/com/refinedmods/refinedstorage/command/pattern/PatternDumpCommand.java index 310008d0d..f1c33ebf1 100644 --- a/src/main/java/com/refinedmods/refinedstorage/command/pattern/PatternDumpCommand.java +++ b/src/main/java/com/refinedmods/refinedstorage/command/pattern/PatternDumpCommand.java @@ -10,7 +10,7 @@ import com.refinedmods.refinedstorage.item.PatternItem; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -32,71 +32,71 @@ public class PatternDumpCommand implements Command { ICraftingPattern pattern = PatternItem.fromCache(context.getSource().getLevel(), stack); - context.getSource().sendSuccess(new TextComponent("Crafting task factory ID: ").setStyle(Styles.YELLOW).append(new TextComponent(pattern.getCraftingTaskFactoryId().toString()).setStyle(Styles.WHITE)), false); + context.getSource().sendSuccess(Component.literal("Crafting task factory ID: ").setStyle(Styles.YELLOW).append(Component.literal(pattern.getCraftingTaskFactoryId().toString()).setStyle(Styles.WHITE)), false); if (!pattern.isValid()) { - context.getSource().sendFailure(new TextComponent("Pattern is invalid! Reason: ").append(pattern.getErrorMessage())); + context.getSource().sendFailure(Component.literal("Pattern is invalid! Reason: ").append(pattern.getErrorMessage())); } else { - context.getSource().sendSuccess(new TextComponent("Processing: ").setStyle(Styles.YELLOW).append(new TextComponent(String.valueOf(processing)).setStyle(Styles.WHITE)), false); - context.getSource().sendSuccess(new TextComponent("Exact: ").setStyle(Styles.YELLOW).append(new TextComponent(String.valueOf(exact)).setStyle(Styles.WHITE)), false); - context.getSource().sendSuccess(new TextComponent("Has allowed tag list: ").setStyle(Styles.YELLOW).append(new TextComponent(String.valueOf(allowedTagList != null)).setStyle(Styles.WHITE)), false); + context.getSource().sendSuccess(Component.literal("Processing: ").setStyle(Styles.YELLOW).append(Component.literal(String.valueOf(processing)).setStyle(Styles.WHITE)), false); + context.getSource().sendSuccess(Component.literal("Exact: ").setStyle(Styles.YELLOW).append(Component.literal(String.valueOf(exact)).setStyle(Styles.WHITE)), false); + context.getSource().sendSuccess(Component.literal("Has allowed tag list: ").setStyle(Styles.YELLOW).append(Component.literal(String.valueOf(allowedTagList != null)).setStyle(Styles.WHITE)), false); if (pattern.isProcessing()) { for (int i = 0; i < pattern.getInputs().size(); ++i) { if (!pattern.getInputs().get(i).isEmpty()) { - context.getSource().sendSuccess(new TextComponent("Item inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Item inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); for (int j = 0; j < pattern.getInputs().get(i).size(); ++j) { - context.getSource().sendSuccess(new TextComponent("- Possibility #" + j + ": " + pattern.getInputs().get(i).get(j).getCount() + "x ").append(pattern.getInputs().get(i).get(j).getHoverName()), false); + context.getSource().sendSuccess(Component.literal("- Possibility #" + j + ": " + pattern.getInputs().get(i).get(j).getCount() + "x ").append(pattern.getInputs().get(i).get(j).getHoverName()), false); } } if (allowedTagList != null) { for (ResourceLocation allowed : allowedTagList.getAllowedItemTags().get(i)) { - context.getSource().sendSuccess(new TextComponent("- Allowed item tag: " + allowed.toString()), false); + context.getSource().sendSuccess(Component.literal("- Allowed item tag: " + allowed.toString()), false); } } } for (int i = 0; i < pattern.getFluidInputs().size(); ++i) { if (!pattern.getFluidInputs().get(i).isEmpty()) { - context.getSource().sendSuccess(new TextComponent("Fluid inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Fluid inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); for (int j = 0; j < pattern.getFluidInputs().get(i).size(); ++j) { - context.getSource().sendSuccess(new TextComponent("- Possibility #" + j + ": " + pattern.getFluidInputs().get(i).get(j).getAmount() + " mB ").append(pattern.getFluidInputs().get(i).get(j).getDisplayName()), false); + context.getSource().sendSuccess(Component.literal("- Possibility #" + j + ": " + pattern.getFluidInputs().get(i).get(j).getAmount() + " mB ").append(pattern.getFluidInputs().get(i).get(j).getDisplayName()), false); } } if (allowedTagList != null) { for (ResourceLocation allowed : allowedTagList.getAllowedFluidTags().get(i)) { - context.getSource().sendSuccess(new TextComponent("- Allowed fluid tag: " + allowed.toString()), false); + context.getSource().sendSuccess(Component.literal("- Allowed fluid tag: " + allowed.toString()), false); } } } - context.getSource().sendSuccess(new TextComponent("Outputs").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Outputs").setStyle(Styles.YELLOW), false); for (ItemStack output : pattern.getOutputs()) { - context.getSource().sendSuccess(new TextComponent("- " + output.getCount() + "x ").append(output.getHoverName()), false); + context.getSource().sendSuccess(Component.literal("- " + output.getCount() + "x ").append(output.getHoverName()), false); } - context.getSource().sendSuccess(new TextComponent("Fluid outputs").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Fluid outputs").setStyle(Styles.YELLOW), false); for (FluidStack output : pattern.getFluidOutputs()) { - context.getSource().sendSuccess(new TextComponent("- " + output.getAmount() + " mB ").append(output.getDisplayName()), false); + context.getSource().sendSuccess(Component.literal("- " + output.getAmount() + " mB ").append(output.getDisplayName()), false); } } else { for (int i = 0; i < pattern.getInputs().size(); ++i) { if (!pattern.getInputs().get(i).isEmpty()) { - context.getSource().sendSuccess(new TextComponent("Inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Inputs in slot " + i + ":").setStyle(Styles.YELLOW), false); for (int j = 0; j < pattern.getInputs().get(i).size(); ++j) { - context.getSource().sendSuccess(new TextComponent("- Possibility #" + j + ": " + pattern.getInputs().get(i).get(j).getCount() + "x ").append(pattern.getInputs().get(i).get(j).getHoverName()), false); + context.getSource().sendSuccess(Component.literal("- Possibility #" + j + ": " + pattern.getInputs().get(i).get(j).getCount() + "x ").append(pattern.getInputs().get(i).get(j).getHoverName()), false); } } } - context.getSource().sendSuccess(new TextComponent("Outputs").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Outputs").setStyle(Styles.YELLOW), false); for (ItemStack output : pattern.getOutputs()) { - context.getSource().sendSuccess(new TextComponent("- " + output.getCount() + "x ").append(output.getHoverName()), false); + context.getSource().sendSuccess(Component.literal("- " + output.getCount() + "x ").append(output.getHoverName()), false); } boolean anyByproducts = false; @@ -104,18 +104,18 @@ public class PatternDumpCommand implements Command { for (ItemStack byproduct : pattern.getByproducts()) { if (!byproduct.isEmpty()) { if (!anyByproducts) { - context.getSource().sendSuccess(new TextComponent("Byproducts").setStyle(Styles.YELLOW), false); + context.getSource().sendSuccess(Component.literal("Byproducts").setStyle(Styles.YELLOW), false); anyByproducts = true; } - context.getSource().sendSuccess(new TextComponent("- " + byproduct.getCount() + "x ").append(byproduct.getHoverName()), false); + context.getSource().sendSuccess(Component.literal("- " + byproduct.getCount() + "x ").append(byproduct.getHoverName()), false); } } } } } else { - context.getSource().sendFailure(new TextComponent("You need to be holding a pattern in your hand.")); + context.getSource().sendFailure(Component.literal("You need to be holding a pattern in your hand.")); } return 0; diff --git a/src/main/java/com/refinedmods/refinedstorage/container/ConstructorContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/ConstructorContainerMenu.java index 82901f40f..8870ecd1d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/ConstructorContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/ConstructorContainerMenu.java @@ -10,7 +10,7 @@ import net.minecraftforge.items.SlotItemHandler; public class ConstructorContainerMenu extends BaseContainerMenu { public ConstructorContainerMenu(ConstructorBlockEntity constructor, Player player, int windowId) { - super(RSContainerMenus.CONSTRUCTOR, constructor, player, windowId); + super(RSContainerMenus.CONSTRUCTOR.get(), constructor, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(constructor.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/ControllerContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/ControllerContainerMenu.java index 8a5c91915..bc94a4b68 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/ControllerContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/ControllerContainerMenu.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.player.Player; public class ControllerContainerMenu extends BaseContainerMenu { public ControllerContainerMenu(ControllerBlockEntity controller, Player player, int windowId) { - super(RSContainerMenus.CONTROLLER, controller, player, windowId); + super(RSContainerMenus.CONTROLLER.get(), controller, player, windowId); addPlayerInventory(8, 99); } diff --git a/src/main/java/com/refinedmods/refinedstorage/container/CrafterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/CrafterContainerMenu.java index 6889ada79..26a23b890 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/CrafterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/CrafterContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraftforge.items.SlotItemHandler; public class CrafterContainerMenu extends BaseContainerMenu { public CrafterContainerMenu(CrafterBlockEntity crafter, Player player, int windowId) { - super(RSContainerMenus.CRAFTER, crafter, player, windowId); + super(RSContainerMenus.CRAFTER.get(), crafter, player, windowId); for (int i = 0; i < 9; ++i) { addSlot(new SlotItemHandler(crafter.getNode().getPatternInventory(), i, 8 + (18 * i), 20)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/CrafterManagerContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/CrafterManagerContainerMenu.java index 8a6f7c342..818a4c9f5 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/CrafterManagerContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/CrafterManagerContainerMenu.java @@ -35,7 +35,7 @@ public class CrafterManagerContainerMenu extends BaseContainerMenu { private int rows; public CrafterManagerContainerMenu(CrafterManagerBlockEntity crafterManager, Player player, int windowId) { - super(RSContainerMenus.CRAFTER_MANAGER, crafterManager, player, windowId); + super(RSContainerMenus.CRAFTER_MANAGER.get(), crafterManager, player, windowId); this.crafterManager = crafterManager.getNode(); } diff --git a/src/main/java/com/refinedmods/refinedstorage/container/DestructorContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/DestructorContainerMenu.java index d21181684..ba3ebe262 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/DestructorContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/DestructorContainerMenu.java @@ -10,7 +10,7 @@ import net.minecraftforge.items.SlotItemHandler; public class DestructorContainerMenu extends BaseContainerMenu { public DestructorContainerMenu(DestructorBlockEntity destructor, Player player, int windowId) { - super(RSContainerMenus.DESTRUCTOR, destructor, player, windowId); + super(RSContainerMenus.DESTRUCTOR.get(), destructor, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(destructor.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/DetectorContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/DetectorContainerMenu.java index c6d0677ac..0eaeb127a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/DetectorContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/DetectorContainerMenu.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.player.Player; public class DetectorContainerMenu extends BaseContainerMenu { public DetectorContainerMenu(DetectorBlockEntity detector, Player player, int windowId) { - super(RSContainerMenus.DETECTOR, detector, player, windowId); + super(RSContainerMenus.DETECTOR.get(), detector, player, windowId); addSlot(new FilterSlot(detector.getNode().getItemFilters(), 0, 107, 20).setEnableHandler(() -> detector.getNode().getType() == IType.ITEMS)); addSlot(new FluidFilterSlot(detector.getNode().getFluidFilters(), 0, 107, 20).setEnableHandler(() -> detector.getNode().getType() == IType.FLUIDS)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/DiskDriveContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/DiskDriveContainerMenu.java index 08e135a57..486797415 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/DiskDriveContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/DiskDriveContainerMenu.java @@ -10,7 +10,7 @@ import net.minecraftforge.items.SlotItemHandler; public class DiskDriveContainerMenu extends BaseContainerMenu { public DiskDriveContainerMenu(DiskDriveBlockEntity diskDrive, Player player, int windowId) { - super(RSContainerMenus.DISK_DRIVE, diskDrive, player, windowId); + super(RSContainerMenus.DISK_DRIVE.get(), diskDrive, player, windowId); int x = 80; int y = 54; diff --git a/src/main/java/com/refinedmods/refinedstorage/container/DiskManipulatorContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/DiskManipulatorContainerMenu.java index b49ce1333..81844c315 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/DiskManipulatorContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/DiskManipulatorContainerMenu.java @@ -10,7 +10,7 @@ import net.minecraftforge.items.SlotItemHandler; public class DiskManipulatorContainerMenu extends BaseContainerMenu { public DiskManipulatorContainerMenu(DiskManipulatorBlockEntity diskManipulator, Player player, int windowId) { - super(RSContainerMenus.DISK_MANIPULATOR, diskManipulator, player, windowId); + super(RSContainerMenus.DISK_MANIPULATOR.get(), diskManipulator, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(diskManipulator.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/ExporterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/ExporterContainerMenu.java index 0ead9cadb..642153b2d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/ExporterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/ExporterContainerMenu.java @@ -14,7 +14,7 @@ public class ExporterContainerMenu extends BaseContainerMenu { private boolean hasRegulatorMode; public ExporterContainerMenu(ExporterBlockEntity exporter, Player player, int windowId) { - super(RSContainerMenus.EXPORTER, exporter, player, windowId); + super(RSContainerMenus.EXPORTER.get(), exporter, player, windowId); this.exporter = exporter; this.hasRegulatorMode = hasRegulatorMode(); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/ExternalStorageContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/ExternalStorageContainerMenu.java index 107bd1b1a..8134f1d09 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/ExternalStorageContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/ExternalStorageContainerMenu.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.player.Player; public class ExternalStorageContainerMenu extends BaseContainerMenu { public ExternalStorageContainerMenu(ExternalStorageBlockEntity externalStorage, Player player, int windowId) { - super(RSContainerMenus.EXTERNAL_STORAGE, externalStorage, player, windowId); + super(RSContainerMenus.EXTERNAL_STORAGE.get(), externalStorage, player, windowId); for (int i = 0; i < 9; ++i) { addSlot(new FilterSlot(externalStorage.getNode().getItemFilters(), i, 8 + (18 * i), 20).setEnableHandler(() -> externalStorage.getNode().getType() == IType.ITEMS)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/FilterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/FilterContainerMenu.java index 2439cbf96..e328450a7 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/FilterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/FilterContainerMenu.java @@ -17,7 +17,7 @@ public class FilterContainerMenu extends BaseContainerMenu { private final ItemStack filterItem; public FilterContainerMenu(Player player, ItemStack filterItem, int windowId) { - super(RSContainerMenus.FILTER, null, player, windowId); + super(RSContainerMenus.FILTER.get(), null, player, windowId); this.filterItem = filterItem; diff --git a/src/main/java/com/refinedmods/refinedstorage/container/FluidInterfaceContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/FluidInterfaceContainerMenu.java index 9a032560a..7cc37039f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/FluidInterfaceContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/FluidInterfaceContainerMenu.java @@ -9,7 +9,7 @@ import net.minecraftforge.items.SlotItemHandler; public class FluidInterfaceContainerMenu extends BaseContainerMenu { public FluidInterfaceContainerMenu(FluidInterfaceBlockEntity fluidInterface, Player player, int windowId) { - super(RSContainerMenus.FLUID_INTERFACE, fluidInterface, player, windowId); + super(RSContainerMenus.FLUID_INTERFACE.get(), fluidInterface, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(fluidInterface.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/FluidStorageContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/FluidStorageContainerMenu.java index f6bbea66b..622ad6f70 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/FluidStorageContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/FluidStorageContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.player.Player; public class FluidStorageContainerMenu extends BaseContainerMenu { public FluidStorageContainerMenu(FluidStorageBlockEntity fluidStorage, Player player, int windowId) { - super(RSContainerMenus.FLUID_STORAGE_BLOCK, fluidStorage, player, windowId); + super(RSContainerMenus.FLUID_STORAGE_BLOCK.get(), fluidStorage, player, windowId); for (int i = 0; i < 9; ++i) { addSlot(new FluidFilterSlot(fluidStorage.getNode().getFilters(), i, 8 + (18 * i), 20)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/GridContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/GridContainerMenu.java index 7b31b22dc..a112d504b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/GridContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/GridContainerMenu.java @@ -45,7 +45,7 @@ public class GridContainerMenu extends BaseContainerMenu implements ICraftingGri private int patternScrollOffset; public GridContainerMenu(IGrid grid, @Nullable BaseBlockEntity blockEntity, Player player, int windowId) { - super(RSContainerMenus.GRID, blockEntity, player, windowId); + super(RSContainerMenus.GRID.get(), blockEntity, player, windowId); this.grid = grid; diff --git a/src/main/java/com/refinedmods/refinedstorage/container/ImporterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/ImporterContainerMenu.java index 7ac0b1e0c..21ddd76c6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/ImporterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/ImporterContainerMenu.java @@ -10,7 +10,7 @@ import net.minecraftforge.items.SlotItemHandler; public class ImporterContainerMenu extends BaseContainerMenu { public ImporterContainerMenu(ImporterBlockEntity importer, Player player, int windowId) { - super(RSContainerMenus.IMPORTER, importer, player, windowId); + super(RSContainerMenus.IMPORTER.get(), importer, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(importer.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/InterfaceContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/InterfaceContainerMenu.java index 15ad54a39..90630475b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/InterfaceContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/InterfaceContainerMenu.java @@ -9,7 +9,7 @@ import net.minecraftforge.items.SlotItemHandler; public class InterfaceContainerMenu extends BaseContainerMenu { public InterfaceContainerMenu(InterfaceBlockEntity blockEntity, Player player, int windowId) { - super(RSContainerMenus.INTERFACE, blockEntity, player, windowId); + super(RSContainerMenus.INTERFACE.get(), blockEntity, player, windowId); for (int i = 0; i < 9; ++i) { addSlot(new SlotItemHandler(blockEntity.getNode().getImportItems(), i, 8 + (18 * i), 20)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/NetworkTransmitterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/NetworkTransmitterContainerMenu.java index fcbdfb934..dffa3d1eb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/NetworkTransmitterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/NetworkTransmitterContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraftforge.items.SlotItemHandler; public class NetworkTransmitterContainerMenu extends BaseContainerMenu { public NetworkTransmitterContainerMenu(NetworkTransmitterBlockEntity networkTransmitter, Player player, int windowId) { - super(RSContainerMenus.NETWORK_TRANSMITTER, networkTransmitter, player, windowId); + super(RSContainerMenus.NETWORK_TRANSMITTER.get(), networkTransmitter, player, windowId); addSlot(new SlotItemHandler(networkTransmitter.getNode().getNetworkCard(), 0, 8, 20)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/RelayContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/RelayContainerMenu.java index 914f52e39..49e8d919c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/RelayContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/RelayContainerMenu.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.player.Player; public class RelayContainerMenu extends BaseContainerMenu { public RelayContainerMenu(RelayBlockEntity relay, Player player, int windowId) { - super(RSContainerMenus.RELAY, relay, player, windowId); + super(RSContainerMenus.RELAY.get(), relay, player, windowId); addPlayerInventory(8, 50); } diff --git a/src/main/java/com/refinedmods/refinedstorage/container/SecurityManagerContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/SecurityManagerContainerMenu.java index 9e2ee139e..41a40b051 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/SecurityManagerContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/SecurityManagerContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraftforge.items.SlotItemHandler; public class SecurityManagerContainerMenu extends BaseContainerMenu { public SecurityManagerContainerMenu(SecurityManagerBlockEntity securityManager, Player player, int windowId) { - super(RSContainerMenus.SECURITY_MANAGER, securityManager, player, windowId); + super(RSContainerMenus.SECURITY_MANAGER.get(), securityManager, player, windowId); int x = 8; int y = 20; diff --git a/src/main/java/com/refinedmods/refinedstorage/container/StorageContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/StorageContainerMenu.java index 6cd9e3d08..01fe624bb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/StorageContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/StorageContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.player.Player; public class StorageContainerMenu extends BaseContainerMenu { public StorageContainerMenu(StorageBlockEntity storage, Player player, int windowId) { - super(RSContainerMenus.STORAGE_BLOCK, storage, player, windowId); + super(RSContainerMenus.STORAGE_BLOCK.get(), storage, player, windowId); for (int i = 0; i < 9; ++i) { addSlot(new FilterSlot(storage.getNode().getFilters(), i, 8 + (18 * i), 20)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/StorageMonitorContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/StorageMonitorContainerMenu.java index d98e1cf4e..c37915617 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/StorageMonitorContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/StorageMonitorContainerMenu.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.player.Player; public class StorageMonitorContainerMenu extends BaseContainerMenu { public StorageMonitorContainerMenu(StorageMonitorBlockEntity storageMonitor, Player player, int windowId) { - super(RSContainerMenus.STORAGE_MONITOR, storageMonitor, player, windowId); + super(RSContainerMenus.STORAGE_MONITOR.get(), storageMonitor, player, windowId); addSlot(new FilterSlot(storageMonitor.getNode().getItemFilters(), 0, 80, 20).setEnableHandler(() -> storageMonitor.getNode().getType() == IType.ITEMS)); addSlot(new FluidFilterSlot(storageMonitor.getNode().getFluidFilters(), 0, 80, 20).setEnableHandler(() -> storageMonitor.getNode().getType() == IType.FLUIDS)); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/WirelessTransmitterContainerMenu.java b/src/main/java/com/refinedmods/refinedstorage/container/WirelessTransmitterContainerMenu.java index 0bc902753..09763f9cc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/WirelessTransmitterContainerMenu.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/WirelessTransmitterContainerMenu.java @@ -7,7 +7,7 @@ import net.minecraftforge.items.SlotItemHandler; public class WirelessTransmitterContainerMenu extends BaseContainerMenu { public WirelessTransmitterContainerMenu(WirelessTransmitterBlockEntity wirelessTransmitter, Player player, int windowId) { - super(RSContainerMenus.WIRELESS_TRANSMITTER, wirelessTransmitter, player, windowId); + super(RSContainerMenus.WIRELESS_TRANSMITTER.get(), wirelessTransmitter, player, windowId); for (int i = 0; i < 4; ++i) { addSlot(new SlotItemHandler(wirelessTransmitter.getNode().getUpgrades(), i, 187, 6 + (i * 18))); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/factory/CrafterManagerMenuProvider.java b/src/main/java/com/refinedmods/refinedstorage/container/factory/CrafterManagerMenuProvider.java index bc821fa81..0478049f8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/factory/CrafterManagerMenuProvider.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/factory/CrafterManagerMenuProvider.java @@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.blockentity.CrafterManagerBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -46,7 +46,7 @@ public class CrafterManagerMenuProvider implements MenuProvider { @Override public Component getDisplayName() { - return new TranslatableComponent("gui.refinedstorage.crafter_manager"); + return Component.translatable("gui.refinedstorage.crafter_manager"); } @Nullable diff --git a/src/main/java/com/refinedmods/refinedstorage/container/factory/CraftingMonitorContainerFactory.java b/src/main/java/com/refinedmods/refinedstorage/container/factory/CraftingMonitorContainerFactory.java index 44ad1b38c..581482d75 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/factory/CraftingMonitorContainerFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/factory/CraftingMonitorContainerFactory.java @@ -15,6 +15,6 @@ public class CraftingMonitorContainerFactory implements IContainerFactory> { protected void addTags() { TagAppender> packingTapeBlacklist = tag(TagKey.create(Registry.BLOCK_ENTITY_TYPE_REGISTRY, new ResourceLocation("packingtape:blacklist/problematic"))); packingTapeBlacklist.add( - RSBlockEntities.CONTROLLER, - RSBlockEntities.CREATIVE_CONTROLLER, - RSBlockEntities.DETECTOR, - RSBlockEntities.DISK_DRIVE, - RSBlockEntities.EXPORTER, - RSBlockEntities.EXTERNAL_STORAGE, - RSBlockEntities.GRID, - RSBlockEntities.CRAFTING_GRID, - RSBlockEntities.PATTERN_GRID, - RSBlockEntities.FLUID_GRID, - RSBlockEntities.IMPORTER, - RSBlockEntities.NETWORK_TRANSMITTER, - RSBlockEntities.NETWORK_RECEIVER, - RSBlockEntities.RELAY, - RSBlockEntities.CABLE, - RSBlockEntities.ONE_K_STORAGE_BLOCK, - RSBlockEntities.FOUR_K_STORAGE_BLOCK, - RSBlockEntities.SIXTEEN_K_STORAGE_BLOCK, - RSBlockEntities.SIXTY_FOUR_K_STORAGE_BLOCK, - RSBlockEntities.CREATIVE_STORAGE_BLOCK, - RSBlockEntities.SIXTY_FOUR_K_FLUID_STORAGE_BLOCK, - RSBlockEntities.TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK, - RSBlockEntities.THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK, - RSBlockEntities.FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK, - RSBlockEntities.CREATIVE_FLUID_STORAGE_BLOCK, - RSBlockEntities.SECURITY_MANAGER, - RSBlockEntities.INTERFACE, - RSBlockEntities.FLUID_INTERFACE, - RSBlockEntities.WIRELESS_TRANSMITTER, - RSBlockEntities.STORAGE_MONITOR, - RSBlockEntities.CONSTRUCTOR, - RSBlockEntities.DESTRUCTOR, - RSBlockEntities.DISK_MANIPULATOR, - RSBlockEntities.PORTABLE_GRID, - RSBlockEntities.CREATIVE_PORTABLE_GRID, - RSBlockEntities.CRAFTER, - RSBlockEntities.CRAFTER_MANAGER, - RSBlockEntities.CRAFTING_MONITOR + RSBlockEntities.CONTROLLER.get(), + RSBlockEntities.CREATIVE_CONTROLLER.get(), + RSBlockEntities.DETECTOR.get(), + RSBlockEntities.DISK_DRIVE.get(), + RSBlockEntities.EXPORTER.get(), + RSBlockEntities.EXTERNAL_STORAGE.get(), + RSBlockEntities.GRID.get(), + RSBlockEntities.CRAFTING_GRID.get(), + RSBlockEntities.PATTERN_GRID.get(), + RSBlockEntities.FLUID_GRID.get(), + RSBlockEntities.IMPORTER.get(), + RSBlockEntities.NETWORK_TRANSMITTER.get(), + RSBlockEntities.NETWORK_RECEIVER.get(), + RSBlockEntities.RELAY.get(), + RSBlockEntities.CABLE.get(), + RSBlockEntities.ONE_K_STORAGE_BLOCK.get(), + RSBlockEntities.FOUR_K_STORAGE_BLOCK.get(), + RSBlockEntities.SIXTEEN_K_STORAGE_BLOCK.get(), + RSBlockEntities.SIXTY_FOUR_K_STORAGE_BLOCK.get(), + RSBlockEntities.CREATIVE_STORAGE_BLOCK.get(), + RSBlockEntities.SIXTY_FOUR_K_FLUID_STORAGE_BLOCK.get(), + RSBlockEntities.TWO_HUNDRED_FIFTY_SIX_K_FLUID_STORAGE_BLOCK.get(), + RSBlockEntities.THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_BLOCK.get(), + RSBlockEntities.FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK.get(), + RSBlockEntities.CREATIVE_FLUID_STORAGE_BLOCK.get(), + RSBlockEntities.SECURITY_MANAGER.get(), + RSBlockEntities.INTERFACE.get(), + RSBlockEntities.FLUID_INTERFACE.get(), + RSBlockEntities.WIRELESS_TRANSMITTER.get(), + RSBlockEntities.STORAGE_MONITOR.get(), + RSBlockEntities.CONSTRUCTOR.get(), + RSBlockEntities.DESTRUCTOR.get(), + RSBlockEntities.DISK_MANIPULATOR.get(), + RSBlockEntities.PORTABLE_GRID.get(), + RSBlockEntities.CREATIVE_PORTABLE_GRID.get(), + RSBlockEntities.CRAFTER.get(), + RSBlockEntities.CRAFTER_MANAGER.get(), + RSBlockEntities.CRAFTING_MONITOR.get() ); } diff --git a/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModelGenerator.java b/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModelGenerator.java index 3e4a92a33..e533e6b8d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModelGenerator.java +++ b/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModelGenerator.java @@ -25,13 +25,13 @@ public class BlockModelGenerator extends BlockStateProvider { @Override protected void registerStatesAndModels() { - genNorthCutoutModels(RSBlocks.GRID); - genNorthCutoutModels(RSBlocks.CRAFTING_GRID); - genNorthCutoutModels(RSBlocks.PATTERN_GRID); - genNorthCutoutModels(RSBlocks.FLUID_GRID); - genNorthCutoutModels(RSBlocks.CRAFTING_MONITOR); - genNorthCutoutModels(RSBlocks.CRAFTER_MANAGER); - genNorthCutoutModels(RSBlocks.DISK_MANIPULATOR); + genNorthCutoutModels(RSBlocks.GRID, false); + genNorthCutoutModels(RSBlocks.CRAFTING_GRID, false); + genNorthCutoutModels(RSBlocks.PATTERN_GRID, false); + genNorthCutoutModels(RSBlocks.FLUID_GRID, false); + genNorthCutoutModels(RSBlocks.CRAFTING_MONITOR, false); + genNorthCutoutModels(RSBlocks.CRAFTER_MANAGER, false); + genNorthCutoutModels(RSBlocks.DISK_MANIPULATOR, true); genControllerModels(RSBlocks.CONTROLLER); genControllerModels(RSBlocks.CREATIVE_CONTROLLER); genCrafterModels(); @@ -255,41 +255,48 @@ public class BlockModelGenerator extends BlockStateProvider { }); } - private void genNorthCutoutModels(ColorMap blockMap) { + private void genNorthCutoutModels(ColorMap blockMap, boolean useLoader) { blockMap.forEach((color, registryObject) -> { Block block = registryObject.get(); String folderName = blockMap.get(ColorMap.DEFAULT_COLOR).getId().getPath(); - models.horizontalRSBlock(block, state -> { - if (Boolean.FALSE.equals(state.getValue(NetworkNodeBlock.CONNECTED))) { - return models.createCubeNorthCutoutModel( - "block/" + folderName + "/disconnected", - BOTTOM, - resourceLocation(folderName, "top"), - resourceLocation(folderName, "front"), - resourceLocation(folderName, "back"), - resourceLocation(folderName, "right"), - resourceLocation(folderName, "left"), - resourceLocation(folderName, "right"), - resourceLocation(folderName, "cutouts/disconnected") - ); - } else { - ModelFile model = models.createCubeNorthCutoutModel( - "block/" + folderName + "/" + color, - BOTTOM, - resourceLocation(folderName, "top"), - resourceLocation(folderName, "front"), - resourceLocation(folderName, "back"), - resourceLocation(folderName, "right"), - resourceLocation(folderName, "left"), - resourceLocation(folderName, "right"), - resourceLocation(folderName, "cutouts/" + color) - ); + ModelFile disconnected = models.createCubeNorthCutoutModel( + "block/" + folderName + "/disconnected", + BOTTOM, + resourceLocation(folderName, "top"), + resourceLocation(folderName, "front"), + resourceLocation(folderName, "back"), + resourceLocation(folderName, "right"), + resourceLocation(folderName, "left"), + resourceLocation(folderName, "right"), + resourceLocation(folderName, "cutouts/disconnected") + ); + ModelFile connected = models.createCubeNorthCutoutModel( + "block/" + folderName + "/" + color, + BOTTOM, + resourceLocation(folderName, "top"), + resourceLocation(folderName, "front"), + resourceLocation(folderName, "back"), + resourceLocation(folderName, "right"), + resourceLocation(folderName, "left"), + resourceLocation(folderName, "right"), + resourceLocation(folderName, "cutouts/" + color) + ); - simpleBlockItem(block, model); - return model; - } - }, 180); + //generate Item Model + simpleBlockItem(block, connected); + + if (useLoader) { + models.customLoaderRSBlock(block, resourceLocation(folderName, "loader"), connected, disconnected); + } else { + models.horizontalRSBlock(block, state -> { + if (Boolean.FALSE.equals(state.getValue(NetworkNodeBlock.CONNECTED))) { + return disconnected; + } else { + return connected; + } + }, 180); + } }); } diff --git a/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModels.java b/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModels.java index a33929d81..9a6d11f45 100644 --- a/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModels.java +++ b/src/main/java/com/refinedmods/refinedstorage/datageneration/BlockModels.java @@ -8,7 +8,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.ConfiguredModel; +import net.minecraftforge.client.model.generators.CustomLoaderBuilder; import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Function; @@ -73,6 +75,15 @@ public class BlockModels { ); } + public void customLoaderRSBlock(Block block, ResourceLocation path, ModelFile connectedModel, ModelFile disconnectedModel) { + var model = generator.models().getBuilder(path.toString()) + .renderType("cutout").customLoader((builder, filehelper) -> + new CustomLoaderBuilderBasic(new ResourceLocation(RS.ID, "disk_manipulator"), builder, filehelper)).end(); + + generator.getVariantBuilder(block).setModels(generator.getVariantBuilder(block).partialState(), + ConfiguredModel.builder().modelFile(model).buildLast()); + } + public BlockModelBuilder createDetectorModel(String name, ResourceLocation torch) { return generator.models().withExistingParent(name, new ResourceLocation(RS.ID, "detector")) .texture("torch", torch); @@ -126,4 +137,10 @@ public class BlockModels { .texture("north", north) .texture("cutout", cutout); } + + class CustomLoaderBuilderBasic extends CustomLoaderBuilder { + protected CustomLoaderBuilderBasic(ResourceLocation loaderId, BlockModelBuilder parent, ExistingFileHelper existingFileHelper) { + super(loaderId, parent, existingFileHelper); + } + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/datageneration/DataGenerators.java b/src/main/java/com/refinedmods/refinedstorage/datageneration/DataGenerators.java index 24fdf2333..eaab861a1 100644 --- a/src/main/java/com/refinedmods/refinedstorage/datageneration/DataGenerators.java +++ b/src/main/java/com/refinedmods/refinedstorage/datageneration/DataGenerators.java @@ -1,35 +1,30 @@ package com.refinedmods.refinedstorage.datageneration; import com.refinedmods.refinedstorage.RS; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; public class DataGenerators { @SubscribeEvent public void runDataGeneration(GatherDataEvent event) { - if (event.includeClient()) { - event.getGenerator().addProvider(new BlockModelGenerator(event.getGenerator(), RS.ID, event.getExistingFileHelper())); - } - if (event.includeServer()) { - event.getGenerator().addProvider(new RecipeGenerator(event.getGenerator())); - BlockTagGenerator blockTagGenerator = new BlockTagGenerator( - event.getGenerator(), - RS.ID, - event.getExistingFileHelper()); - event.getGenerator().addProvider(blockTagGenerator); - event.getGenerator().addProvider(new ItemTagGenerator( - event.getGenerator(), - blockTagGenerator, - RS.ID, - event.getExistingFileHelper()) - ); - event.getGenerator().addProvider(new BlockEntityTagGenerator( - event.getGenerator(), - RS.ID, - event.getExistingFileHelper() - )); - event.getGenerator().addProvider(new LootTableGenerator(event.getGenerator())); - } + event.getGenerator().addProvider(event.includeClient(), new BlockModelGenerator(event.getGenerator(), RS.ID, event.getExistingFileHelper())); + event.getGenerator().addProvider(event.includeServer(), new RecipeGenerator(event.getGenerator())); + BlockTagGenerator blockTagGenerator = new BlockTagGenerator( + event.getGenerator(), + RS.ID, + event.getExistingFileHelper()); + event.getGenerator().addProvider(event.includeServer(), blockTagGenerator); + event.getGenerator().addProvider(event.includeServer(), new ItemTagGenerator( + event.getGenerator(), + blockTagGenerator, + RS.ID, + event.getExistingFileHelper()) + ); + event.getGenerator().addProvider(event.includeServer(), new BlockEntityTagGenerator( + event.getGenerator(), + RS.ID, + event.getExistingFileHelper() + )); + event.getGenerator().addProvider(event.includeServer(), new LootTableGenerator(event.getGenerator())); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/CoverCraftingCategoryExtension.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/CoverCraftingCategoryExtension.java index 11e5f1d87..19474496e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/CoverCraftingCategoryExtension.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/CoverCraftingCategoryExtension.java @@ -74,6 +74,6 @@ public class CoverCraftingCategoryExtension implements ICraftingCategoryExtensio @Nullable @Override public ResourceLocation getRegistryName() { - return CoverRecipe.SERIALIZER.getRegistryName(); + return ForgeRegistries.RECIPE_SERIALIZERS.getKey(CoverRecipe.SERIALIZER); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GhostIngredientHandler.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GhostIngredientHandler.java index 0743b0ebd..42dc23fe5 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GhostIngredientHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GhostIngredientHandler.java @@ -12,7 +12,7 @@ import mezz.jei.api.gui.handlers.IGhostIngredientHandler; import net.minecraft.client.renderer.Rect2i; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; @@ -53,7 +53,7 @@ public class GhostIngredientHandler implements IGhostIngredientHandler getRecipeClass() { - return Object.class; + public Optional> getMenuType() { + return Optional.of(RSContainerMenus.GRID.get()); + } + + @Override + public RecipeType getRecipeType() { + // This is not actually used, as we register with JEI as a universal handler + return null; } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/HollowCoverCraftingCategoryExtension.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/HollowCoverCraftingCategoryExtension.java index 520d3d686..ceac5b2c8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/HollowCoverCraftingCategoryExtension.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/HollowCoverCraftingCategoryExtension.java @@ -60,7 +60,7 @@ public class HollowCoverCraftingCategoryExtension implements ICraftingCategoryEx @Nullable @Override public ResourceLocation getRegistryName() { - return HollowCoverRecipe.SERIALIZER.getRegistryName(); + return ForgeRegistries.RECIPE_SERIALIZERS.getKey(HollowCoverRecipe.SERIALIZER); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java index 1e1923dbc..dd59c3310 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java @@ -12,7 +12,9 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.RecipeIngredientRole; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.ForgeRegistries; import javax.annotation.Nullable; import java.util.*; @@ -43,12 +45,12 @@ public class IngredientTracker { ICraftingPattern pattern = PatternItem.fromCache(Minecraft.getInstance().level, stack); if (pattern.isValid()) { for (ItemStack outputStack : pattern.getOutputs()) { - storedItems.merge(outputStack.getItem().getRegistryName(), outputStack.getCount(), Integer::sum); + storedItems.merge(registryName(outputStack.getItem()), outputStack.getCount(), Integer::sum); } } } else { - storedItems.merge(stack.getItem().getRegistryName(), available, Integer::sum); + storedItems.merge(registryName(stack.getItem()), available, Integer::sum); } } @@ -107,7 +109,7 @@ public class IngredientTracker { int count = 0; for (ItemStack itemStack : list) { - Integer stored = storedItems.get(itemStack.getItem().getRegistryName()); + Integer stored = storedItems.get(registryName(itemStack.getItem())); if (stored != null && stored > count) { stack = itemStack; count = stored; @@ -116,4 +118,8 @@ public class IngredientTracker { return stack; } + + private ResourceLocation registryName(final Item item) { + return ForgeRegistries.ITEMS.getKey(item); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferCraftingGridError.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferCraftingGridError.java index a2342268c..c04a9dfda 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferCraftingGridError.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferCraftingGridError.java @@ -7,7 +7,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import java.awt.*; import java.util.ArrayList; @@ -39,7 +39,7 @@ public class RecipeTransferCraftingGridError implements IRecipeTransferError { protected List drawIngredientHighlights(PoseStack stack, int recipeX, int recipeY) { List message = new ArrayList<>(); - message.add(new TranslatableComponent("jei.tooltip.transfer")); + message.add(Component.translatable("jei.tooltip.transfer")); boolean craftMessage = false; boolean missingMessage = false; @@ -57,14 +57,14 @@ public class RecipeTransferCraftingGridError implements IRecipeTransferError { } if (missingMessage) { - message.add(new TranslatableComponent("jei.tooltip.error.recipe.transfer.missing").withStyle(ChatFormatting.RED)); + message.add(Component.translatable("jei.tooltip.error.recipe.transfer.missing").withStyle(ChatFormatting.RED)); } if (craftMessage) { if (HOST_OS_IS_MACOS) { - message.add(new TranslatableComponent("gui.refinedstorage.jei.transfer.request_autocrafting_mac").withStyle(ChatFormatting.BLUE)); + message.add(Component.translatable("gui.refinedstorage.jei.transfer.request_autocrafting_mac").withStyle(ChatFormatting.BLUE)); } else { - message.add(new TranslatableComponent("gui.refinedstorage.jei.transfer.request_autocrafting").withStyle(ChatFormatting.BLUE)); + message.add(Component.translatable("gui.refinedstorage.jei.transfer.request_autocrafting").withStyle(ChatFormatting.BLUE)); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferPatternGridError.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferPatternGridError.java index b4269176f..dbc608b34 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferPatternGridError.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/RecipeTransferPatternGridError.java @@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.integration.jei; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import java.util.ArrayList; import java.util.List; @@ -16,7 +16,7 @@ public class RecipeTransferPatternGridError extends RecipeTransferCraftingGridEr @Override protected List drawIngredientHighlights(PoseStack stack, int recipeX, int recipeY) { List message = new ArrayList<>(); - message.add(new TranslatableComponent("jei.tooltip.transfer")); + message.add(Component.translatable("jei.tooltip.transfer")); boolean craftMessage = false; @@ -28,7 +28,7 @@ public class RecipeTransferPatternGridError extends RecipeTransferCraftingGridEr } if (craftMessage) { - message.add(new TranslatableComponent("gui.refinedstorage.jei.transfer.autocrafting_available").withStyle(ChatFormatting.BLUE)); + message.add(Component.translatable("gui.refinedstorage.jei.transfer.autocrafting_available").withStyle(ChatFormatting.BLUE)); } return message; diff --git a/src/main/java/com/refinedmods/refinedstorage/item/CoverItem.java b/src/main/java/com/refinedmods/refinedstorage/item/CoverItem.java index 7980fe8b3..b4c12a533 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/CoverItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/CoverItem.java @@ -16,7 +16,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.BaseComponent; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; @@ -26,7 +25,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.client.model.ModelDataManager; import net.minecraftforge.registries.ForgeRegistries; import javax.annotation.Nonnull; @@ -34,10 +32,9 @@ import javax.annotation.Nullable; import java.util.List; public class CoverItem extends Item { - public static final ItemStack HIDDEN_COVER_ALTERNATIVE = new ItemStack(Blocks.STONE_BRICKS); - private static final String NBT_ITEM = "Item"; + private static final String NBT_ITEM = "Item"; public CoverItem() { super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB)); @@ -67,13 +64,13 @@ public class CoverItem extends Item { ItemStack item = getItem(stack); if (!item.isEmpty()) { - tooltip.add(((BaseComponent) item.getItem().getName(item)).withStyle(ChatFormatting.GRAY)); + tooltip.add(item.getItem().getName(item).copy().withStyle(ChatFormatting.GRAY)); } } @Override public void fillItemCategory(CreativeModeTab group, NonNullList items) { - if (this.allowdedIn(group)) { //Changed from 1.12: to use 1.16 configs + if (this.allowedIn(group)) { if (!RS.CLIENT_CONFIG.getCover().showAllRecipesInJEI()) { ItemStack stack = new ItemStack(this); @@ -128,7 +125,7 @@ public class CoverItem extends Item { if (canPlaceOn(level, pos, facing)) { if (level.isClientSide) { - ModelDataManager.requestModelDataRefresh(blockEntity); + level.getModelDataManager().requestRefresh(blockEntity); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/EnergyItem.java b/src/main/java/com/refinedmods/refinedstorage/item/EnergyItem.java index 6002b6370..c8e2676b7 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/EnergyItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/EnergyItem.java @@ -4,7 +4,7 @@ import com.refinedmods.refinedstorage.item.capabilityprovider.EnergyCapabilityPr import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.util.Mth; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -64,7 +64,7 @@ public abstract class EnergyItem extends Item { if (!creative) { stack.getCapability(CapabilityEnergy.ENERGY, null) - .ifPresent(energy -> tooltip.add(new TranslatableComponent("misc.refinedstorage.energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored()).setStyle(Styles.GRAY))); + .ifPresent(energy -> tooltip.add(Component.translatable("misc.refinedstorage.energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored()).setStyle(Styles.GRAY))); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java b/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java index 26cac855e..ff44294d2 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java @@ -12,7 +12,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IType; import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -146,7 +146,7 @@ public class FilterItem extends Item { player.openMenu(new MenuProvider() { @Override public Component getDisplayName() { - return new TranslatableComponent("gui.refinedstorage.filter"); + return Component.translatable("gui.refinedstorage.filter"); } @Override @@ -163,10 +163,10 @@ public class FilterItem extends Item { public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltip, TooltipFlag flag) { super.appendHoverText(stack, level, tooltip, flag); - tooltip.add(new TranslatableComponent("sidebutton.refinedstorage.mode." + (getMode(stack) == IFilter.MODE_WHITELIST ? "whitelist" : "blacklist")).setStyle(Styles.YELLOW)); + tooltip.add(Component.translatable("sidebutton.refinedstorage.mode." + (getMode(stack) == IFilter.MODE_WHITELIST ? "whitelist" : "blacklist")).setStyle(Styles.YELLOW)); if (isModFilter(stack)) { - tooltip.add(new TranslatableComponent("gui.refinedstorage.filter.mod_filter").setStyle(Styles.BLUE)); + tooltip.add(Component.translatable("gui.refinedstorage.filter.mod_filter").setStyle(Styles.BLUE)); } RenderUtils.addCombinedItemsToTooltip(tooltip, false, new ConfiguredItemsInFilterItemHandler(stack).getConfiguredItems()); diff --git a/src/main/java/com/refinedmods/refinedstorage/item/FluidStorageDiskItem.java b/src/main/java/com/refinedmods/refinedstorage/item/FluidStorageDiskItem.java index 3b5a9bc53..b92716ead 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/FluidStorageDiskItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/FluidStorageDiskItem.java @@ -11,8 +11,6 @@ import com.refinedmods.refinedstorage.apiimpl.storage.FluidStorageType; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; @@ -66,14 +64,14 @@ public class FluidStorageDiskItem extends Item implements IStorageDiskProvider { StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { if (data.getCapacity() == -1) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); } else { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } } if (flag.isAdvanced()) { - tooltip.add(new TextComponent(id.toString()).setStyle(Styles.GRAY)); + tooltip.add(Component.literal(id.toString()).setStyle(Styles.GRAY)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/NetworkCardItem.java b/src/main/java/com/refinedmods/refinedstorage/item/NetworkCardItem.java index d43c2366e..81a866bfd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/NetworkCardItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/NetworkCardItem.java @@ -7,7 +7,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionResult; @@ -89,7 +89,7 @@ public class NetworkCardItem extends Item { ResourceKey type = getDimension(stack); if (pos != null && type != null) { - tooltip.add(new TranslatableComponent( + tooltip.add(Component.translatable( "misc.refinedstorage.network_card.tooltip", pos.getX(), pos.getY(), diff --git a/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java index 68e5c769c..64c60f5a8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java @@ -9,7 +9,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -78,14 +78,14 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv ItemStack stack = player.getItemInHand(hand); if (!level.isClientSide) { - applyNetwork(level.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getItemInHand(hand), PlayerSlot.getSlotForHand(player, hand)), err -> player.sendMessage(err, player.getUUID())); + applyNetwork(level.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getItemInHand(hand), PlayerSlot.getSlotForHand(player, hand)), player::sendSystemMessage); } return InteractionResultHolder.success(stack); } public void applyNetwork(MinecraftServer server, ItemStack stack, Consumer onNetwork, Consumer onError) { - TranslatableComponent notFound = new TranslatableComponent("misc.refinedstorage.network_item.not_found"); + MutableComponent notFound = Component.translatable("misc.refinedstorage.network_item.not_found"); if (!isValid(stack)) { onError.accept(notFound); @@ -118,7 +118,7 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv super.appendHoverText(stack, level, tooltip, flag); if (isValid(stack)) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.network_item.tooltip", getX(stack), getY(stack), getZ(stack)).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.network_item.tooltip", getX(stack), getY(stack), getZ(stack)).setStyle(Styles.GRAY)); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/PatternItem.java b/src/main/java/com/refinedmods/refinedstorage/item/PatternItem.java index 89745c8f2..3de9b27bd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/PatternItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/PatternItem.java @@ -17,7 +17,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -27,7 +26,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import net.minecraftforge.client.IItemRenderProperties; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; @@ -204,12 +203,11 @@ public class PatternItem extends Item implements ICraftingPatternProvider { } @Override - public void initializeClient(Consumer consumer) { + public void initializeClient(Consumer consumer) { super.initializeClient(consumer); - - consumer.accept(new IItemRenderProperties() { + consumer.accept(new IClientItemExtensions() { @Override - public BlockEntityWithoutLevelRenderer getItemStackRenderer() { + public BlockEntityWithoutLevelRenderer getCustomRenderer() { return PatternItemBlockEntityRenderer.getInstance(); } }); @@ -227,12 +225,12 @@ public class PatternItem extends Item implements ICraftingPatternProvider { if (pattern.isValid()) { if (Screen.hasShiftDown() || isProcessing(stack)) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.pattern.inputs").setStyle(Styles.YELLOW)); + tooltip.add(Component.translatable("misc.refinedstorage.pattern.inputs").setStyle(Styles.YELLOW)); RenderUtils.addCombinedItemsToTooltip(tooltip, true, pattern.getInputs().stream().map(i -> !i.isEmpty() ? i.get(0) : ItemStack.EMPTY).collect(Collectors.toList())); RenderUtils.addCombinedFluidsToTooltip(tooltip, true, pattern.getFluidInputs().stream().map(i -> !i.isEmpty() ? i.get(0) : FluidStack.EMPTY).collect(Collectors.toList())); - tooltip.add(new TranslatableComponent("misc.refinedstorage.pattern.outputs").setStyle(Styles.YELLOW)); + tooltip.add(Component.translatable("misc.refinedstorage.pattern.outputs").setStyle(Styles.YELLOW)); } RenderUtils.addCombinedItemsToTooltip(tooltip, true, pattern.getOutputs()); @@ -243,14 +241,14 @@ public class PatternItem extends Item implements ICraftingPatternProvider { } if (isExact(stack)) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.pattern.exact").setStyle(Styles.BLUE)); + tooltip.add(Component.translatable("misc.refinedstorage.pattern.exact").setStyle(Styles.BLUE)); } if (isProcessing(stack)) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.processing").setStyle(Styles.BLUE)); + tooltip.add(Component.translatable("misc.refinedstorage.processing").setStyle(Styles.BLUE)); } } else { - tooltip.add(new TranslatableComponent("misc.refinedstorage.pattern.invalid").setStyle(Styles.RED)); + tooltip.add(Component.translatable("misc.refinedstorage.pattern.invalid").setStyle(Styles.RED)); tooltip.add(pattern.getErrorMessage().plainCopy().setStyle(Styles.GRAY)); } } @@ -260,7 +258,7 @@ public class PatternItem extends Item implements ICraftingPatternProvider { Set allowedTags = pattern.getAllowedTagList().getAllowedItemTags().get(i); for (ResourceLocation tag : allowedTags) { - tooltip.add(new TranslatableComponent( + tooltip.add(Component.translatable( "misc.refinedstorage.pattern.allowed_item_tag", tag.toString(), pattern.getInputs().get(i).get(0).getHoverName() @@ -272,7 +270,7 @@ public class PatternItem extends Item implements ICraftingPatternProvider { Set allowedTags = pattern.getAllowedTagList().getAllowedFluidTags().get(i); for (ResourceLocation tag : allowedTags) { - tooltip.add(new TranslatableComponent( + tooltip.add(Component.translatable( "misc.refinedstorage.pattern.allowed_fluid_tag", tag.toString(), pattern.getFluidInputs().get(i).get(0).getDisplayName() diff --git a/src/main/java/com/refinedmods/refinedstorage/item/SecurityCardItem.java b/src/main/java/com/refinedmods/refinedstorage/item/SecurityCardItem.java index 86129abe3..db4507b09 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/SecurityCardItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/SecurityCardItem.java @@ -5,8 +5,6 @@ import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; @@ -78,12 +76,12 @@ public class SecurityCardItem extends Item { super.appendHoverText(stack, level, tooltip, flag); if (stack.hasTag() && stack.getTag().contains(NBT_OWNER_NAME)) { - tooltip.add(new TranslatableComponent("item.refinedstorage.security_card.owner", stack.getTag().getString(NBT_OWNER_NAME)).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("item.refinedstorage.security_card.owner", stack.getTag().getString(NBT_OWNER_NAME)).setStyle(Styles.GRAY)); } for (Permission permission : Permission.values()) { if (hasPermission(stack, permission)) { - tooltip.add(new TextComponent("- ").append(new TranslatableComponent("gui.refinedstorage.security_manager.permission." + permission.getId())).setStyle(Styles.GRAY)); + tooltip.add(Component.literal("- ").append(Component.translatable("gui.refinedstorage.security_manager.permission." + permission.getId())).setStyle(Styles.GRAY)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/StorageDiskItem.java b/src/main/java/com/refinedmods/refinedstorage/item/StorageDiskItem.java index 899e77239..c00ec4d50 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/StorageDiskItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/StorageDiskItem.java @@ -11,8 +11,6 @@ import com.refinedmods.refinedstorage.apiimpl.storage.ItemStorageType; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; @@ -66,14 +64,14 @@ public class StorageDiskItem extends Item implements IStorageDiskProvider { StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { if (data.getCapacity() == -1) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); } else { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } } if (flag.isAdvanced()) { - tooltip.add(new TextComponent(id.toString()).setStyle(Styles.GRAY)); + tooltip.add(Component.literal(id.toString()).setStyle(Styles.GRAY)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/UpgradeItem.java b/src/main/java/com/refinedmods/refinedstorage/item/UpgradeItem.java index f56418cca..ca9786466 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/UpgradeItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/UpgradeItem.java @@ -3,7 +3,6 @@ package com.refinedmods.refinedstorage.item; import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -27,9 +26,9 @@ public class UpgradeItem extends Item { if (type.getFortuneLevel() > 0) { tooltip.add( - new TranslatableComponent("enchantment.minecraft.fortune") + Component.translatable("enchantment.minecraft.fortune") .append(" ") - .append(new TranslatableComponent("enchantment.level." + type.getFortuneLevel())) + .append(Component.translatable("enchantment.level." + type.getFortuneLevel())) .setStyle(Styles.GRAY) ); } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ColoredBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ColoredBlockItem.java index 6e6728ab5..36dc1e1b6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ColoredBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ColoredBlockItem.java @@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.item.blockitem; import com.refinedmods.refinedstorage.block.BaseBlock; import com.refinedmods.refinedstorage.util.ColorMap; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -14,7 +14,7 @@ public class ColoredBlockItem extends BaseBlockItem { super(block, builder); if (color != ColorMap.DEFAULT_COLOR) { - this.displayName = new TranslatableComponent("color.minecraft." + color.getName()) + this.displayName = Component.translatable("color.minecraft." + color.getName()) .append(" ") .append(displayName); } else { diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ControllerBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ControllerBlockItem.java index 4748f328f..04eb9f122 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ControllerBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/ControllerBlockItem.java @@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.api.network.NetworkType; import com.refinedmods.refinedstorage.block.ControllerBlock; import com.refinedmods.refinedstorage.util.ColorMap; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -17,7 +17,7 @@ public class ControllerBlockItem extends EnergyBlockItem { super(block, new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1), block.getType() == NetworkType.CREATIVE, () -> RS.SERVER_CONFIG.getController().getCapacity()); if (color != ColorMap.DEFAULT_COLOR) { - this.displayName = new TranslatableComponent("color.minecraft." + color.getName()) + this.displayName = Component.translatable("color.minecraft." + color.getName()) .append(" ") .append(displayName); } else { diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/EnergyBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/EnergyBlockItem.java index 117112979..9153e8f12 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/EnergyBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/EnergyBlockItem.java @@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.item.capabilityprovider.EnergyCapabilityPr import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.util.Mth; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -64,7 +64,7 @@ public abstract class EnergyBlockItem extends BaseBlockItem { super.appendHoverText(stack, level, tooltip, flag); if (!creative) { - stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(energy -> tooltip.add(new TranslatableComponent("misc.refinedstorage.energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored()).setStyle(Styles.GRAY))); + stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(energy -> tooltip.add(Component.translatable("misc.refinedstorage.energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored()).setStyle(Styles.GRAY))); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/FluidStorageBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/FluidStorageBlockItem.java index caf6dfd85..6b075f4d9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/FluidStorageBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/FluidStorageBlockItem.java @@ -13,8 +13,6 @@ import com.refinedmods.refinedstorage.item.FluidStoragePartItem; import com.refinedmods.refinedstorage.item.ProcessorItem; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; @@ -52,14 +50,14 @@ public class FluidStorageBlockItem extends BaseBlockItem { StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { if (data.getCapacity() == -1) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); } else { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } } if (flag.isAdvanced()) { - tooltip.add(new TextComponent(id.toString()).setStyle(Styles.GRAY)); + tooltip.add(Component.literal(id.toString()).setStyle(Styles.GRAY)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java index 6accaa97b..60dc0afac 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java @@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -56,7 +56,7 @@ public class PortableGridBlockItem extends EnergyBlockItem { public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltip, TooltipFlag flag) { super.appendHoverText(stack, level, tooltip, flag); - tooltip.add(new TranslatableComponent("block.refinedstorage.portable_grid.tooltip").setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("block.refinedstorage.portable_grid.tooltip").setStyle(Styles.GRAY)); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/StorageBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/StorageBlockItem.java index 568cef7da..cb56bbec9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/StorageBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/StorageBlockItem.java @@ -11,8 +11,6 @@ import com.refinedmods.refinedstorage.block.StorageBlock; import com.refinedmods.refinedstorage.item.StoragePartItem; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; @@ -49,14 +47,14 @@ public class StorageBlockItem extends BaseBlockItem { StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { if (data.getCapacity() == -1) { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); } else { - tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); + tooltip.add(Component.translatable("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } } if (flag.isAdvanced()) { - tooltip.add(new TextComponent(id.toString()).setStyle(Styles.GRAY)); + tooltip.add(Component.literal(id.toString()).setStyle(Styles.GRAY)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/network/ClientProxy.java b/src/main/java/com/refinedmods/refinedstorage/network/ClientProxy.java index aa0d31492..94a0eb073 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/ClientProxy.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/ClientProxy.java @@ -8,7 +8,8 @@ import com.refinedmods.refinedstorage.screen.grid.CraftingPreviewScreen; import com.refinedmods.refinedstorage.screen.grid.CraftingSettingsScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; + public class ClientProxy { private ClientProxy() { @@ -27,7 +28,7 @@ public class ClientProxy { message.getId(), message.getQuantity(), message.isFluids(), - new TranslatableComponent("gui.refinedstorage.crafting_preview"), + Component.translatable("gui.refinedstorage.crafting_preview"), Minecraft.getInstance().player.getInventory() )); } diff --git a/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java index e051fff9c..4beff51db 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java @@ -39,7 +39,7 @@ public class OpenNetworkItemMessage { } if (stack.getItem() instanceof NetworkItem) { - ((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack, message.slot), err -> player.sendMessage(err, player.getUUID())); + ((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack, message.slot), player::sendSystemMessage); } else if (stack.getItem() instanceof PortableGridBlockItem) { API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, player, stack, message.slot); } diff --git a/src/main/java/com/refinedmods/refinedstorage/recipe/UpgradeWithEnchantedBookRecipeSerializer.java b/src/main/java/com/refinedmods/refinedstorage/recipe/UpgradeWithEnchantedBookRecipeSerializer.java index 69c37641b..3136665fb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/recipe/UpgradeWithEnchantedBookRecipeSerializer.java +++ b/src/main/java/com/refinedmods/refinedstorage/recipe/UpgradeWithEnchantedBookRecipeSerializer.java @@ -7,11 +7,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.ForgeRegistryEntry; import javax.annotation.Nullable; -public class UpgradeWithEnchantedBookRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { +public class UpgradeWithEnchantedBookRecipeSerializer implements RecipeSerializer { @Override public UpgradeWithEnchantedBookRecipe fromJson(ResourceLocation recipeId, JsonObject json) { JsonObject enchantmentInfo = json.getAsJsonObject("enchantment"); @@ -40,7 +39,7 @@ public class UpgradeWithEnchantedBookRecipeSerializer extends ForgeRegistryEntry @Override public void toNetwork(FriendlyByteBuf buffer, UpgradeWithEnchantedBookRecipe recipe) { buffer.writeItem(recipe.getResult()); - buffer.writeResourceLocation(recipe.getEnchant().enchantment.getRegistryName()); + buffer.writeResourceLocation(ForgeRegistries.ENCHANTMENTS.getKey(recipe.getEnchant().enchantment)); buffer.writeInt(recipe.getEnchant().level); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/render/FluidRenderer.java b/src/main/java/com/refinedmods/refinedstorage/render/FluidRenderer.java index 01f330f6e..199a21f8a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/FluidRenderer.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/FluidRenderer.java @@ -9,7 +9,8 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nullable; @@ -18,7 +19,7 @@ import javax.annotation.Nullable; * @see JEI implementation */ public class FluidRenderer { - public static final FluidRenderer INSTANCE = new FluidRenderer(FluidAttributes.BUCKET_VOLUME, 16, 16, 16); + public static final FluidRenderer INSTANCE = new FluidRenderer(FluidType.BUCKET_VOLUME, 16, 16, 16); private static final int TEX_WIDTH = 16; private static final int TEX_HEIGHT = 16; @@ -38,7 +39,7 @@ public class FluidRenderer { private static TextureAtlasSprite getStillFluidSprite(FluidStack fluidStack) { Minecraft minecraft = Minecraft.getInstance(); Fluid fluid = fluidStack.getFluid(); - FluidAttributes attributes = fluid.getAttributes(); + IClientFluidTypeExtensions attributes = IClientFluidTypeExtensions.of(fluid); ResourceLocation fluidStill = attributes.getStillTexture(fluidStack); return minecraft.getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(fluidStill); } @@ -93,8 +94,8 @@ public class FluidRenderer { TextureAtlasSprite fluidStillSprite = getStillFluidSprite(fluidStack); - FluidAttributes attributes = fluid.getAttributes(); - int fluidColor = attributes.getColor(fluidStack); + IClientFluidTypeExtensions attributes = IClientFluidTypeExtensions.of(fluid); + int fluidColor = attributes.getTintColor(fluidStack); int amount = fluidStack.getAmount(); int scaledAmount = (amount * height) / capacityMb; diff --git a/src/main/java/com/refinedmods/refinedstorage/render/blockentity/PatternItemBlockEntityRenderer.java b/src/main/java/com/refinedmods/refinedstorage/render/blockentity/PatternItemBlockEntityRenderer.java index 8829bdf92..05b6fa9fb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/blockentity/PatternItemBlockEntityRenderer.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/blockentity/PatternItemBlockEntityRenderer.java @@ -10,8 +10,7 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.client.RenderProperties; -import net.minecraftforge.common.util.NonNullLazy; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; public class PatternItemBlockEntityRenderer extends BlockEntityWithoutLevelRenderer { private static PatternItemBlockEntityRenderer instance; @@ -26,7 +25,8 @@ public class PatternItemBlockEntityRenderer extends BlockEntityWithoutLevelRende ItemStack outputStack = pattern.getOutputs().get(0); - RenderProperties.get(outputStack.getItem()).getItemStackRenderer().renderByItem(outputStack, transformType, poseStack, renderTypeBuffer, combinedLight, combinedOverlay); + IClientItemExtensions.of(outputStack.getItem()).getCustomRenderer() + .renderByItem(outputStack, transformType, poseStack, renderTypeBuffer, combinedLight, combinedOverlay); } public static PatternItemBlockEntityRenderer getInstance() { diff --git a/src/main/java/com/refinedmods/refinedstorage/render/blockentity/StorageMonitorBlockEntityRenderer.java b/src/main/java/com/refinedmods/refinedstorage/render/blockentity/StorageMonitorBlockEntityRenderer.java index 38150b88d..54f57422f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/blockentity/StorageMonitorBlockEntityRenderer.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/blockentity/StorageMonitorBlockEntityRenderer.java @@ -25,8 +25,8 @@ import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.model.TransformationHelper; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.common.util.TransformationHelper; import net.minecraftforge.fluids.FluidStack; public class StorageMonitorBlockEntityRenderer implements BlockEntityRenderer { @@ -144,10 +144,10 @@ public class StorageMonitorBlockEntityRenderer implements BlockEntityRenderer> implements IUnbakedGeometry { + protected abstract Set getModels(); + + @Override + public Collection getMaterials(final IGeometryBakingContext context, + final Function modelGetter, + final Set> missingTextureErrors) { + return getModels() + .stream() + .map(modelGetter) + .flatMap(unbakedModel -> unbakedModel.getMaterials(modelGetter, missingTextureErrors).stream()) + .toList(); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/CubeBuilder.java b/src/main/java/com/refinedmods/refinedstorage/render/model/CubeBuilder.java index 1ea330ac3..4f6dd55fc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/CubeBuilder.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/CubeBuilder.java @@ -1,13 +1,10 @@ package com.refinedmods.refinedstorage.render.model; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.VertexFormat; -import com.mojang.blaze3d.vertex.VertexFormatElement; import com.mojang.math.Vector3f; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; -import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; +import net.minecraftforge.client.model.pipeline.QuadBakingVertexConsumer; import java.util.ArrayList; import java.util.HashMap; @@ -16,11 +13,9 @@ import java.util.Map; import java.util.function.Function; public class CubeBuilder { - private Vector3f from; private Vector3f to; - private VertexFormat format = DefaultVertexFormat.BLOCK; //Changed from Item - private Map faces = new HashMap<>(); + private final Map faces = new HashMap<>(); private int color = 0xFFFFFFFF; public CubeBuilder from(float x, float y, float z) { @@ -66,11 +61,13 @@ public class CubeBuilder { } private BakedQuad bakeFace(Direction facing, Face cubeFace) { - BakedQuadBuilder builder = new BakedQuadBuilder(cubeFace.sprite); + List quad = new ArrayList<>(); + QuadBakingVertexConsumer builder = new QuadBakingVertexConsumer(quad::add); - builder.setQuadOrientation(facing); - builder.setQuadTint(-1); - builder.setApplyDiffuseLighting(true); + builder.setSprite(cubeFace.sprite); + builder.setDirection(facing); + builder.setTintIndex(-1); + builder.setShade(true); Uv uv = getDefaultUv(facing, cubeFace.sprite, from.x(), from.y(), from.z(), to.x(), to.y(), to.z()); @@ -113,7 +110,7 @@ public class CubeBuilder { break; } - return builder.build(); + return quad.get(0); } private Uv getDefaultUv(Direction face, TextureAtlasSprite texture, float fromX, float fromY, float fromZ, float toX, float toY, float toZ) { @@ -161,7 +158,7 @@ public class CubeBuilder { return uv; } - private void addVertexTopLeft(BakedQuadBuilder builder, Face face, float x, float y, float z, Uv uv) { + private void addVertexTopLeft(QuadBakingVertexConsumer builder, Face face, float x, float y, float z, Uv uv) { float u; float v; @@ -188,7 +185,7 @@ public class CubeBuilder { addVertex(builder, face, x, y, z, u, v); } - private void addVertexTopRight(BakedQuadBuilder builder, Face face, float x, float y, float z, Uv uv) { + private void addVertexTopRight(QuadBakingVertexConsumer builder, Face face, float x, float y, float z, Uv uv) { float u; float v; @@ -215,7 +212,7 @@ public class CubeBuilder { addVertex(builder, face, x, y, z, u, v); } - private void addVertexBottomRight(BakedQuadBuilder builder, Face face, float x, float y, float z, Uv uv) { + private void addVertexBottomRight(QuadBakingVertexConsumer builder, Face face, float x, float y, float z, Uv uv) { float u; float v; @@ -242,7 +239,7 @@ public class CubeBuilder { addVertex(builder, face, x, y, z, u, v); } - private void addVertexBottomLeft(BakedQuadBuilder builder, Face face, float x, float y, float z, Uv uv) { + private void addVertexBottomLeft(QuadBakingVertexConsumer builder, Face face, float x, float y, float z, Uv uv) { float u; float v; @@ -269,40 +266,16 @@ public class CubeBuilder { addVertex(builder, face, x, y, z, u, v); } - private void addVertex(BakedQuadBuilder builder, Face face, float x, float y, float z, float u, float v) { - VertexFormat format = builder.getVertexFormat(); - - for (int i = 0; i < format.getElements().size(); i++) { - VertexFormatElement e = format.getElements().get(i); - - switch (e.getUsage()) { - case POSITION: - builder.put(i, x, y, z); - break; - case NORMAL: - builder.put(i, face.face.getStepX(), face.face.getStepY(), face.face.getStepZ()); - break; - case COLOR: - float r = (color >> 16 & 0xFF) / 255F; - float g = (color >> 8 & 0xFF) / 255F; - float b = (color & 0xFF) / 255F; - float a = (color >> 24 & 0xFF) / 255F; - - builder.put(i, r, g, b, a); - break; - case UV: - if (e.getIndex() == 0) { - builder.put(i, u, v); - } else { - builder.put(i, (float) (face.light * 0x20) / 0xFFFF, (float) (face.light * 0x20) / 0xFFFF); - } - - break; - default: - builder.put(i); - break; - } - } + private void addVertex(QuadBakingVertexConsumer builder, Face face, float x, float y, float z, float u, float v) { + builder.vertex(x, y, z); + builder.normal(face.face.getStepX(), face.face.getStepY(), face.face.getStepZ()); + float r = (color >> 16 & 0xFF) / 255F; + float g = (color >> 8 & 0xFF) / 255F; + float b = (color & 0xFF) / 255F; + float a = (color >> 24 & 0xFF) / 255F; + builder.uv(u, v); + builder.color(r, g, b, a); + builder.endVertex(); } public enum UvRotation { @@ -320,27 +293,13 @@ public class CubeBuilder { } public static class Face { - private Direction face; - private TextureAtlasSprite sprite; - private int light; - private UvRotation uvRotation = UvRotation.CLOCKWISE_0; + private final Direction face; + private final TextureAtlasSprite sprite; + private final UvRotation uvRotation = UvRotation.CLOCKWISE_0; public Face(Direction face, TextureAtlasSprite sprite) { this.face = face; this.sprite = sprite; } - - public Face(Direction face, TextureAtlasSprite sprite, UvRotation uvRotation) { - this(face, sprite); - - this.uvRotation = uvRotation; - } - - public Face(Direction face, TextureAtlasSprite sprite, UvRotation uvRotation, int light) { - this(face, sprite, uvRotation); - - this.light = light; - } } - } diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DelegateBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DelegateBakedModel.java deleted file mode 100644 index f662a745f..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/DelegateBakedModel.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; -import java.util.List; -import java.util.Random; - -public class DelegateBakedModel implements BakedModel { - protected final BakedModel base; - - public DelegateBakedModel(BakedModel base) { - this.base = base; - } - - @Override - @SuppressWarnings("deprecation") - public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand) { - return base.getQuads(state, side, rand); - } - - @Override - public boolean useAmbientOcclusion() { - return base.useAmbientOcclusion(); - } - - @Override - public boolean isGui3d() { - return base.isGui3d(); - } - - @Override - public boolean usesBlockLight() { - return base.usesBlockLight(); - } - - @Override - public boolean isCustomRenderer() { - return base.isCustomRenderer(); - } - - @Override - @SuppressWarnings("deprecation") - public TextureAtlasSprite getParticleIcon() { - return base.getParticleIcon(); - } - - @Override - public ItemOverrides getOverrides() { - return base.getOverrides(); - } - - @Override - @SuppressWarnings("deprecation") - public ItemTransforms getTransforms() { - return base.getTransforms(); - } - - @Override - @SuppressWarnings("deprecation") - public BakedModel handlePerspective(ItemTransforms.TransformType cameraTransformType, PoseStack poseStack) { - return base.handlePerspective(cameraTransformType, poseStack); - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveBakedModel.java deleted file mode 100644 index 17ca2ab1d..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveBakedModel.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.mojang.math.Vector3f; -import com.refinedmods.refinedstorage.RSBlocks; -import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; -import com.refinedmods.refinedstorage.blockentity.DiskDriveBlockEntity; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -public class DiskDriveBakedModel extends DelegateBakedModel { - private final BakedModel disk; - private final BakedModel diskNearCapacity; - private final BakedModel diskFull; - private final BakedModel diskDisconnected; - private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { - @Override - @SuppressWarnings("deprecation") - public List load(CacheKey key) { - Direction facing = key.state.getValue(RSBlocks.DISK_DRIVE.get().getDirection().getProperty()); - - List quads = new ArrayList<>(QuadTransformer.getTransformedQuads(base, facing, null, key.state, key.random, key.side)); - - int x = 0; - int y = 0; - for (int i = 0; i < 8; ++i) { - if (key.diskState[i] != DiskState.NONE) { - BakedModel diskModel = getDiskModel(key.diskState[i]); - - quads.addAll(QuadTransformer.getTransformedQuads( - diskModel, - facing, - getDiskTranslation(facing, x, y), - key.state, - key.random, - key.side - )); - } - - x++; - if ((i + 1) % 2 == 0) { - y++; - x = 0; - } - } - - return quads; - } - - private BakedModel getDiskModel(DiskState diskState) { - switch (diskState) { - case DISCONNECTED: - return diskDisconnected; - case NEAR_CAPACITY: - return diskNearCapacity; - case FULL: - return diskFull; - default: - return disk; - } - } - - private Vector3f getDiskTranslation(Direction facing, int x, int y) { - Vector3f translation = new Vector3f(); - - if (facing == Direction.NORTH || facing == Direction.SOUTH) { - translation.add(((2F / 16F) + ((float) x * 7F) / 16F) * (facing == Direction.NORTH ? -1 : 1), 0, 0); // Add to X - } else if (facing == Direction.EAST || facing == Direction.WEST) { - translation.add(0, 0, ((2F / 16F) + ((float) x * 7F) / 16F) * (facing == Direction.EAST ? -1 : 1)); // Add to Z - } - - translation.add(0, -((2F / 16F) + ((float) y * 3F) / 16F), 0); // Remove from Y - - return translation; - } - }); - - public DiskDriveBakedModel(BakedModel base, - BakedModel disk, - BakedModel diskNearCapacity, - BakedModel diskFull, - BakedModel diskDisconnected) { - super(base); - - this.disk = disk; - this.diskNearCapacity = diskNearCapacity; - this.diskFull = diskFull; - this.diskDisconnected = diskDisconnected; - } - - @Nonnull - @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull Random rand, @Nonnull IModelData data) { - DiskState[] diskState = data.getData(DiskDriveBlockEntity.DISK_STATE_PROPERTY); - - if (diskState == null) { - return base.getQuads(state, side, rand, data); - } - - CacheKey key = new CacheKey(state, side, diskState, rand); - - return cache.getUnchecked(key); - } - - private static class CacheKey { - private final BlockState state; - private final Direction side; - private final DiskState[] diskState; - private final Random random; - - CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, Random random) { - this.state = state; - this.side = side; - this.diskState = diskState; - this.random = random; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o == null || getClass() != o.getClass()) { - return false; - } - - CacheKey cacheKey = (CacheKey) o; - - if (!state.equals(cacheKey.state)) { - return false; - } - - if (side != cacheKey.side) { - return false; - } - - return Arrays.equals(diskState, cacheKey.diskState); - } - - @Override - public int hashCode() { - int result = state.hashCode(); - result = 31 * result + (side != null ? side.hashCode() : 0); - result = 31 * result + Arrays.hashCode(diskState); - return result; - } - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveGeometryLoader.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveGeometryLoader.java new file mode 100644 index 000000000..79c4d3350 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveGeometryLoader.java @@ -0,0 +1,13 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraftforge.client.model.geometry.IGeometryLoader; + +public class DiskDriveGeometryLoader implements IGeometryLoader { + @Override + public DiskDriveUnbakedGeometry read(final JsonObject jsonObject, + final JsonDeserializationContext deserializationContext) { + return new DiskDriveUnbakedGeometry(); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveUnbakedGeometry.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveUnbakedGeometry.java new file mode 100644 index 000000000..978b59adb --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskDriveUnbakedGeometry.java @@ -0,0 +1,82 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.mojang.math.Transformation; +import com.mojang.math.Vector3f; +import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.render.model.baked.DiskDriveBakedModel; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.SimpleModelState; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; + +import java.util.Objects; +import java.util.Set; +import java.util.function.BiFunction; +import java.util.function.Function; + +import static com.refinedmods.refinedstorage.util.RenderUtils.getQuaternion; + +public class DiskDriveUnbakedGeometry extends AbstractUnbakedGeometry { + private static final ResourceLocation BASE_MODEL = new ResourceLocation(RS.ID, "block/disk_drive_base"); + private static final ResourceLocation DISK_MODEL = new ResourceLocation(RS.ID, "block/disks/disk"); + private static final ResourceLocation DISK_DISCONNECTED_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_disconnected"); + private static final ResourceLocation DISK_FULL_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_full"); + private static final ResourceLocation DISK_NEAR_CAPACITY_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_near_capacity"); + + @Override + protected Set getModels() { + return Set.of( + BASE_MODEL, + DISK_MODEL, + DISK_DISCONNECTED_MODEL, + DISK_FULL_MODEL, + DISK_NEAR_CAPACITY_MODEL + ); + } + + @Override + public BakedModel bake(final IGeometryBakingContext context, + final ModelBakery bakery, + final Function spriteGetter, + final ModelState modelState, + final ItemOverrides overrides, + final ResourceLocation modelLocation) { + return new DiskDriveBakedModel( + Objects.requireNonNull(bakery.bake(BASE_MODEL, modelState, spriteGetter)), + getBaseModelBakery(modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_NEAR_CAPACITY_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_FULL_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_DISCONNECTED_MODEL, modelState, bakery, spriteGetter) + ); + } + + private Function getBaseModelBakery(final ModelState state, + final ModelBakery bakery, + final Function sg) { + return direction -> { + final Transformation rotation = new Transformation(null, getQuaternion(direction), null, null); + final ModelState wrappedState = new SimpleModelState(rotation, state.isUvLocked()); + return bakery.bake(BASE_MODEL, wrappedState, sg); + }; + } + + private BiFunction getDiskModelBakery(final ResourceLocation id, + final ModelState state, + final ModelBakery bakery, + final Function + sg) { + return (direction, trans) -> { + final Transformation translation = new Transformation(trans, null, null, null); + final Transformation rotation = new Transformation(null, getQuaternion(direction), null, null); + final ModelState wrappedState = new SimpleModelState(rotation.compose(translation), state.isUvLocked()); + return bakery.bake(id, wrappedState, sg); + }; + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorBakedModel.java deleted file mode 100644 index 772637ecf..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorBakedModel.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.mojang.math.Vector3f; -import com.refinedmods.refinedstorage.RSBlocks; -import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; -import com.refinedmods.refinedstorage.block.NetworkNodeBlock; -import com.refinedmods.refinedstorage.blockentity.DiskManipulatorBlockEntity; -import com.refinedmods.refinedstorage.util.ColorMap; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -public class DiskManipulatorBakedModel extends DelegateBakedModel { - private final BakedModel baseConnected; - private final BakedModel baseDisconnected; - private final BakedModel disk; - private final BakedModel diskNearCapacity; - private final BakedModel diskFull; - private final BakedModel diskDisconnected; - private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { - @Override - @SuppressWarnings("deprecation") - public List load(CacheKey key) { - Direction facing = key.state.getValue(RSBlocks.DISK_MANIPULATOR.get(ColorMap.DEFAULT_COLOR).get().getDirection().getProperty()); - boolean connected = key.state.getValue(NetworkNodeBlock.CONNECTED); - - List quads = new ArrayList<>(QuadTransformer.getTransformedQuads( - connected ? baseConnected : baseDisconnected, - facing, - null, - key.state, - key.random, - key.side - )); - - int x = 0; - int y = 0; - for (int i = 0; i < 6; ++i) { - if (key.diskState[i] != DiskState.NONE) { - BakedModel diskModel = getDiskModel(key.diskState[i]); - - quads.addAll(QuadTransformer.getTransformedQuads( - diskModel, - facing, - getDiskTranslation(facing, x, y), - key.state, - key.random, - key.side - )); - } - - y++; - if ((i + 1) % 3 == 0) { - x++; - y = 0; - } - } - - return quads; - } - - private BakedModel getDiskModel(DiskState diskState) { - switch (diskState) { - case DISCONNECTED: - return diskDisconnected; - case NEAR_CAPACITY: - return diskNearCapacity; - case FULL: - return diskFull; - default: - return disk; - } - } - - private Vector3f getDiskTranslation(Direction facing, int x, int y) { - Vector3f translation = new Vector3f(); - - if (facing == Direction.NORTH || facing == Direction.SOUTH) { - translation.add((2F / 16F + ((float) x * 7F) / 16F) * (facing == Direction.NORTH ? -1 : 1), 0, 0); // Add to X - } else if (facing == Direction.EAST || facing == Direction.WEST) { - translation.add(0, 0, (2F / 16F + ((float) x * 7F) / 16F) * (facing == Direction.EAST ? -1 : 1)); // Add to Z - } - - translation.add(0, -((6F / 16F) + (3F * y) / 16F), 0); // Remove from Y - - return translation; - } - }); - - public DiskManipulatorBakedModel(BakedModel baseConnected, BakedModel baseDisconnected, BakedModel disk, BakedModel diskNearCapacity, BakedModel diskFull, BakedModel diskDisconnected) { - super(baseConnected); - - this.baseConnected = baseConnected; - this.baseDisconnected = baseDisconnected; - this.disk = disk; - this.diskNearCapacity = diskNearCapacity; - this.diskFull = diskFull; - this.diskDisconnected = diskDisconnected; - } - - @Override - @Nonnull - public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull Random rand, @Nonnull IModelData data) { - DiskState[] diskState = data.getData(DiskManipulatorBlockEntity.DISK_STATE_PROPERTY); - - if (diskState == null) { - return base.getQuads(state, side, rand, data); - } - - CacheKey key = new CacheKey(state, side, diskState, rand); - - return cache.getUnchecked(key); - } - - private static class CacheKey { - private final BlockState state; - private final Direction side; - private final DiskState[] diskState; - private final Random random; - - CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, Random random) { - this.state = state; - this.side = side; - this.diskState = diskState; - this.random = random; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o == null || getClass() != o.getClass()) { - return false; - } - - CacheKey cacheKey = (CacheKey) o; - - if (!state.equals(cacheKey.state)) { - return false; - } - - if (side != cacheKey.side) { - return false; - } - - return Arrays.equals(diskState, cacheKey.diskState); - } - - @Override - public int hashCode() { - int result = state.hashCode(); - result = 31 * result + (side != null ? side.hashCode() : 0); - result = 31 * result + Arrays.hashCode(diskState); - return result; - } - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorGeometryLoader.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorGeometryLoader.java new file mode 100644 index 000000000..a06d17dba --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorGeometryLoader.java @@ -0,0 +1,13 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraftforge.client.model.geometry.IGeometryLoader; + +public class DiskManipulatorGeometryLoader implements IGeometryLoader { + @Override + public DiskManipulatorUnbakedGeometry read(final JsonObject jsonObject, + final JsonDeserializationContext deserializationContext) { + return new DiskManipulatorUnbakedGeometry(); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorUnbakedGeometry.java b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorUnbakedGeometry.java new file mode 100644 index 000000000..7f4c493ae --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/DiskManipulatorUnbakedGeometry.java @@ -0,0 +1,110 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.mojang.math.Transformation; +import com.mojang.math.Vector3f; +import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.render.model.baked.DiskManipulatorBakedModel; +import com.refinedmods.refinedstorage.util.RenderUtils; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraftforge.client.RenderTypeGroup; +import net.minecraftforge.client.model.SimpleModelState; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; + +public class DiskManipulatorUnbakedGeometry extends AbstractUnbakedGeometry { + private static final ResourceLocation BASE_MODEL_DISCONNECTED = new ResourceLocation(RS.ID, "block/disk_manipulator/disconnected"); + + private final Map BASE_MODEL_CONNECTED = new HashMap<>(); + private static final ResourceLocation DISK_MODEL = new ResourceLocation(RS.ID, "block/disks/disk"); + private static final ResourceLocation DISK_DISCONNECTED_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_disconnected"); + private static final ResourceLocation DISK_FULL_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_full"); + private static final ResourceLocation DISK_NEAR_CAPACITY_MODEL = new ResourceLocation(RS.ID, "block/disks/disk_near_capacity"); + + @Override + protected Set getModels() { + Set set = new HashSet<>(Set.of( + BASE_MODEL_DISCONNECTED, + DISK_MODEL, + DISK_DISCONNECTED_MODEL, + DISK_FULL_MODEL, + DISK_NEAR_CAPACITY_MODEL + )); + set.addAll(BASE_MODEL_CONNECTED.values()); + return set; + } + + public DiskManipulatorUnbakedGeometry() { + for (DyeColor value : DyeColor.values()) { + BASE_MODEL_CONNECTED.put(value, new ResourceLocation(RS.ID, "block/disk_manipulator/" + value.getName())); + } + } + + @Override + public BakedModel bake(final IGeometryBakingContext context, + final ModelBakery bakery, + final Function spriteGetter, + final ModelState modelState, + final ItemOverrides overrides, + final ResourceLocation modelLocation) { + var renderTypeHint = context.getRenderTypeHint(); + var renderTypes = renderTypeHint != null ? context.getRenderType(renderTypeHint) : RenderTypeGroup.EMPTY; + + return new DiskManipulatorBakedModel( + Objects.requireNonNull(bakery.bake(BASE_MODEL_DISCONNECTED, modelState, spriteGetter)), + getBaseModelBakeryConnected(modelState, bakery, spriteGetter), + getBaseModelBakery(modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_NEAR_CAPACITY_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_FULL_MODEL, modelState, bakery, spriteGetter), + getDiskModelBakery(DISK_DISCONNECTED_MODEL, modelState, bakery, spriteGetter), + renderTypes + ); + } + + private Function getBaseModelBakery(final ModelState state, + final ModelBakery bakery, + final Function sg) { + return direction -> { + var dir = RenderUtils.getQuaternion(direction); + final Transformation rotation = new Transformation(null, dir, null, null); + final ModelState wrappedState = new SimpleModelState(rotation, state.isUvLocked()); + return bakery.bake(BASE_MODEL_DISCONNECTED, wrappedState, sg); + }; + } + + private BiFunction getBaseModelBakeryConnected(final ModelState state, + final ModelBakery bakery, + final Function sg) { + return (direction, color) -> { + var dir = RenderUtils.getQuaternion(direction); + final Transformation rotation = new Transformation(null, dir, null, null); + final ModelState wrappedState = new SimpleModelState(rotation, state.isUvLocked()); + return bakery.bake(BASE_MODEL_CONNECTED.get(color), wrappedState, sg); + }; + } + + private BiFunction getDiskModelBakery(final ResourceLocation id, + final ModelState state, + final ModelBakery bakery, + final Function + sg) { + return (direction, trans) -> { + var dir = RenderUtils.getQuaternion(direction); + final Transformation translation = new Transformation(trans, null, null, null); + final Transformation rotation = new Transformation(null, dir, null, null); + final ModelState wrappedState = new SimpleModelState(rotation.compose(translation), state.isUvLocked()); + return bakery.bake(id, wrappedState, sg); + }; + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/FullbrightBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/FullbrightBakedModel.java deleted file mode 100644 index 506d77482..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/FullbrightBakedModel.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.client.model.data.IModelData; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.*; - -public class FullbrightBakedModel extends DelegateBakedModel { - private static final LoadingCache> CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { - @Override - public List load(CacheKey key) { - return transformQuads(key.base.getQuads(key.state, key.side, key.random, EmptyModelData.INSTANCE), key.textures); - } - }); - private final Set textures; - private final boolean doCaching; - - public FullbrightBakedModel(BakedModel base, boolean doCaching, ResourceLocation... textures) { - super(base); - - this.textures = new HashSet<>(Arrays.asList(textures)); - this.doCaching = doCaching; - } - - public static void invalidateCache() { - CACHE.invalidateAll(); - } - - private static List transformQuads(List oldQuads, Set textures) { - List quads = new ArrayList<>(oldQuads); - - for (int i = 0; i < quads.size(); ++i) { - BakedQuad quad = quads.get(i); - - if (textures.contains(quad.getSprite().getName())) { - quads.set(i, transformQuad(quad)); - } - } - - return quads; - } - - private static BakedQuad transformQuad(BakedQuad quad) { - int[] vertexData = quad.getVertices().clone(); - int step = vertexData.length / 4; - - // Set lighting to fullbright on all vertices - vertexData[6] = 0x00F000F0; - vertexData[6 + step] = 0x00F000F0; - vertexData[6 + 2 * step] = 0x00F000F0; - vertexData[6 + 3 * step] = 0x00F000F0; - - return new BakedQuad( - vertexData, - quad.getTintIndex(), - quad.getDirection(), - quad.getSprite(), - quad.isShade() - ); - } - - @Override - @Nonnull - public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull Random rand, @Nonnull IModelData data) { - if (state == null) { - return base.getQuads(state, side, rand, data); - } - - if (!doCaching) { - return transformQuads(base.getQuads(state, side, rand, data), textures); - } - - return CACHE.getUnchecked(new CacheKey(base, textures, rand, state, side)); - } - - private static class CacheKey { - private final BakedModel base; - private final Set textures; - private final Random random; - private final BlockState state; - private final Direction side; - - public CacheKey(BakedModel base, Set textures, Random random, BlockState state, Direction side) { - this.base = base; - this.textures = textures; - this.random = random; - this.state = state; - this.side = side; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o == null || getClass() != o.getClass()) { - return false; - } - - CacheKey cacheKey = (CacheKey) o; - - if (cacheKey.side != side) { - return false; - } - - return state.equals(cacheKey.state); - } - - @Override - public int hashCode() { - return state.hashCode() + (31 * (side != null ? side.hashCode() : 0)); - } - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java deleted file mode 100644 index bd4453812..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.refinedmods.refinedstorage.RSBlocks; -import com.refinedmods.refinedstorage.block.PortableGridBlock; -import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; -import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGrid; -import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridDiskState; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Random; - -public class PortableGridBakedModel extends DelegateBakedModel { - private final BakedModel baseConnected; - private final BakedModel baseDisconnected; - private final BakedModel disk; - private final BakedModel diskNearCapacity; - private final BakedModel diskFull; - private final BakedModel diskDisconnected; - - private final CustomItemOverrideList itemOverrideList = new CustomItemOverrideList(); - - private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { - @Override - @SuppressWarnings("deprecation") - public List load(@Nonnull CacheKey key) { - Direction direction = key.state.getValue(RSBlocks.PORTABLE_GRID.get().getDirection().getProperty()); - boolean active = key.state.getValue(PortableGridBlock.ACTIVE); - PortableGridDiskState diskState = key.state.getValue(PortableGridBlock.DISK_STATE); - - List quads = new ArrayList<>(QuadTransformer.getTransformedQuads( - active ? baseConnected : baseDisconnected, - direction, - null, - key.state, - key.random, - key.side - )); - - BakedModel diskModel = getDiskModel(diskState); - if (diskModel != null) { - quads.addAll(QuadTransformer.getTransformedQuads(diskModel, direction, null, key.state, key.random, key.side)); - } - - return quads; - } - }); - - public PortableGridBakedModel(BakedModel baseConnected, - BakedModel baseDisconnected, - BakedModel disk, - BakedModel diskNearCapacity, - BakedModel diskFull, - BakedModel diskDisconnected) { - super(baseConnected); - - this.baseConnected = baseConnected; - this.baseDisconnected = baseDisconnected; - this.disk = disk; - this.diskNearCapacity = diskNearCapacity; - this.diskFull = diskFull; - this.diskDisconnected = diskDisconnected; - } - - @Nullable - private BakedModel getDiskModel(PortableGridDiskState state) { - switch (state) { - case NORMAL: - return disk; - case NEAR_CAPACITY: - return diskNearCapacity; - case FULL: - return diskFull; - case DISCONNECTED: - return diskDisconnected; - case NONE: - return null; - default: - return null; - } - } - - @Override - public ItemOverrides getOverrides() { - return itemOverrideList; - } - - @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand) { - if (state != null) { - return cache.getUnchecked(new CacheKey(state, side, rand)); - } - - return super.getQuads(state, side, rand); - } - - private static class CacheKey { - private final BlockState state; - private final Direction side; - private final Random random; - - public CacheKey(BlockState state, Direction side, Random random) { - this.state = state; - this.side = side; - this.random = random; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - CacheKey cacheKey = (CacheKey) o; - return state.equals(cacheKey.state) && - side == cacheKey.side && - random.equals(cacheKey.random); - } - - @Override - public int hashCode() { - return Objects.hash(state, side, random); - } - } - - private class CustomItemOverrideList extends ItemOverrides { - @Nullable - @Override - public BakedModel resolve(BakedModel model, ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int p) { - PortableGrid portableGrid = new PortableGrid(null, stack, new PlayerSlot(-1)); - - if (portableGrid.isGridActive()) { - return new PortableGridItemBakedModel(baseConnected, getDiskModel(portableGrid.getDiskState())); - } else { - return new PortableGridItemBakedModel(baseDisconnected, getDiskModel(portableGrid.getDiskState())); - } - } - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridGeometryLoader.java b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridGeometryLoader.java new file mode 100644 index 000000000..453081fc2 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridGeometryLoader.java @@ -0,0 +1,13 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraftforge.client.model.geometry.IGeometryLoader; + +public class PortableGridGeometryLoader implements IGeometryLoader { + @Override + public PortableGridUnbakedGeometry read(final JsonObject jsonObject, + final JsonDeserializationContext deserializationContext) { + return new PortableGridUnbakedGeometry(); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridItemBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridItemBakedModel.java deleted file mode 100644 index a15930787..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridItemBakedModel.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class PortableGridItemBakedModel implements BakedModel { - private final BakedModel base; - @Nullable - private final BakedModel disk; - - public PortableGridItemBakedModel(BakedModel base, @Nullable BakedModel disk) { - this.base = base; - this.disk = disk; - } - - @Override - public ItemOverrides getOverrides() { - return ItemOverrides.EMPTY; - } - - @Override - @SuppressWarnings("deprecation") - public ItemTransforms getTransforms() { - return base.getTransforms(); - } - - @Override - @Nonnull - @SuppressWarnings("deprecation") - public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull Random rand) { - List quads = new ArrayList<>(base.getQuads(state, side, rand)); - - if (disk != null) { - quads.addAll(disk.getQuads(state, side, rand)); - } - - return quads; - } - - @Override - public boolean useAmbientOcclusion() { - return base.useAmbientOcclusion(); - } - - @Override - public boolean isGui3d() { - return base.isGui3d(); - } - - @Override - public boolean usesBlockLight() { - return base.usesBlockLight(); - } - - @Override - public boolean isCustomRenderer() { - return base.isCustomRenderer(); - } - - @Override - @SuppressWarnings("deprecation") - public TextureAtlasSprite getParticleIcon() { - return base.getParticleIcon(); - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridUnbakedGeometry.java b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridUnbakedGeometry.java new file mode 100644 index 000000000..21541bafd --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridUnbakedGeometry.java @@ -0,0 +1,76 @@ +package com.refinedmods.refinedstorage.render.model; + +import com.mojang.math.Transformation; +import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.render.model.baked.PortableGridBakedModel; +import com.refinedmods.refinedstorage.util.RenderUtils; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.RenderTypeGroup; +import net.minecraftforge.client.model.SimpleModelState; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; + +import java.util.Objects; +import java.util.Set; +import java.util.function.Function; + +public class PortableGridUnbakedGeometry extends AbstractUnbakedGeometry { + private static final ResourceLocation BASE_CONNECTED_MODEL = new ResourceLocation(RS.ID, "block/portable_grid_connected"); + private static final ResourceLocation BASE_DISCONNECTED_MODEL = new ResourceLocation(RS.ID, "block/portable_grid_disconnected"); + private static final ResourceLocation DISK_MODEL = new ResourceLocation(RS.ID, "block/disks/portable_grid_disk"); + private static final ResourceLocation DISK_DISCONNECTED_MODEL = new ResourceLocation(RS.ID, "block/disks/portable_grid_disk_disconnected"); + private static final ResourceLocation DISK_FULL_MODEL = new ResourceLocation(RS.ID, "block/disks/portable_grid_disk_full"); + private static final ResourceLocation DISK_NEAR_CAPACITY_MODEL = new ResourceLocation(RS.ID, "block/disks/portable_grid_disk_near_capacity"); + + @Override + protected Set getModels() { + return Set.of( + BASE_CONNECTED_MODEL, + BASE_DISCONNECTED_MODEL, + DISK_MODEL, + DISK_DISCONNECTED_MODEL, + DISK_FULL_MODEL, + DISK_NEAR_CAPACITY_MODEL + ); + } + + @Override + public BakedModel bake(final IGeometryBakingContext context, + final ModelBakery bakery, + final Function spriteGetter, + final ModelState modelState, + final ItemOverrides overrides, + final ResourceLocation modelLocation) { + + var renderTypeHint = context.getRenderTypeHint(); + var renderTypes = renderTypeHint != null ? context.getRenderType(renderTypeHint) : RenderTypeGroup.EMPTY; + + return new PortableGridBakedModel( + Objects.requireNonNull(bakery.bake(BASE_CONNECTED_MODEL, modelState, spriteGetter)), + getModelBakery(BASE_CONNECTED_MODEL, modelState, bakery, spriteGetter), + getModelBakery(BASE_DISCONNECTED_MODEL, modelState, bakery, spriteGetter), + getModelBakery(DISK_MODEL, modelState, bakery, spriteGetter), + getModelBakery(DISK_NEAR_CAPACITY_MODEL, modelState, bakery, spriteGetter), + getModelBakery(DISK_FULL_MODEL, modelState, bakery, spriteGetter), + getModelBakery(DISK_DISCONNECTED_MODEL, modelState, bakery, spriteGetter), + renderTypes + ); + } + + private Function getModelBakery(final ResourceLocation id, + final ModelState state, + final ModelBakery bakery, + final Function sg) { + return direction -> { + final Transformation rotation = new Transformation(null, RenderUtils.getQuaternion(direction), null, null); + final ModelState wrappedState = new SimpleModelState(rotation, state.isUvLocked()); + return bakery.bake(id, wrappedState, sg); + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/QuadTransformer.java b/src/main/java/com/refinedmods/refinedstorage/render/model/QuadTransformer.java deleted file mode 100644 index e63a604f5..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/QuadTransformer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.refinedmods.refinedstorage.render.model; - -import com.google.common.collect.ImmutableList; -import com.mojang.math.Transformation; -import com.mojang.math.Vector3f; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; -import net.minecraftforge.client.model.pipeline.TRSRTransformer; -import net.minecraftforge.common.model.TransformationHelper; - -import javax.annotation.Nullable; -import java.util.List; -import java.util.Random; - -public final class QuadTransformer { - private QuadTransformer() { - } - - public static List getTransformedQuads(BakedModel model, Direction facing, @Nullable Vector3f translation, BlockState state, Random rand, Direction side) { - double r = Math.PI * (360 - facing.getOpposite().get2DDataValue() * 90) / 180d; - - Transformation transformation = new Transformation(translation, TransformationHelper.quatFromXYZ(new Vector3f(0, (float) r, 0), false), null, null); - - ImmutableList.Builder quads = ImmutableList.builder(); - - if (side != null && side.get2DDataValue() > -1) { - int faceOffset = 4 + Direction.NORTH.get2DDataValue() - facing.get2DDataValue(); - - side = Direction.from2DDataValue((side.get2DDataValue() + faceOffset) % 4); - } - - for (BakedQuad quad : model.getQuads(state, side, rand, EmptyModelData.INSTANCE)) { - BakedQuadBuilder builder = new BakedQuadBuilder(quad.getSprite()); - TRSRTransformer transformer = new TRSRTransformer(builder, transformation.blockCenterToCorner()); - - quad.pipe(transformer); - - quads.add(builder.build()); - } - - return quads.build(); - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCableCover.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverBakedModel.java similarity index 88% rename from src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCableCover.java rename to src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverBakedModel.java index 648546373..15cb03354 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCableCover.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverBakedModel.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.render.model; +package com.refinedmods.refinedstorage.render.model.baked; import com.mojang.math.Vector3f; import com.refinedmods.refinedstorage.RS; @@ -7,29 +7,34 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.Cover; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.block.BaseBlock; import com.refinedmods.refinedstorage.render.ConstantsCable; +import com.refinedmods.refinedstorage.render.model.CubeBuilder; import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.ModelData; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Random; -public class BakedModelCableCover extends DelegateBakedModel { +public class CableCoverBakedModel extends BakedModelWrapper { private static TextureAtlasSprite BORDER_SPRITE; - public BakedModelCableCover(BakedModel base) { + public CableCoverBakedModel(BakedModel base) { super(base); } @@ -56,7 +61,7 @@ public class BakedModelCableCover extends DelegateBakedModel { return 6; } - protected static void addCover(List quads, @Nullable Cover cover, Direction coverSide, Direction side, Random rand, @Nullable CoverManager manager, BlockState state, boolean handle) { + protected static void addCover(List quads, @Nullable Cover cover, Direction coverSide, Direction side, RandomSource rand, @Nullable CoverManager manager, BlockState state, boolean handle) { if (cover == null) { return; } @@ -77,16 +82,13 @@ public class BakedModelCableCover extends DelegateBakedModel { } switch (cover.getType()) { - case NORMAL: - addNormalCover(quads, coverState, coverSide, hasUp, hasDown, hasEast, hasWest, handle, rand); - break; - case HOLLOW: + case NORMAL -> addNormalCover(quads, coverState, coverSide, hasUp, hasDown, hasEast, hasWest, handle, rand); + case HOLLOW -> addHollowCover(quads, coverState, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide), rand); - break; } } - private static void addNormalCover(List quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle, Random random) { + private static void addNormalCover(List quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle, RandomSource random) { AABB bounds = ConstantsCable.getCoverBounds(coverSide); Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16); @@ -137,7 +139,7 @@ public class BakedModelCableCover extends DelegateBakedModel { } } - private static void addHollowCover(List quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size, Random random) { + private static void addHollowCover(List quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size, RandomSource random) { AABB bounds = ConstantsCable.getCoverBounds(coverSide); Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16); @@ -345,10 +347,14 @@ public class BakedModelCableCover extends DelegateBakedModel { } @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data) { - List quads = new ArrayList<>(base.getQuads(state, side, rand, data)); - if (data != null && data.hasProperty(CoverManager.PROPERTY)) { - CoverManager manager = data.getData(CoverManager.PROPERTY); + public List getQuads(@Nullable final BlockState state, + @Nullable final Direction side, + @Nonnull final RandomSource rand, + @Nonnull final ModelData extraData, + @Nullable final RenderType renderType) { + List quads = new ArrayList<>(super.getQuads(state, side, rand, extraData, renderType)); + if (extraData.has(CoverManager.PROPERTY)) { + CoverManager manager = extraData.get(CoverManager.PROPERTY); addCover(quads, manager.getCover(Direction.NORTH), Direction.NORTH, side, rand, manager, state, true); addCover(quads, manager.getCover(Direction.SOUTH), Direction.SOUTH, side, rand, manager, state, true); addCover(quads, manager.getCover(Direction.EAST), Direction.EAST, side, rand, manager, state, true); diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverItemBakedModel.java similarity index 72% rename from src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java rename to src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverItemBakedModel.java index 11dcbdcb1..f73ab58fd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/CableCoverItemBakedModel.java @@ -1,10 +1,8 @@ -package com.refinedmods.refinedstorage.render.model; +package com.refinedmods.refinedstorage.render.model.baked; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Transformation; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.Cover; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverType; import com.refinedmods.refinedstorage.item.CoverItem; @@ -16,43 +14,42 @@ import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; -public class BakedModelCover extends BakedModelCableCover { +import static com.refinedmods.refinedstorage.render.model.baked.CableCoverBakedModel.addCover; +public class CableCoverItemBakedModel implements BakedModel { private static final LoadingCache> CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override public List load(CacheKey key) { List quads = new ArrayList<>(); - - addCover(quads, new Cover(key.stack, key.type), Direction.NORTH, key.side, new Random(), null, null, true); - + addCover(quads, new Cover(key.stack, key.type), Direction.NORTH, key.side, key.random, null, null, true); return quads; } }); - private ItemStack stack; - private CoverType type; - - public BakedModelCover(ItemStack stack, CoverType type) { - super(null); + private final ItemStack stack; + private final CoverType type; + public CableCoverItemBakedModel(ItemStack stack, CoverType type) { this.stack = stack; this.type = type; } @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand) { + public List getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource rand) { if (stack.isEmpty()) { return Collections.emptyList(); } - - CacheKey key = new CacheKey(state, CoverItem.getItem(stack), side, type); - + CacheKey key = new CacheKey(state, CoverItem.getItem(stack), side, type, rand); return CACHE.getUnchecked(key); } @@ -61,16 +58,14 @@ public class BakedModelCover extends BakedModelCableCover { return new ItemOverrides() { @Override public BakedModel resolve(BakedModel originalModel, ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int p) { - return new BakedModelCover(stack, type); + return new CableCoverItemBakedModel(stack, type); } }; } @Override - public BakedModel handlePerspective(ItemTransforms.TransformType cameraTransformType, PoseStack poseStack) { - Transformation transform = RenderUtils.getDefaultBlockTransforms().get(cameraTransformType); - if (transform != null) transform.push(poseStack); - return this; + public List getRenderPasses(final ItemStack itemStack, final boolean fabulous) { + return List.of(this); } @Override @@ -101,7 +96,7 @@ public class BakedModelCover extends BakedModelCableCover { @Override @SuppressWarnings("deprecation") public ItemTransforms getTransforms() { - return ItemTransforms.NO_TRANSFORMS; + return RenderUtils.getDefaultBlockTransforms(); } @Override @@ -109,17 +104,19 @@ public class BakedModelCover extends BakedModelCableCover { return true; } - private class CacheKey { - private BlockState state; - private ItemStack stack; - private Direction side; - private CoverType type; + private static class CacheKey { + private final BlockState state; + private final ItemStack stack; + private final Direction side; + private final CoverType type; + private final RandomSource random; - CacheKey(BlockState state, ItemStack stack, Direction side, CoverType type) { + CacheKey(BlockState state, ItemStack stack, Direction side, CoverType type, RandomSource rand) { this.state = state; this.stack = stack; this.side = side; this.type = type; + this.random = rand; } @Override @@ -132,15 +129,14 @@ public class BakedModelCover extends BakedModelCableCover { return false; } - BakedModelCover.CacheKey cacheKey = (BakedModelCover.CacheKey) o; + CableCoverItemBakedModel.CacheKey cacheKey = (CableCoverItemBakedModel.CacheKey) o; - return cacheKey.type == type && cacheKey.stack.getItem() == stack.getItem() /* && cacheKey.stack.getItemDamage() == stack.getItemDamage()*/ && cacheKey.side == side && Objects.equals(cacheKey.state, state); + return cacheKey.type == type && cacheKey.stack.getItem() == stack.getItem() && cacheKey.side == side && Objects.equals(cacheKey.state, state); } @Override public int hashCode() { int result = stack.getItem().hashCode(); - //result = 31 * result + stack.getDamage(); result = 31 * result + (side != null ? side.hashCode() : 0); result = 31 * result + (state != null ? state.hashCode() : 0); result = 31 * result + type.hashCode(); diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskDriveBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskDriveBakedModel.java new file mode 100644 index 000000000..3b4bd7e30 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskDriveBakedModel.java @@ -0,0 +1,152 @@ +package com.refinedmods.refinedstorage.render.model.baked; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.mojang.math.Vector3f; +import com.refinedmods.refinedstorage.RSBlocks; +import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; +import com.refinedmods.refinedstorage.blockentity.DiskDriveBlockEntity; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.ModelData; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Function; + +public class DiskDriveBakedModel extends BakedModelWrapper { + private final Function baseModelBakery; + private final BiFunction diskModelBakery; + private final BiFunction diskNearCapacityModelBakery; + private final BiFunction diskFullModelBakery; + private final BiFunction diskDisconnectedModelBakery; + + private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + @SuppressWarnings("deprecation") + public List load(CacheKey key) { + Direction facing = key.state.getValue(RSBlocks.DISK_DRIVE.get().getDirection().getProperty()); + + List quads = new ArrayList<>(); + if (key.side != null) { + quads = baseModelBakery.apply(facing).getQuads(key.state, key.side, key.random); + return quads; + } + + int x = 0; + int y = 0; + for (int i = 0; i < 8; ++i) { + if (key.diskState[i] != DiskState.NONE) { + BakedModel diskModel = getDiskModelBakery(key.diskState[i]).apply(facing, getDiskTranslation(x, y)); + quads.addAll(diskModel.getQuads(key.state, key.side, key.random)); + } + + x++; + if ((i + 1) % 2 == 0) { + y++; + x = 0; + } + } + + return quads; + } + + private BiFunction getDiskModelBakery(DiskState diskState) { + return switch (diskState) { + case DISCONNECTED -> diskDisconnectedModelBakery; + case NEAR_CAPACITY -> diskNearCapacityModelBakery; + case FULL -> diskFullModelBakery; + default -> diskModelBakery; + }; + } + + private Vector3f getDiskTranslation(int x, int y) { + Vector3f translation = new Vector3f(); + translation.add(((2F / 16F) + ((float) x * 7F) / 16F) * -1, 0, 0); // Add to X + translation.add(0, -((2F / 16F) + ((float) y * 3F) / 16F), 0); // Remove from Y + return translation; + } + }); + + public DiskDriveBakedModel(BakedModel base, Function baseModelBakery, BiFunction diskModelBakery, BiFunction diskNearCapacityModelBakery, BiFunction diskFullModelBakery, BiFunction diskDisconnectedModelBakery) { + super(base); + this.baseModelBakery = baseModelBakery; + this.diskModelBakery = diskModelBakery; + this.diskNearCapacityModelBakery = diskNearCapacityModelBakery; + this.diskFullModelBakery = diskFullModelBakery; + this.diskDisconnectedModelBakery = diskDisconnectedModelBakery; + } + + @Nonnull + @Override + public List getQuads(@Nullable final BlockState state, + @Nullable final Direction side, + @Nonnull final RandomSource rand, + @Nonnull final ModelData extraData, + @Nullable final RenderType renderType) { + DiskState[] diskState = extraData.get(DiskDriveBlockEntity.DISK_STATE_PROPERTY); + + if (diskState == null) { + return super.getQuads(state, side, rand, extraData, renderType); + } + + CacheKey key = new CacheKey(state, side, diskState, rand); + + return cache.getUnchecked(key); + } + + private static class CacheKey { + private final BlockState state; + private final Direction side; + private final DiskState[] diskState; + private final RandomSource random; + + CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, RandomSource random) { + this.state = state; + this.side = side; + this.diskState = diskState; + this.random = random; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + CacheKey cacheKey = (CacheKey) o; + + if (!state.equals(cacheKey.state)) { + return false; + } + + if (side != cacheKey.side) { + return false; + } + + return Arrays.equals(diskState, cacheKey.diskState); + } + + @Override + public int hashCode() { + int result = state.hashCode(); + result = 31 * result + (side != null ? side.hashCode() : 0); + result = 31 * result + Arrays.hashCode(diskState); + return result; + } + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskManipulatorBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskManipulatorBakedModel.java new file mode 100644 index 000000000..43506f629 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/DiskManipulatorBakedModel.java @@ -0,0 +1,177 @@ +package com.refinedmods.refinedstorage.render.model.baked; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.mojang.math.Vector3f; +import com.refinedmods.refinedstorage.RSBlocks; +import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; +import com.refinedmods.refinedstorage.block.DiskManipulatorBlock; +import com.refinedmods.refinedstorage.block.NetworkNodeBlock; +import com.refinedmods.refinedstorage.blockentity.DiskManipulatorBlockEntity; +import com.refinedmods.refinedstorage.util.ColorMap; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.ChunkRenderTypeSet; +import net.minecraftforge.client.RenderTypeGroup; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.ModelData; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Function; + +public class DiskManipulatorBakedModel extends BakedModelWrapper { + private final BiFunction baseConnectedModelBakery; + private final Function baseDisconnectedModelBakery; + private final BiFunction diskModelBakery; + private final BiFunction diskNearCapacityModelBakery; + private final BiFunction diskFullModelBakery; + private final BiFunction diskDisconnectedModelBakery; + + private final RenderTypeGroup renderType; + + private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + @SuppressWarnings("deprecation") + public List load(CacheKey key) { + Direction facing = key.state.getValue(RSBlocks.DISK_MANIPULATOR.get(ColorMap.DEFAULT_COLOR).get().getDirection().getProperty()); + boolean connected = key.state.getValue(NetworkNodeBlock.CONNECTED); + List quads = new ArrayList<>(); + if (connected) { + quads = new ArrayList<>(baseConnectedModelBakery.apply(facing, key.color).getQuads(key.state, key.side, key.random)); + } else { + quads = new ArrayList<>(baseDisconnectedModelBakery.apply(facing).getQuads(key.state, key.side, key.random)); + } + + int x = 0; + int y = 0; + for (int i = 0; i < 6; ++i) { + if (key.diskState[i] != DiskState.NONE) { + BakedModel diskModel = getDiskModelBakery(key.diskState[i]).apply(facing, getDiskTranslation(facing, x, y)); + quads.addAll(diskModel.getQuads(key.state, key.side, key.random)); + } + + y++; + if ((i + 1) % 3 == 0) { + x++; + y = 0; + } + } + + return quads; + } + + private BiFunction getDiskModelBakery(DiskState diskState) { + return switch (diskState) { + case DISCONNECTED -> diskDisconnectedModelBakery; + case NEAR_CAPACITY -> diskNearCapacityModelBakery; + case FULL -> diskFullModelBakery; + default -> diskModelBakery; + }; + } + + private Vector3f getDiskTranslation(Direction facing, int x, int y) { + Vector3f translation = new Vector3f(); + + translation.add((2F / 16F + ((float) x * 7F) / 16F) * -1, 0, 0); // Add to X + translation.add(0, -((6F / 16F) + (3F * y) / 16F), 0); // Remove from Y + + return translation; + } + }); + + public DiskManipulatorBakedModel(BakedModel originalModel, BiFunction baseConnectedModelBakery, Function baseDisconnectedModelBakery, BiFunction diskModelBakery, BiFunction diskNearCapacityModelBakery, BiFunction diskFullModelBakery, BiFunction diskDisconnectedModelBakery, RenderTypeGroup renderTypes) { + super(originalModel); + this.baseConnectedModelBakery = baseConnectedModelBakery; + this.baseDisconnectedModelBakery = baseDisconnectedModelBakery; + this.diskModelBakery = diskModelBakery; + this.diskNearCapacityModelBakery = diskNearCapacityModelBakery; + this.diskFullModelBakery = diskFullModelBakery; + this.diskDisconnectedModelBakery = diskDisconnectedModelBakery; + this.renderType = renderTypes; + } + + @Override + public ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, ModelData data) { + return ChunkRenderTypeSet.of(renderType.block()); + } + + @Override + @Nonnull + public List getQuads(@Nullable final BlockState state, + @Nullable final Direction side, + @Nonnull final RandomSource rand, + @Nonnull final ModelData extraData, + @Nullable final RenderType renderType) { + DiskState[] diskState = extraData.get(DiskManipulatorBlockEntity.DISK_STATE_PROPERTY); + + var color = RSBlocks.DISK_MANIPULATOR.getColorFromObject((DiskManipulatorBlock) state.getBlock()); + + if (diskState == null) { + return super.getQuads(state, side, rand, extraData, renderType); + } + CacheKey key = new CacheKey(state, side, diskState, rand, color); + return cache.getUnchecked(key); + } + + private static class CacheKey { + private final BlockState state; + private final Direction side; + private final DiskState[] diskState; + private final RandomSource random; + private final DyeColor color; + + CacheKey(BlockState state, @Nullable Direction side, DiskState[] diskState, RandomSource random, DyeColor color) { + this.state = state; + this.side = side; + this.diskState = diskState; + this.random = random; + this.color = color; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + CacheKey cacheKey = (CacheKey) o; + + if (!state.equals(cacheKey.state)) { + return false; + } + + if (side != cacheKey.side) { + return false; + } + + if (color != cacheKey.color) { + return false; + } + + return Arrays.equals(diskState, cacheKey.diskState); + } + + @Override + public int hashCode() { + int result = state.hashCode(); + result = 31 * result + (side != null ? side.hashCode() : 0); + result = 31 * result + Arrays.hashCode(diskState); + return result; + } + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PatternBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PatternBakedModel.java similarity index 89% rename from src/main/java/com/refinedmods/refinedstorage/render/model/PatternBakedModel.java rename to src/main/java/com/refinedmods/refinedstorage/render/model/baked/PatternBakedModel.java index bb4a61790..544c769da 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/PatternBakedModel.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PatternBakedModel.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.render.model; +package com.refinedmods.refinedstorage.render.model.baked; import com.google.common.collect.ImmutableList; import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPattern; @@ -11,10 +11,11 @@ import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.model.BakedModelWrapper; import javax.annotation.Nullable; -public class PatternBakedModel extends DelegateBakedModel { +public class PatternBakedModel extends BakedModelWrapper { public PatternBakedModel(BakedModel base) { super(base); } @@ -52,7 +53,7 @@ public class PatternBakedModel extends DelegateBakedModel { @Override public ImmutableList getOverrides() { - return base.getOverrides().getOverrides(); + return originalModel.getOverrides().getOverrides(); } }; } diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridBakedModel.java new file mode 100644 index 000000000..5a41248ca --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridBakedModel.java @@ -0,0 +1,154 @@ +package com.refinedmods.refinedstorage.render.model.baked; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.refinedmods.refinedstorage.RSBlocks; +import com.refinedmods.refinedstorage.block.PortableGridBlock; +import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGrid; +import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridDiskState; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.ChunkRenderTypeSet; +import net.minecraftforge.client.RenderTypeGroup; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.ModelData; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.function.Function; + +public class PortableGridBakedModel extends BakedModelWrapper { + private final Function baseConnectedModelBakery; + private final Function baseDisconnectedModelBakery; + private final Function diskModelBakery; + private final Function diskNearCapacityModelBakery; + private final Function diskFullModelBakery; + private final Function diskDisconnectedModelBakery; + + private final RenderTypeGroup renderTypes; + + private final CustomItemOverrideList itemOverrideList = new CustomItemOverrideList(); + + private final LoadingCache> cache = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + @SuppressWarnings("deprecation") + public List load(@Nonnull CacheKey key) { + Direction direction = key.state.getValue(RSBlocks.PORTABLE_GRID.get().getDirection().getProperty()); + boolean active = key.state.getValue(PortableGridBlock.ACTIVE); + PortableGridDiskState diskState = key.state.getValue(PortableGridBlock.DISK_STATE); + + List quads = new ArrayList<>((active ? baseConnectedModelBakery : baseDisconnectedModelBakery) + .apply(direction).getQuads(key.state, key.side, key.random)); + + Function diskModel = getDiskModelBakery(diskState); + if (diskModel != null) { + quads.addAll(diskModel.apply(direction).getQuads(key.state, key.side, key.random)); + } + + return quads; + } + }); + + public PortableGridBakedModel(BakedModel baseModel, Function baseConnectedModelBakery, Function baseDisconnectedModelBakery, Function diskModelBakery, Function diskNearCapacityModelBakery, Function diskFullModelBakery, Function diskDisconnectedModelBakery, RenderTypeGroup renderTypes) { + super(baseModel); + this.baseConnectedModelBakery = baseConnectedModelBakery; + this.baseDisconnectedModelBakery = baseDisconnectedModelBakery; + this.diskModelBakery = diskModelBakery; + this.diskNearCapacityModelBakery = diskNearCapacityModelBakery; + this.diskFullModelBakery = diskFullModelBakery; + this.diskDisconnectedModelBakery = diskDisconnectedModelBakery; + this.renderTypes = renderTypes; + } + + @Nullable + private Function getDiskModelBakery(PortableGridDiskState state) { + return switch (state) { + case NORMAL -> diskModelBakery; + case NEAR_CAPACITY -> diskNearCapacityModelBakery; + case FULL -> diskFullModelBakery; + case DISCONNECTED -> diskDisconnectedModelBakery; + case NONE -> null; + }; + } + + @Override + public ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, ModelData data) { + return ChunkRenderTypeSet.of(renderTypes.block()); + } + + @Override + public ItemOverrides getOverrides() { + return itemOverrideList; + } + + @Override + public List getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource rand, ModelData extraData, @Nullable RenderType renderType) { + if (state != null) { + return cache.getUnchecked(new CacheKey(state, side, rand)); + } + return super.getQuads(state, side, rand, extraData, renderType); + } + + private static class CacheKey { + private final BlockState state; + private final Direction side; + private final RandomSource random; + + public CacheKey(BlockState state, Direction side, RandomSource random) { + this.state = state; + this.side = side; + this.random = random; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CacheKey cacheKey = (CacheKey) o; + return state.equals(cacheKey.state) && + side == cacheKey.side && + random.equals(cacheKey.random); + } + + @Override + public int hashCode() { + return Objects.hash(state, side, random); + } + } + + private class CustomItemOverrideList extends ItemOverrides { + @Nullable + @Override + public BakedModel resolve(BakedModel model, ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int p) { + PortableGrid portableGrid = new PortableGrid(null, stack, new PlayerSlot(-1)); + + Function diskModelBakery = getDiskModelBakery(portableGrid.getDiskState()); + BakedModel diskModel = diskModelBakery == null ? null : diskModelBakery.apply(Direction.NORTH); + + if (portableGrid.isGridActive()) { + return new PortableGridItemBakedModel( + baseConnectedModelBakery.apply(Direction.NORTH), + diskModel + ); + } else { + return new PortableGridItemBakedModel( + baseDisconnectedModelBakery.apply(Direction.NORTH), + diskModel + ); + } + } + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridItemBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridItemBakedModel.java new file mode 100644 index 000000000..266fb8b10 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/baked/PortableGridItemBakedModel.java @@ -0,0 +1,42 @@ +package com.refinedmods.refinedstorage.render.model.baked; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.BakedModelWrapper; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; + +public class PortableGridItemBakedModel extends BakedModelWrapper { + @Nullable + private final BakedModel disk; + + public PortableGridItemBakedModel(BakedModel base, @Nullable BakedModel disk) { + super(base); + this.disk = disk; + } + + @Override + public ItemOverrides getOverrides() { + return ItemOverrides.EMPTY; + } + + @Override + @Nonnull + @SuppressWarnings("deprecation") + public List getQuads(@Nullable BlockState state, @Nullable Direction side, @Nonnull RandomSource rand) { + List quads = new ArrayList<>(super.getQuads(state, side, rand)); + + if (disk != null) { + quads.addAll(disk.getQuads(state, side, rand)); + } + + return quads; + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/AmountSpecifyingScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/AmountSpecifyingScreen.java index 926f519ba..47c634fef 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/AmountSpecifyingScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/AmountSpecifyingScreen.java @@ -6,8 +6,6 @@ import com.refinedmods.refinedstorage.render.RenderSettings; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; import org.apache.commons.lang3.tuple.Pair; @@ -55,9 +53,9 @@ public abstract class AmountSpecifyingScreen ex Pair pos = getOkCancelPos(); okButton = addButton(x + pos.getLeft(), y + pos.getRight(), getOkCancelButtonWidth(), 20, getOkButtonText(), true, true, btn -> onOkButtonPressed(hasShiftDown())); - cancelButton = addButton(x + pos.getLeft(), y + pos.getRight() + 24, getOkCancelButtonWidth(), 20, new TranslatableComponent("gui.cancel"), true, true, btn -> close()); + cancelButton = addButton(x + pos.getLeft(), y + pos.getRight() + 24, getOkCancelButtonWidth(), 20, Component.translatable("gui.cancel"), true, true, btn -> close()); - amountField = new EditBox(font, x + getAmountPos().getLeft(), y + getAmountPos().getRight(), 69 - 6, font.lineHeight, new TextComponent("")); + amountField = new EditBox(font, x + getAmountPos().getLeft(), y + getAmountPos().getRight(), 69 - 6, font.lineHeight, Component.literal("")); amountField.setBordered(false); amountField.setVisible(true); amountField.setValue(String.valueOf(getDefaultAmount())); @@ -89,9 +87,9 @@ public abstract class AmountSpecifyingScreen ex for (int i = 0; i < 3; ++i) { int increment = increments[i]; - Component text = new TextComponent("+" + increment); + Component text = Component.literal("+" + increment); if (text.getString().equals("+1000")) { - text = new TextComponent("+1B"); + text = Component.literal("+1B"); } addButton(x + xx, y + 20, width, 20, text, true, true, btn -> onIncrementButtonClicked(increment)); @@ -104,9 +102,9 @@ public abstract class AmountSpecifyingScreen ex for (int i = 0; i < 3; ++i) { int increment = increments[i]; - Component text = new TextComponent("-" + increment); + Component text = Component.literal("-" + increment); if (text.getString().equals("-1000")) { - text = new TextComponent("-1B"); + text = Component.literal("-1B"); } addButton(x + xx, y + imageHeight - 20 - 7, width, 20, text, true, true, btn -> onIncrementButtonClicked(-increment)); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java index 9a27f1840..276e690ae 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java @@ -20,8 +20,6 @@ import net.minecraft.client.gui.components.Checkbox; import net.minecraft.client.gui.components.Widget; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -29,6 +27,7 @@ import net.minecraft.world.inventory.ClickType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.registries.ForgeRegistries; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.opengl.GL11; @@ -46,7 +45,7 @@ public abstract class BaseScreen extends Abstra private static final Map TEXTURE_CACHE = new HashMap<>(); private static final Map> ACTIONS = new HashMap<>(); - private static final Component ALTERNATIVES_TEXT = new TranslatableComponent("gui.refinedstorage.alternatives"); + private static final Component ALTERNATIVES_TEXT = Component.translatable("gui.refinedstorage.alternatives"); protected final Inventory inventory; private final List sideButtons = new ArrayList<>(); private final Logger logger = LogManager.getLogger(getClass()); @@ -311,7 +310,7 @@ public abstract class BaseScreen extends Abstra renderQuantity(poseStack, x, y, text, textColor); } } catch (Throwable t) { - logger.warn("Couldn't render stack: {}", stack.getItem().getRegistryName()); + logger.warn("Couldn't render stack: {}", ForgeRegistries.ITEMS.getKey(stack.getItem())); } } @@ -343,7 +342,7 @@ public abstract class BaseScreen extends Abstra } public void renderTooltip(PoseStack poseStack, @Nonnull ItemStack stack, int x, int y, String lines) { - renderTooltip(poseStack, stack, x, y, Arrays.stream(lines.split("\n")).map(TextComponent::new).collect(Collectors.toList())); + renderTooltip(poseStack, stack, x, y, Arrays.stream(lines.split("\n")).map(Component::literal).collect(Collectors.toList())); } public void renderTooltip(PoseStack poseStack, @Nonnull ItemStack stack, int x, int y, List lines) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/CraftingMonitorScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/CraftingMonitorScreen.java index bf31f05dc..d76e5fc83 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/CraftingMonitorScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/CraftingMonitorScreen.java @@ -24,8 +24,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -105,8 +103,8 @@ public class CraftingMonitorScreen extends BaseScreen 0) { - lines.add(new TextComponent(String.format("%02d:%02d:%02d", hours, minutes, seconds)).withStyle(ChatFormatting.GRAY)); + lines.add(Component.literal(String.format("%02d:%02d:%02d", hours, minutes, seconds)).withStyle(ChatFormatting.GRAY)); } else { - lines.add(new TextComponent(String.format("%02d:%02d", minutes, seconds)).withStyle(ChatFormatting.GRAY)); + lines.add(Component.literal(String.format("%02d:%02d", minutes, seconds)).withStyle(ChatFormatting.GRAY)); } - lines.add(new TextComponent(String.format("%d%%", completionPercentage)).withStyle(ChatFormatting.GRAY)); + lines.add(Component.literal(String.format("%d%%", completionPercentage)).withStyle(ChatFormatting.GRAY)); screen.renderComponentTooltip(poseStack, lines, x, y); } diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/DetectorScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/DetectorScreen.java index 33be81ea7..c32428816 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/DetectorScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/DetectorScreen.java @@ -12,7 +12,6 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; import org.lwjgl.glfw.GLFW; @@ -31,7 +30,7 @@ public class DetectorScreen extends BaseScreen { addSideButton(new ExactModeSideButton(this, DetectorBlockEntity.COMPARE)); - amountField = new EditBox(font, x + 41 + 1, y + 23 + 1, 50, font.lineHeight, new TextComponent("")); + amountField = new EditBox(font, x + 41 + 1, y + 23 + 1, 50, font.lineHeight, Component.literal("")); amountField.setValue(String.valueOf(DetectorBlockEntity.AMOUNT.getValue())); amountField.setBordered(false); amountField.setVisible(true); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java index fe8b91cfa..f6e0ae8cc 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java @@ -14,8 +14,6 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import org.lwjgl.glfw.GLFW; @@ -46,19 +44,19 @@ public class FilterScreen extends BaseScreen { @Override public void onPostInit(int x, int y) { - addCheckBox(x + 7, y + 77, new TranslatableComponent("gui.refinedstorage.filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT, btn -> { + addCheckBox(x + 7, y + 77, Component.translatable("gui.refinedstorage.filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT, btn -> { compare ^= IComparer.COMPARE_NBT; sendUpdate(); }); - modFilterCheckBox = addCheckBox(0, y + 71 + 25, new TranslatableComponent("gui.refinedstorage.filter.mod_filter"), modFilter, btn -> { + modFilterCheckBox = addCheckBox(0, y + 71 + 25, Component.translatable("gui.refinedstorage.filter.mod_filter"), modFilter, btn -> { modFilter = !modFilter; sendUpdate(); }); - modeButton = addButton(x + 7, y + 71 + 21, 0, 20, new TextComponent(""), true, true, btn -> { + modeButton = addButton(x + 7, y + 71 + 21, 0, 20, Component.literal(""), true, true, btn -> { mode = mode == IFilter.MODE_WHITELIST ? IFilter.MODE_BLACKLIST : IFilter.MODE_WHITELIST; updateModeButton(mode); @@ -68,7 +66,7 @@ public class FilterScreen extends BaseScreen { updateModeButton(mode); - nameField = new EditBox(font, x + 34, y + 121, 137 - 6, font.lineHeight, new TextComponent("")); + nameField = new EditBox(font, x + 34, y + 121, 137 - 6, font.lineHeight, Component.literal("")); nameField.setValue(name); nameField.setBordered(false); nameField.setVisible(true); @@ -84,8 +82,8 @@ public class FilterScreen extends BaseScreen { private void updateModeButton(int mode) { Component text = mode == IFilter.MODE_WHITELIST - ? new TranslatableComponent("sidebutton.refinedstorage.mode.whitelist") - : new TranslatableComponent("sidebutton.refinedstorage.mode.blacklist"); + ? Component.translatable("sidebutton.refinedstorage.mode.whitelist") + : Component.translatable("sidebutton.refinedstorage.mode.blacklist"); modeButton.setWidth(font.width(text.getString()) + 12); modeButton.setMessage(text); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/FluidAmountScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/FluidAmountScreen.java index e41ef0639..0a2125bfd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/FluidAmountScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/FluidAmountScreen.java @@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.network.SetFluidFilterSlotMessage; import com.refinedmods.refinedstorage.util.StackUtils; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.entity.player.Player; import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; @@ -22,7 +22,7 @@ public class FluidAmountScreen extends AmountSpecifyingScreen alternativesScreenFactory; public FluidAmountScreen(BaseScreen parent, Player player, int containerSlot, FluidStack stack, int maxAmount, @Nullable UnaryOperator alternativesScreenFactory) { - super(parent, new FluidAmountContainerMenu(player, stack), alternativesScreenFactory != null ? 194 : 172, 99, player.getInventory(), new TranslatableComponent("gui.refinedstorage.fluid_amount")); + super(parent, new FluidAmountContainerMenu(player, stack), alternativesScreenFactory != null ? 194 : 172, 99, player.getInventory(), Component.translatable("gui.refinedstorage.fluid_amount")); this.containerSlot = containerSlot; this.stack = stack; @@ -40,7 +40,7 @@ public class FluidAmountScreen extends AmountSpecifyingScreen minecraft.setScreen(alternativesScreenFactory.apply(this))); + addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, Component.translatable("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.setScreen(alternativesScreenFactory.apply(this))); } } @@ -70,7 +70,7 @@ public class FluidAmountScreen extends AmountSpecifyingScreen alternativesScreenFactory; public ItemAmountScreen(BaseScreen parent, Player player, int containerSlot, ItemStack stack, int maxAmount, @Nullable UnaryOperator alternativesScreenFactory) { - super(parent, new AmountContainerMenu(player, stack), alternativesScreenFactory != null ? 194 : 172, 99, player.getInventory(), new TranslatableComponent("gui.refinedstorage.item_amount")); + super(parent, new AmountContainerMenu(player, stack), alternativesScreenFactory != null ? 194 : 172, 99, player.getInventory(), Component.translatable("gui.refinedstorage.item_amount")); this.containerSlot = containerSlot; this.stack = stack; @@ -40,7 +40,7 @@ public class ItemAmountScreen extends AmountSpecifyingScreen minecraft.setScreen(alternativesScreenFactory.apply(this))); + addButton(x + 114, cancelButton.y + 24, getOkCancelButtonWidth(), 20, Component.translatable("gui.refinedstorage.alternatives"), true, true, btn -> minecraft.setScreen(alternativesScreenFactory.apply(this))); } } @@ -70,7 +70,7 @@ public class ItemAmountScreen extends AmountSpecifyingScreen { @@ -14,11 +15,16 @@ public class PriorityScreen extends AmountSpecifyingScreen priority, Inventory inventory) { super(parent, new AbstractContainerMenu(null, 0) { + @Override + public ItemStack quickMoveStack(Player p_38941_, int p_38942_) { + return ItemStack.EMPTY; + } + @Override public boolean stillValid(Player player) { return false; } - }, 164, 92, inventory, new TranslatableComponent("misc.refinedstorage.priority")); + }, 164, 92, inventory, Component.translatable("misc.refinedstorage.priority")); this.priority = priority; } @@ -30,7 +36,7 @@ public class PriorityScreen extends AmountSpecifyingScreen handle(0)); - permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, new TranslatableComponent("gui.refinedstorage.security_manager.permission.1"), false, btn -> handle(1)); - permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, new TranslatableComponent("gui.refinedstorage.security_manager.permission.2"), false, btn -> handle(2)); - permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, new TranslatableComponent("gui.refinedstorage.security_manager.permission.3"), false, btn -> handle(3)); - permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, new TranslatableComponent("gui.refinedstorage.security_manager.permission.4"), false, btn -> handle(4)); - permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, new TranslatableComponent("gui.refinedstorage.security_manager.permission.5"), false, btn -> handle(5)); + permissions[0] = addCheckBox(x + 7, y + 93, Component.translatable("gui.refinedstorage.security_manager.permission.0"), false, btn -> handle(0)); + permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, Component.translatable("gui.refinedstorage.security_manager.permission.1"), false, btn -> handle(1)); + permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, Component.translatable("gui.refinedstorage.security_manager.permission.2"), false, btn -> handle(2)); + permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, Component.translatable("gui.refinedstorage.security_manager.permission.3"), false, btn -> handle(3)); + permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, Component.translatable("gui.refinedstorage.security_manager.permission.4"), false, btn -> handle(4)); + permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, Component.translatable("gui.refinedstorage.security_manager.permission.5"), false, btn -> handle(5)); } private void handle(int i) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/StorageScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/StorageScreen.java index e00fcac77..91b257254 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/StorageScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/StorageScreen.java @@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -68,7 +68,7 @@ public class StorageScreen extends BaseScreen minecraft.setScreen(new PriorityScreen(this, parameters.getPriorityParameter(), inventory)) diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/AlternativesScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/AlternativesScreen.java index 5a1f3cccc..b09be9881 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/AlternativesScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/AlternativesScreen.java @@ -15,15 +15,13 @@ import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.tags.IReverseTag; @@ -129,7 +127,7 @@ public class AlternativesScreen extends BaseScreen { fluidCount++; - line.addFluid(new FluidStack(fluidInTag, FluidAttributes.BUCKET_VOLUME)); + line.addFluid(new FluidStack(fluidInTag, FluidType.BUCKET_VOLUME)); } lines.add(line); @@ -150,8 +148,8 @@ public class AlternativesScreen extends BaseScreen { } } - Button apply = addButton(x + 7, y + 114, 50, 20, new TranslatableComponent("gui.refinedstorage.alternatives.apply"), lines.size() > 1, true, btn -> apply()); - addButton(x + apply.getWidth() + 7 + 4, y + 114, 50, 20, new TranslatableComponent("gui.cancel"), true, true, btn -> close()); + Button apply = addButton(x + 7, y + 114, 50, 20, Component.translatable("gui.refinedstorage.alternatives.apply"), lines.size() > 1, true, btn -> apply()); + addButton(x + apply.getWidth() + 7 + 4, y + 114, 50, 20, Component.translatable("gui.cancel"), true, true, btn -> close()); } @Override @@ -320,7 +318,7 @@ public class AlternativesScreen extends BaseScreen { public TagLine(ResourceLocation tagName, boolean checked) { this.tagName = tagName; - this.widget = addCheckBox(-100, -100, new TextComponent(RenderUtils.shorten(tagName.toString(), 22)), checked, btn -> { + this.widget = addCheckBox(-100, -100, Component.literal(RenderUtils.shorten(tagName.toString(), 22)), checked, btn -> { // NO OP }); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingPreviewScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingPreviewScreen.java index 6a4f63070..f10acaf66 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingPreviewScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingPreviewScreen.java @@ -21,7 +21,6 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -53,6 +52,11 @@ public class CraftingPreviewScreen extends BaseScreen { public CraftingPreviewScreen(Screen parent, List elements, UUID id, int quantity, boolean fluids, Component title, Inventory inventory) { super(new AbstractContainerMenu(null, 0) { + @Override + public ItemStack quickMoveStack(Player p_38941_, int p_38942_) { + return ItemStack.EMPTY; + } + @Override public boolean stillValid(@Nonnull Player player) { return false; @@ -71,9 +75,9 @@ public class CraftingPreviewScreen extends BaseScreen { @Override public void onPostInit(int x, int y) { - addButton(x + 55, y + 201 - 20 - 7, 50, 20, new TranslatableComponent("gui.cancel"), true, true, btn -> close()); + addButton(x + 55, y + 201 - 20 - 7, 50, 20, Component.translatable("gui.cancel"), true, true, btn -> close()); - Button startButton = addButton(x + 129, y + 201 - 20 - 7, 50, 20, new TranslatableComponent("misc.refinedstorage.start"), true, true, btn -> startRequest()); + Button startButton = addButton(x + 129, y + 201 - 20 - 7, 50, 20, Component.translatable("misc.refinedstorage.start"), true, true, btn -> startRequest()); startButton.active = elements.stream().noneMatch(ICraftingPreviewElement::doesDisableTaskStarting); } diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingSettingsScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingSettingsScreen.java index c7eaa07ca..278722719 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingSettingsScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/CraftingSettingsScreen.java @@ -8,22 +8,22 @@ import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.screen.grid.stack.FluidGridStack; import com.refinedmods.refinedstorage.screen.grid.stack.IGridStack; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.entity.player.Player; -import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.FluidType; public class CraftingSettingsScreen extends AmountSpecifyingScreen { private final IGridStack stack; public CraftingSettingsScreen(BaseScreen parent, Player player, IGridStack stack) { - super(parent, new CraftingSettingsContainerMenu(player, stack), 172, 99, player.getInventory(), new TranslatableComponent("container.crafting")); + super(parent, new CraftingSettingsContainerMenu(player, stack), 172, 99, player.getInventory(), Component.translatable("container.crafting")); this.stack = stack; } @Override protected Component getOkButtonText() { - return new TranslatableComponent("misc.refinedstorage.start"); + return Component.translatable("misc.refinedstorage.start"); } @Override @@ -48,7 +48,7 @@ public class CraftingSettingsScreen extends AmountSpecifyingScreen implements IScreen menu.updatePatternSlotPositions(newOffset); }); - processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, new TranslatableComponent("misc.refinedstorage.processing"), GridBlockEntity.PROCESSING_PATTERN.getValue(), btn -> { + processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, Component.translatable("misc.refinedstorage.processing"), GridBlockEntity.PROCESSING_PATTERN.getValue(), btn -> { // Rebuild the inventory slots before the slot change packet arrives. GridBlockEntity.PROCESSING_PATTERN.setValue(false, processingPattern.selected()); ((GridNetworkNode) grid).clearMatrix(); // The server does this but let's do it earlier so the client doesn't notice. @@ -183,7 +183,7 @@ public class GridScreen extends BaseScreen implements IScreen exactPattern = addCheckBox( processingPattern.x + processingPattern.getWidth() + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, - new TranslatableComponent("misc.refinedstorage.exact"), + Component.translatable("misc.refinedstorage.exact"), GridBlockEntity.EXACT_PATTERN.getValue(), btn -> BlockEntitySynchronizationManager.setParameter(GridBlockEntity.EXACT_PATTERN, exactPattern.selected()) ); @@ -191,7 +191,7 @@ public class GridScreen extends BaseScreen implements IScreen } else { patternScrollbar.setEnabled(true); - fluidCheckBox = addCheckBox(processingPattern.x + processingPattern.getWidth() + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, new TranslatableComponent("misc.refinedstorage.fluidmode"), ((GridNetworkNode) grid).getType() == IType.FLUIDS, button -> { + fluidCheckBox = addCheckBox(processingPattern.x + processingPattern.getWidth() + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, Component.translatable("misc.refinedstorage.fluidmode"), ((GridNetworkNode) grid).getType() == IType.FLUIDS, button -> { BlockEntitySynchronizationManager.setParameter(GridBlockEntity.PROCESSING_TYPE, GridBlockEntity.PROCESSING_TYPE.getValue() == IType.ITEMS ? IType.FLUIDS : IType.ITEMS); }); } @@ -475,12 +475,12 @@ public class GridScreen extends BaseScreen implements IScreen Style detailedTextStyle = Style.EMPTY.applyFormat(ChatFormatting.GRAY).withItalic(true); if (!gridStack.isCraftable()) { - textLines.add(new TranslatableComponent("misc.refinedstorage.total", gridStack.getFormattedFullQuantity()) + textLines.add(Component.translatable("misc.refinedstorage.total", gridStack.getFormattedFullQuantity()) .withStyle(detailedTextStyle)); } if (gridStack.getTrackerEntry() != null) { - textLines.add(new TranslatableComponent(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName())) + textLines.add(Component.translatable(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName())) .withStyle(detailedTextStyle)); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/filtering/FilterGridFilter.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/filtering/FilterGridFilter.java index 1bd45dd64..361fc32ed 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/filtering/FilterGridFilter.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/filtering/FilterGridFilter.java @@ -8,6 +8,7 @@ import com.refinedmods.refinedstorage.screen.grid.stack.ItemGridStack; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.registries.ForgeRegistries; import java.util.List; import java.util.function.Predicate; @@ -47,7 +48,7 @@ public class FilterGridFilter implements Predicate { FluidStack stackInFilter = (FluidStack) filter.getStack(); if (filter.isModFilter()) { - ResourceLocation stackInFilterRegistryName = stackInFilter.getFluid().getRegistryName(); + ResourceLocation stackInFilterRegistryName = ForgeRegistries.FLUIDS.getKey(stackInFilter.getFluid()); if (stackInFilterRegistryName != null) { String stackInFilterModId = stackInFilterRegistryName.getNamespace(); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/FluidGridStack.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/FluidGridStack.java index 574e4120e..b7009622f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/FluidGridStack.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/FluidGridStack.java @@ -9,7 +9,6 @@ import com.refinedmods.refinedstorage.render.RenderSettings; import com.refinedmods.refinedstorage.screen.BaseScreen; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraftforge.fluids.FluidStack; @@ -86,7 +85,7 @@ public class FluidGridStack implements IGridStack { try { cachedName = stack.getDisplayName().getString(); } catch (Throwable t) { - LOGGER.warn("Could not retrieve fluid name of {}", stack.getFluid().getRegistryName()); + LOGGER.warn("Could not retrieve fluid name of {}", ForgeRegistries.FLUIDS.getKey(stack.getFluid())); cachedName = ERROR_PLACEHOLDER; } @@ -98,7 +97,7 @@ public class FluidGridStack implements IGridStack { @Override public String getModId() { if (cachedModId == null) { - ResourceLocation registryName = stack.getFluid().getRegistryName(); + ResourceLocation registryName = ForgeRegistries.FLUIDS.getKey(stack.getFluid()); if (registryName != null) { cachedModId = registryName.getNamespace(); @@ -146,8 +145,8 @@ public class FluidGridStack implements IGridStack { try { tooltip = Lists.newArrayList(stack.getDisplayName()); } catch (Throwable t) { - LOGGER.warn("Could not retrieve fluid tooltip of {}", stack.getFluid().getRegistryName()); - tooltip = Lists.newArrayList(new TextComponent(ERROR_PLACEHOLDER)); + LOGGER.warn("Could not retrieve fluid tooltip of {}", ForgeRegistries.FLUIDS.getKey(stack.getFluid())); + tooltip = Lists.newArrayList(Component.literal(ERROR_PLACEHOLDER)); } if (bypassCache) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/ItemGridStack.java b/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/ItemGridStack.java index fecff1bcb..119ad34d8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/ItemGridStack.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/grid/stack/ItemGridStack.java @@ -8,7 +8,6 @@ import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; @@ -96,7 +95,7 @@ public class ItemGridStack implements IGridStack { try { cachedName = stack.getHoverName().getString(); } catch (Throwable t) { - LOGGER.warn("Could not retrieve item name of {}", stack.getItem().getRegistryName()); + LOGGER.warn("Could not retrieve item name of {}", ForgeRegistries.ITEMS.getKey(stack.getItem())); cachedName = ERROR_PLACEHOLDER; } @@ -156,10 +155,10 @@ public class ItemGridStack implements IGridStack { try { tooltip = RenderUtils.getTooltipFromItem(stack); } catch (Throwable t) { - LOGGER.warn("Could not retrieve item tooltip of {}", stack.getItem().getRegistryName()); + LOGGER.warn("Could not retrieve item tooltip of {}", ForgeRegistries.ITEMS.getKey(stack.getItem())); tooltip = new ArrayList<>(); - tooltip.add(new TextComponent(ERROR_PLACEHOLDER)); + tooltip.add(Component.literal(ERROR_PLACEHOLDER)); } if (bypassCache) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/widget/SearchWidget.java b/src/main/java/com/refinedmods/refinedstorage/screen/widget/SearchWidget.java index 03265d495..f574b5020 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/widget/SearchWidget.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/widget/SearchWidget.java @@ -9,7 +9,7 @@ import com.refinedmods.refinedstorage.render.RenderSettings; import com.refinedmods.refinedstorage.screen.BaseScreen; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import org.lwjgl.glfw.GLFW; import java.util.ArrayList; @@ -22,7 +22,7 @@ public class SearchWidget extends EditBox { private int historyIndex = -1; public SearchWidget(Font fontRenderer, int x, int y, int width) { - super(fontRenderer, x, y, width, fontRenderer.lineHeight, new TextComponent("")); + super(fontRenderer, x, y, width, fontRenderer.lineHeight, Component.literal("")); this.setBordered(false); this.setVisible(true); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/widget/TabListWidget.java b/src/main/java/com/refinedmods/refinedstorage/screen/widget/TabListWidget.java index 41aa5ff85..cd196ee93 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/widget/TabListWidget.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/widget/TabListWidget.java @@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.Button; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.AbstractContainerMenu; import java.util.LinkedList; @@ -40,8 +40,8 @@ public class TabListWidget { } public void init(int width) { - this.left = screen.addButton(screen.getGuiLeft(), screen.getGuiTop() - 22, 20, 20, new TextComponent("<"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() - 1))); - this.right = screen.addButton(screen.getGuiLeft() + width - 22, screen.getGuiTop() - 22, 20, 20, new TextComponent(">"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() + 1))); + this.left = screen.addButton(screen.getGuiLeft(), screen.getGuiTop() - 22, 20, 20, Component.literal("<"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() - 1))); + this.right = screen.addButton(screen.getGuiLeft() + width - 22, screen.getGuiTop() - 22, 20, 20, Component.literal(">"), true, pages.get() > 0, btn -> listeners.forEach(t -> t.onPageChanged(page.get() + 1))); } public void addListener(ITabListListener listener) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/widget/sidebutton/SideButton.java b/src/main/java/com/refinedmods/refinedstorage/screen/widget/sidebutton/SideButton.java index 2a3e9f192..2941b2254 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/widget/sidebutton/SideButton.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/widget/sidebutton/SideButton.java @@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.util.RenderUtils; import net.minecraft.client.gui.components.Button; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import org.lwjgl.opengl.GL11; public abstract class SideButton extends Button { @@ -19,7 +19,7 @@ public abstract class SideButton extends Button { protected final BaseScreen screen; protected SideButton(BaseScreen screen) { - super(-1, -1, WIDTH, HEIGHT, TextComponent.EMPTY, NO_ACTION); + super(-1, -1, WIDTH, HEIGHT, Component.empty(), NO_ACTION); this.screen = screen; } diff --git a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java index 88291376b..a171719f9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java @@ -12,7 +12,12 @@ import com.refinedmods.refinedstorage.item.property.SecurityCardItemPropertyGett import com.refinedmods.refinedstorage.render.BakedModelOverrideRegistry; import com.refinedmods.refinedstorage.render.blockentity.StorageMonitorBlockEntityRenderer; import com.refinedmods.refinedstorage.render.color.PatternItemColor; -import com.refinedmods.refinedstorage.render.model.*; +import com.refinedmods.refinedstorage.render.model.DiskDriveGeometryLoader; +import com.refinedmods.refinedstorage.render.model.DiskManipulatorGeometryLoader; +import com.refinedmods.refinedstorage.render.model.PortableGridGeometryLoader; +import com.refinedmods.refinedstorage.render.model.baked.CableCoverBakedModel; +import com.refinedmods.refinedstorage.render.model.baked.CableCoverItemBakedModel; +import com.refinedmods.refinedstorage.render.model.baked.PatternBakedModel; import com.refinedmods.refinedstorage.render.resourcepack.ResourcePackListener; import com.refinedmods.refinedstorage.screen.*; import com.refinedmods.refinedstorage.screen.factory.CrafterManagerScreenFactory; @@ -21,8 +26,6 @@ import com.refinedmods.refinedstorage.util.ColorMap; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; @@ -31,11 +34,10 @@ import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.client.ClientRegistry; -import net.minecraftforge.client.event.ModelBakeEvent; -import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.RegisterColorHandlersEvent; +import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.client.model.ForgeModelBakery; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -81,71 +83,36 @@ public final class ClientSetup { // MenuScreens isn't thread safe e.enqueueWork(() -> { - MenuScreens.register(RSContainerMenus.FILTER, FilterScreen::new); - MenuScreens.register(RSContainerMenus.CONTROLLER, ControllerScreen::new); - MenuScreens.register(RSContainerMenus.DISK_DRIVE, DiskDriveScreen::new); - MenuScreens.register(RSContainerMenus.GRID, new GridScreenFactory()); - MenuScreens.register(RSContainerMenus.STORAGE_BLOCK, StorageBlockScreen::new); - MenuScreens.register(RSContainerMenus.FLUID_STORAGE_BLOCK, FluidStorageBlockScreen::new); - MenuScreens.register(RSContainerMenus.EXTERNAL_STORAGE, ExternalStorageScreen::new); - MenuScreens.register(RSContainerMenus.IMPORTER, ImporterScreen::new); - MenuScreens.register(RSContainerMenus.EXPORTER, ExporterScreen::new); - MenuScreens.register(RSContainerMenus.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new); - MenuScreens.register(RSContainerMenus.RELAY, RelayScreen::new); - MenuScreens.register(RSContainerMenus.DETECTOR, DetectorScreen::new); - MenuScreens.register(RSContainerMenus.SECURITY_MANAGER, SecurityManagerScreen::new); - MenuScreens.register(RSContainerMenus.INTERFACE, InterfaceScreen::new); - MenuScreens.register(RSContainerMenus.FLUID_INTERFACE, FluidInterfaceScreen::new); - MenuScreens.register(RSContainerMenus.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new); - MenuScreens.register(RSContainerMenus.STORAGE_MONITOR, StorageMonitorScreen::new); - MenuScreens.register(RSContainerMenus.CONSTRUCTOR, ConstructorScreen::new); - MenuScreens.register(RSContainerMenus.DESTRUCTOR, DestructorScreen::new); - MenuScreens.register(RSContainerMenus.DISK_MANIPULATOR, DiskManipulatorScreen::new); - MenuScreens.register(RSContainerMenus.CRAFTER, CrafterScreen::new); - MenuScreens.register(RSContainerMenus.CRAFTER_MANAGER, new CrafterManagerScreenFactory()); - MenuScreens.register(RSContainerMenus.CRAFTING_MONITOR, CraftingMonitorScreen::new); - MenuScreens.register(RSContainerMenus.WIRELESS_CRAFTING_MONITOR, CraftingMonitorScreen::new); + MenuScreens.register(RSContainerMenus.FILTER.get(), FilterScreen::new); + MenuScreens.register(RSContainerMenus.CONTROLLER.get(), ControllerScreen::new); + MenuScreens.register(RSContainerMenus.DISK_DRIVE.get(), DiskDriveScreen::new); + MenuScreens.register(RSContainerMenus.GRID.get(), new GridScreenFactory()); + MenuScreens.register(RSContainerMenus.STORAGE_BLOCK.get(), StorageBlockScreen::new); + MenuScreens.register(RSContainerMenus.FLUID_STORAGE_BLOCK.get(), FluidStorageBlockScreen::new); + MenuScreens.register(RSContainerMenus.EXTERNAL_STORAGE.get(), ExternalStorageScreen::new); + MenuScreens.register(RSContainerMenus.IMPORTER.get(), ImporterScreen::new); + MenuScreens.register(RSContainerMenus.EXPORTER.get(), ExporterScreen::new); + MenuScreens.register(RSContainerMenus.NETWORK_TRANSMITTER.get(), NetworkTransmitterScreen::new); + MenuScreens.register(RSContainerMenus.RELAY.get(), RelayScreen::new); + MenuScreens.register(RSContainerMenus.DETECTOR.get(), DetectorScreen::new); + MenuScreens.register(RSContainerMenus.SECURITY_MANAGER.get(), SecurityManagerScreen::new); + MenuScreens.register(RSContainerMenus.INTERFACE.get(), InterfaceScreen::new); + MenuScreens.register(RSContainerMenus.FLUID_INTERFACE.get(), FluidInterfaceScreen::new); + MenuScreens.register(RSContainerMenus.WIRELESS_TRANSMITTER.get(), WirelessTransmitterScreen::new); + MenuScreens.register(RSContainerMenus.STORAGE_MONITOR.get(), StorageMonitorScreen::new); + MenuScreens.register(RSContainerMenus.CONSTRUCTOR.get(), ConstructorScreen::new); + MenuScreens.register(RSContainerMenus.DESTRUCTOR.get(), DestructorScreen::new); + MenuScreens.register(RSContainerMenus.DISK_MANIPULATOR.get(), DiskManipulatorScreen::new); + MenuScreens.register(RSContainerMenus.CRAFTER.get(), CrafterScreen::new); + MenuScreens.register(RSContainerMenus.CRAFTER_MANAGER.get(), new CrafterManagerScreenFactory()); + MenuScreens.register(RSContainerMenus.CRAFTING_MONITOR.get(), CraftingMonitorScreen::new); + MenuScreens.register(RSContainerMenus.WIRELESS_CRAFTING_MONITOR.get(), CraftingMonitorScreen::new); }); - ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); - ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_PORTABLE_GRID); - - // RenderLayer isn't thread safe - e.enqueueWork(() -> { - RSBlocks.CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.CREATIVE_CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.CRAFTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.CRAFTER_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.CRAFTING_MONITOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.DETECTOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.DISK_MANIPULATOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.CRAFTING_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.PATTERN_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.FLUID_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.NETWORK_RECEIVER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.NETWORK_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.RELAY.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.SECURITY_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - RSBlocks.WIRELESS_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout())); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.CABLE.get(), RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.IMPORTER.get(), RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXPORTER.get(), RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXTERNAL_STORAGE.get(), RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.CONSTRUCTOR.get(), RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(RSBlocks.DESTRUCTOR.get(), RenderType.cutout()); - }); - - BlockEntityRenderers.register(RSBlockEntities.STORAGE_MONITOR, ctx -> new StorageMonitorBlockEntityRenderer()); + BlockEntityRenderers.register(RSBlockEntities.STORAGE_MONITOR.get(), ctx -> new StorageMonitorBlockEntityRenderer()); // ItemProperties isn't thread safe e.enqueueWork(() -> { - Minecraft.getInstance().getItemColors().register(new PatternItemColor(), RSItems.PATTERN.get()); - ItemProperties.register(RSItems.SECURITY_CARD.get(), new ResourceLocation("active"), new SecurityCardItemPropertyGetter()); RSItems.CONTROLLER.values().forEach(controller -> ItemProperties.register(controller.get(), new ResourceLocation("energy_type"), new ControllerItemPropertyGetter())); @@ -192,136 +159,60 @@ public final class ClientSetup { }); } + // TODO: we have probably too much emissivity (when disconnected) + private static void registerBakedModelOverrides() { - forEachColorApply("controller", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel( - base, - true, - new ResourceLocation(RS.ID, "block/controller/cutouts/" + color), - new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"), - new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on")) - - )); - forEachColorApply("creative_controller", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel( - base, - true, - new ResourceLocation(RS.ID, "block/controller/cutouts/" + color), - new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"), - new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on")) - )); - forEachColorApply("grid", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/grid/cutouts/")))); - forEachColorApply("crafting_grid", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/crafting_grid/cutouts/")))); - forEachColorApply("pattern_grid", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/pattern_grid/cutouts/")))); - forEachColorApply("fluid_grid", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/fluid_grid/cutouts/")))); - forEachColorApply("network_receiver", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/network_receiver/cutouts/")))); - forEachColorApply("network_transmitter", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/network_transmitter/cutouts/")))); - forEachColorApply("relay", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/relay/cutouts/")))); - forEachColorApply("detector", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/detector/cutouts/")))); - forEachColorApply("security_manager", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel( - base, - true, - getMultipleColoredModels(color, "block/security_manager/cutouts/top_", - "block/security_manager/cutouts/front_", - "block/security_manager/cutouts/left_", - "block/security_manager/cutouts/back_", - "block/security_manager/cutouts/right_") - ))); - forEachColorApply("wireless_transmitter", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/wireless_transmitter/cutouts/")))); - - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( - new DiskDriveBakedModel( - base, - registry.get(DISK_RESOURCE), - registry.get(DISK_NEAR_CAPACITY_RESOURCE), - registry.get(DISK_FULL_RESOURCE), - registry.get(DISK_DISCONNECTED_RESOURCE) - ), - false, - new ResourceLocation(RS.ID, "block/disks/leds") - )); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "cable"), (base, registry) -> new BakedModelCableCover(base)); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "exporter"), (base, registry) -> new BakedModelCableCover(base)); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "importer"), (base, registry) -> new BakedModelCableCover(base)); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "constructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected")))); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected")))); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "external_storage"), (base, registry) -> new BakedModelCableCover(base)); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.NORMAL)); - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.HOLLOW)); - - forEachColorApply("disk_manipulator", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel( - new DiskManipulatorBakedModel( - registry.get(new ResourceLocation(RS.ID + ":block/disk_manipulator/" + color)), - registry.get(new ResourceLocation(RS.ID + ":block/disk_manipulator/disconnected")), - registry.get(DISK_RESOURCE), - registry.get(DISK_NEAR_CAPACITY_RESOURCE), - registry.get(DISK_FULL_RESOURCE), - registry.get(DISK_DISCONNECTED_RESOURCE) - ), - false, - new ResourceLocation(RS.ID, "block/disks/leds"), new ResourceLocation(RS.ID, "block/disk_manipulator/cutouts/" + color) - ))); - - for (String portableGridName : new String[]{"portable_grid", "creative_portable_grid"}) { - BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, portableGridName), (base, registry) -> new FullbrightBakedModel( - new PortableGridBakedModel( - registry.get(new ResourceLocation(RS.ID + ":block/portable_grid_connected")), - registry.get(new ResourceLocation(RS.ID + ":block/portable_grid_disconnected")), - registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk")), - registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_near_capacity")), - registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_full")), - registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_disconnected")) - ), - false, - new ResourceLocation(RS.ID + ":block/disks/leds") - )); - } - - forEachColorApply("crafter", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel( - base, - true, - getMultipleColoredModels(color, "block/crafter/cutouts/side_", "block/crafter/cutouts/top_") - ))); - - forEachColorApply("crafter_manager", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/crafter_manager/cutouts/")))); - forEachColorApply("crafting_monitor", (name, color) -> BAKED_MODEL_OVERRIDE_REGISTRY.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/crafting_monitor/cutouts/")))); - + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "cable"), (base, registry) -> new CableCoverBakedModel(base)); + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "exporter"), (base, registry) -> new CableCoverBakedModel(base)); + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "importer"), (base, registry) -> new CableCoverBakedModel(base)); + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "external_storage"), (base, registry) -> new CableCoverBakedModel(base)); + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "cover"), (base, registry) -> new CableCoverItemBakedModel(ItemStack.EMPTY, CoverType.NORMAL)); + BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new CableCoverItemBakedModel(ItemStack.EMPTY, CoverType.HOLLOW)); BAKED_MODEL_OVERRIDE_REGISTRY.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base)); } + @SubscribeEvent + public static void onRegisterColorBindings(RegisterColorHandlersEvent.Item e) { + e.register(new PatternItemColor(), RSItems.PATTERN.get()); + } + + @SubscribeEvent + public static void onRegisterKeymappings(RegisterKeyMappingsEvent e) { + e.register(RSKeyBindings.FOCUS_SEARCH_BAR); + e.register(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); + e.register(RSKeyBindings.OPEN_WIRELESS_GRID); + e.register(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); + e.register(RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR); + e.register(RSKeyBindings.OPEN_PORTABLE_GRID); + } + @SubscribeEvent public static void addReloadListener(AddReloadListenerEvent event) { event.addListener(new ResourcePackListener()); } @SubscribeEvent - public static void onModelRegistry(ModelRegistryEvent e) { - ForgeModelBakery.addSpecialModel(DISK_RESOURCE); - ForgeModelBakery.addSpecialModel(DISK_NEAR_CAPACITY_RESOURCE); - ForgeModelBakery.addSpecialModel(DISK_FULL_RESOURCE); - ForgeModelBakery.addSpecialModel(DISK_DISCONNECTED_RESOURCE); + public static void onRegisterAdditionalModels(ModelEvent.RegisterAdditional e) { + e.register(DISK_RESOURCE); + e.register(DISK_NEAR_CAPACITY_RESOURCE); + e.register(DISK_FULL_RESOURCE); + e.register(DISK_DISCONNECTED_RESOURCE); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disk_manipulator/disconnected")); + e.register(new ResourceLocation(RS.ID + ":block/disk_manipulator/disconnected")); for (DyeColor color : DyeColor.values()) { - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disk_manipulator/" + color)); + e.register(new ResourceLocation(RS.ID + ":block/disk_manipulator/" + color)); } - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/portable_grid_connected")); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/portable_grid_disconnected")); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk")); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_near_capacity")); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_full")); - ForgeModelBakery.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_disconnected")); } @SubscribeEvent - public static void onModelBake(ModelBakeEvent e) { - FullbrightBakedModel.invalidateCache(); - - for (ResourceLocation id : e.getModelRegistry().keySet()) { + public static void onModelBake(ModelEvent.BakingCompleted e) { + for (ResourceLocation id : e.getModels().keySet()) { BakedModelOverrideRegistry.BakedModelOverrideFactory factory = BAKED_MODEL_OVERRIDE_REGISTRY.get(new ResourceLocation(id.getNamespace(), id.getPath())); if (factory != null) { - e.getModelRegistry().put(id, factory.create(e.getModelRegistry().get(id), e.getModelRegistry())); + e.getModels().put(id, factory.create(e.getModels().get(id), e.getModels())); } } } @@ -332,4 +223,11 @@ public final class ClientSetup { event.addSprite(new ResourceLocation(RS.ID, "block/cable_part_border")); } } + + @SubscribeEvent + public static void onRegisterModelGeometry(final ModelEvent.RegisterGeometryLoaders e) { + e.register("disk_drive", new DiskDriveGeometryLoader()); + e.register("disk_manipulator", new DiskManipulatorGeometryLoader()); + e.register("portable_grid", new PortableGridGeometryLoader()); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/setup/CommonSetup.java b/src/main/java/com/refinedmods/refinedstorage/setup/CommonSetup.java index 0828b11be..be6f6c77d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/setup/CommonSetup.java +++ b/src/main/java/com/refinedmods/refinedstorage/setup/CommonSetup.java @@ -1,9 +1,6 @@ package com.refinedmods.refinedstorage.setup; import com.refinedmods.refinedstorage.RS; -import com.refinedmods.refinedstorage.RSBlocks; -import com.refinedmods.refinedstorage.RSLootFunctions; -import com.refinedmods.refinedstorage.api.network.NetworkType; import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; @@ -31,30 +28,11 @@ import com.refinedmods.refinedstorage.apiimpl.storage.disk.factory.ItemStorageDi import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.FluidExternalStorageProvider; import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.ItemExternalStorageProvider; import com.refinedmods.refinedstorage.block.BlockListener; -import com.refinedmods.refinedstorage.blockentity.*; -import com.refinedmods.refinedstorage.blockentity.craftingmonitor.CraftingMonitorBlockEntity; -import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; -import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity; -import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridBlockEntity; -import com.refinedmods.refinedstorage.container.*; -import com.refinedmods.refinedstorage.container.factory.*; import com.refinedmods.refinedstorage.integration.craftingtweaks.CraftingTweaksIntegration; import com.refinedmods.refinedstorage.integration.inventorysorter.InventorySorterIntegration; -import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; -import com.refinedmods.refinedstorage.recipe.CoverRecipe; -import com.refinedmods.refinedstorage.recipe.HollowCoverRecipe; -import com.refinedmods.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer; -import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @@ -149,93 +127,4 @@ public final class CommonSetup { public static void onRegisterCapabilities(RegisterCapabilitiesEvent e) { e.register(INetworkNodeProxy.class); } - - @SubscribeEvent - public static void onRegisterRecipeSerializers(RegistryEvent.Register> e) { - e.getRegistry().register(new UpgradeWithEnchantedBookRecipeSerializer().setRegistryName(RS.ID, "upgrade_with_enchanted_book")); - e.getRegistry().register(CoverRecipe.SERIALIZER.setRegistryName(new ResourceLocation(RS.ID, "cover_recipe"))); - e.getRegistry().register(HollowCoverRecipe.SERIALIZER.setRegistryName(new ResourceLocation(RS.ID, "hollow_cover_recipe"))); - } - - @SubscribeEvent - public static void onRegisterBlockEntities(RegistryEvent.Register> e) { - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.NORMAL, pos, state), RSBlocks.CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "controller"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.CREATIVE, pos, state), RSBlocks.CREATIVE_CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "creative_controller"))); - e.getRegistry().register(BlockEntityType.Builder.of(CableBlockEntity::new, RSBlocks.CABLE.get()).build(null).setRegistryName(RS.ID, "cable")); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(DiskDriveBlockEntity::new, RSBlocks.DISK_DRIVE.get()).build(null).setRegistryName(RS.ID, "disk_drive"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.NORMAL, pos, state), RSBlocks.GRID.getBlocks()).build(null).setRegistryName(RS.ID, "grid"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.CRAFTING, pos, state), RSBlocks.CRAFTING_GRID.getBlocks()).build(null).setRegistryName(RS.ID, "crafting_grid"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.PATTERN, pos, state), RSBlocks.PATTERN_GRID.getBlocks()).build(null).setRegistryName(RS.ID, "pattern_grid"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new GridBlockEntity(GridType.FLUID, pos, state), RSBlocks.FLUID_GRID.getBlocks()).build(null).setRegistryName(RS.ID, "fluid_grid"))); - - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.ONE_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.ONE_K).get()).build(null).setRegistryName(RS.ID, "1k_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.FOUR_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.FOUR_K).get()).build(null).setRegistryName(RS.ID, "4k_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.SIXTEEN_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.SIXTEEN_K).get()).build(null).setRegistryName(RS.ID, "16k_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.SIXTY_FOUR_K, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.SIXTY_FOUR_K).get()).build(null).setRegistryName(RS.ID, "64k_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new StorageBlockEntity(ItemStorageType.CREATIVE, pos, state), RSBlocks.STORAGE_BLOCKS.get(ItemStorageType.CREATIVE).get()).build(null).setRegistryName(RS.ID, "creative_storage_block"))); - - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.SIXTY_FOUR_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.SIXTY_FOUR_K).get()).build(null).setRegistryName(RS.ID, "64k_fluid_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.TWO_HUNDRED_FIFTY_SIX_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.TWO_HUNDRED_FIFTY_SIX_K).get()).build(null).setRegistryName(RS.ID, "256k_fluid_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.THOUSAND_TWENTY_FOUR_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.THOUSAND_TWENTY_FOUR_K).get()).build(null).setRegistryName(RS.ID, "1024k_fluid_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.FOUR_THOUSAND_NINETY_SIX_K, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.FOUR_THOUSAND_NINETY_SIX_K).get()).build(null).setRegistryName(RS.ID, "4096k_fluid_storage_block"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new FluidStorageBlockEntity(FluidStorageType.CREATIVE, pos, state), RSBlocks.FLUID_STORAGE_BLOCKS.get(FluidStorageType.CREATIVE).get()).build(null).setRegistryName(RS.ID, "creative_fluid_storage_block"))); - - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(ExternalStorageBlockEntity::new, RSBlocks.EXTERNAL_STORAGE.get()).build(null).setRegistryName(RS.ID, "external_storage"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(ImporterBlockEntity::new, RSBlocks.IMPORTER.get()).build(null).setRegistryName(RS.ID, "importer"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(ExporterBlockEntity::new, RSBlocks.EXPORTER.get()).build(null).setRegistryName(RS.ID, "exporter"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(NetworkReceiverBlockEntity::new, RSBlocks.NETWORK_RECEIVER.getBlocks()).build(null).setRegistryName(RS.ID, "network_receiver"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(NetworkTransmitterBlockEntity::new, RSBlocks.NETWORK_TRANSMITTER.getBlocks()).build(null).setRegistryName(RS.ID, "network_transmitter"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(RelayBlockEntity::new, RSBlocks.RELAY.getBlocks()).build(null).setRegistryName(RS.ID, "relay"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(DetectorBlockEntity::new, RSBlocks.DETECTOR.getBlocks()).build(null).setRegistryName(RS.ID, "detector"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(SecurityManagerBlockEntity::new, RSBlocks.SECURITY_MANAGER.getBlocks()).build(null).setRegistryName(RS.ID, "security_manager"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(InterfaceBlockEntity::new, RSBlocks.INTERFACE.get()).build(null).setRegistryName(RS.ID, "interface"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(FluidInterfaceBlockEntity::new, RSBlocks.FLUID_INTERFACE.get()).build(null).setRegistryName(RS.ID, "fluid_interface"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(WirelessTransmitterBlockEntity::new, RSBlocks.WIRELESS_TRANSMITTER.getBlocks()).build(null).setRegistryName(RS.ID, "wireless_transmitter"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(StorageMonitorBlockEntity::new, RSBlocks.STORAGE_MONITOR.get()).build(null).setRegistryName(RS.ID, "storage_monitor"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(ConstructorBlockEntity::new, RSBlocks.CONSTRUCTOR.get()).build(null).setRegistryName(RS.ID, "constructor"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(DestructorBlockEntity::new, RSBlocks.DESTRUCTOR.get()).build(null).setRegistryName(RS.ID, "destructor"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(DiskManipulatorBlockEntity::new, RSBlocks.DISK_MANIPULATOR.getBlocks()).build(null).setRegistryName(RS.ID, "disk_manipulator"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(CrafterBlockEntity::new, RSBlocks.CRAFTER.getBlocks()).build(null).setRegistryName(RS.ID, "crafter"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(CrafterManagerBlockEntity::new, RSBlocks.CRAFTER_MANAGER.getBlocks()).build(null).setRegistryName(RS.ID, "crafter_manager"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of(CraftingMonitorBlockEntity::new, RSBlocks.CRAFTING_MONITOR.getBlocks()).build(null).setRegistryName(RS.ID, "crafting_monitor"))); - - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new PortableGridBlockEntity(PortableGridBlockItem.Type.CREATIVE, pos, state), RSBlocks.CREATIVE_PORTABLE_GRID.get()).build(null).setRegistryName(RS.ID, "creative_portable_grid"))); - e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new PortableGridBlockEntity(PortableGridBlockItem.Type.NORMAL, pos, state), RSBlocks.PORTABLE_GRID.get()).build(null).setRegistryName(RS.ID, "portable_grid"))); - } - - private static BlockEntityType registerSynchronizationParameters(BlockEntityType t) { - BaseBlockEntity blockEntity = (BaseBlockEntity) t.create(BlockPos.ZERO, null); - - blockEntity.getDataManager().getParameters().forEach(BlockEntitySynchronizationManager::registerParameter); - - return t; - } - - @SubscribeEvent - public static void onRegisterMenus(RegistryEvent.Register> e) { - e.getRegistry().register(IForgeMenuType.create((windowId, inv, data) -> new FilterContainerMenu(inv.player, inv.getSelected(), windowId)).setRegistryName(RS.ID, "filter")); - e.getRegistry().register(IForgeMenuType.create(((windowId, inv, data) -> new ControllerContainerMenu(null, inv.player, windowId))).setRegistryName(RS.ID, "controller")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DiskDriveContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "disk_drive")); - e.getRegistry().register(IForgeMenuType.create(new GridContainerFactory()).setRegistryName(RS.ID, "grid")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new StorageContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "storage_block")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new FluidStorageContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "fluid_storage_block")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ExternalStorageContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "external_storage")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ImporterContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "importer")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ExporterContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "exporter")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new NetworkTransmitterContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "network_transmitter")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new RelayContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "relay")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DetectorContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "detector")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new SecurityManagerContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "security_manager")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new InterfaceContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "interface")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new FluidInterfaceContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "fluid_interface")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new WirelessTransmitterContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "wireless_transmitter")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new StorageMonitorContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "storage_monitor")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new ConstructorContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "constructor")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DestructorContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "destructor")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new DiskManipulatorContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "disk_manipulator")); - e.getRegistry().register(IForgeMenuType.create(new BlockEntityContainerFactory((windowId, inv, blockEntity) -> new CrafterContainerMenu(blockEntity, inv.player, windowId))).setRegistryName(RS.ID, "crafter")); - e.getRegistry().register(IForgeMenuType.create(new CrafterManagerContainerFactory()).setRegistryName(RS.ID, "crafter_manager")); - e.getRegistry().register(IForgeMenuType.create(new CraftingMonitorContainerFactory()).setRegistryName(RS.ID, "crafting_monitor")); - e.getRegistry().register(IForgeMenuType.create(new WirelessCraftingMonitorContainerFactory()).setRegistryName(RS.ID, "wireless_crafting_monitor")); - } } diff --git a/src/main/java/com/refinedmods/refinedstorage/util/BlockUtils.java b/src/main/java/com/refinedmods/refinedstorage/util/BlockUtils.java index 35fb200e7..b65269757 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/BlockUtils.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/BlockUtils.java @@ -1,7 +1,7 @@ package com.refinedmods.refinedstorage.util; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; + import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -16,6 +16,6 @@ public final class BlockUtils { // Block#getTranslatedName is client only public static Component getBlockTranslation(Block block) { - return new TranslatableComponent(block.getDescriptionId()); + return Component.translatable(block.getDescriptionId()); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java b/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java index dc856066f..693e0c0a6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/ColorMap.java @@ -23,21 +23,19 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.IForgeRegistryEntry; import net.minecraftforge.registries.RegistryObject; -import java.util.Collection; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.BiConsumer; import java.util.function.Supplier; -public class ColorMap> { +public class ColorMap { public static final DyeColor DEFAULT_COLOR = DyeColor.LIGHT_BLUE; private final Map> map = new EnumMap<>(DyeColor.class); + private final Map colorByBlock = new HashMap<>(); + private DeferredRegister itemRegister; private DeferredRegister blockRegister; private List lateRegistration; @@ -55,6 +53,13 @@ public class ColorMap> { return map.get(color); } + public DyeColor getColorFromObject(T object) { + if (colorByBlock.isEmpty()) { + map.forEach(((dyeColor, registryObject) -> colorByBlock.put(registryObject.get(), dyeColor))); + } + return colorByBlock.get(object); + } + public Collection> values() { return map.values(); } diff --git a/src/main/java/com/refinedmods/refinedstorage/util/LevelUtils.java b/src/main/java/com/refinedmods/refinedstorage/util/LevelUtils.java index d28c95b80..950bc2712 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/LevelUtils.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/LevelUtils.java @@ -4,7 +4,7 @@ import com.mojang.authlib.GameProfile; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.players.GameProfileCache; import net.minecraft.world.Container; @@ -82,7 +82,7 @@ public final class LevelUtils { } public static void sendNoPermissionMessage(Player player) { - player.sendMessage(new TranslatableComponent("misc.refinedstorage.security.no_permission").setStyle(Styles.RED), player.getUUID()); + player.sendSystemMessage(Component.translatable("misc.refinedstorage.security.no_permission").setStyle(Styles.RED)); } public static HitResult rayTracePlayer(Level level, Player player) { diff --git a/src/main/java/com/refinedmods/refinedstorage/util/RenderUtils.java b/src/main/java/com/refinedmods/refinedstorage/util/RenderUtils.java index 77760cab7..bf51eab41 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/RenderUtils.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/RenderUtils.java @@ -2,7 +2,6 @@ package com.refinedmods.refinedstorage.util; import com.google.common.collect.ImmutableMap; import com.mojang.math.Quaternion; -import com.mojang.math.Transformation; import com.mojang.math.Vector3f; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.apiimpl.API; @@ -10,31 +9,39 @@ import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemTransform; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.fluids.FluidStack; import java.util.HashSet; import java.util.List; -import java.util.Random; import java.util.Set; public final class RenderUtils { - private static ImmutableMap DEFAULT_BLOCK_TRANSFORM; - private RenderUtils() { } + public static Quaternion getQuaternion(Direction direction) { + return switch (direction) { + case NORTH -> new Quaternion(0, 0, 0, true); + case EAST -> new Quaternion(0, -90, 0, true); + case SOUTH -> new Quaternion(0, 180, 0, true); + case WEST -> new Quaternion(0, 90, 0, true); + case UP -> new Quaternion(90, 0, 180, true); + case DOWN -> new Quaternion(-90, 0, 0, true); + }; + } + public static String shorten(String text, int length) { if (text.length() > length) { text = text.substring(0, length) + "..."; @@ -68,7 +75,7 @@ public final class RenderUtils { } if (displayAmount) { - data = new TextComponent(amount + "x ").append(data); + data = Component.literal(amount + "x ").append(data); } tooltip.add(data.setStyle(Styles.GRAY)); @@ -96,7 +103,7 @@ public final class RenderUtils { } if (displayMb) { - data = new TextComponent(API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ").append(data); + data = Component.literal(API.instance().getQuantityFormatter().formatInBucketForm(amount) + " ").append(data); } tooltip.add(data.setStyle(Styles.GRAY)); @@ -114,16 +121,12 @@ public final class RenderUtils { return ox >= x && ox <= x + w && oy >= y && oy <= y + h; } - public static TextureAtlasSprite getSprite(BakedModel coverModel, BlockState coverState, Direction facing, Random rand) { + public static TextureAtlasSprite getSprite(BakedModel coverModel, BlockState coverState, Direction facing, RandomSource rand) { TextureAtlasSprite sprite = null; - RenderType originalType = MinecraftForgeClient.getRenderType(); - try { - for (RenderType layer : RenderType.chunkBufferLayers()) { - ForgeHooksClient.setRenderType(layer); - - for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) { + for (RenderType layer : coverModel.getRenderTypes(coverState, rand, ModelData.EMPTY)) { + for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand, ModelData.EMPTY, layer)) { return bakedQuad.getSprite(); } @@ -139,8 +142,6 @@ public final class RenderUtils { } } catch (Exception e) { // NO OP - } finally { - ForgeHooksClient.setRenderType(originalType); } if (sprite == null) { @@ -160,34 +161,25 @@ public final class RenderUtils { return sprite; } - public static ImmutableMap getDefaultBlockTransforms() { - if (DEFAULT_BLOCK_TRANSFORM != null) { - return DEFAULT_BLOCK_TRANSFORM; - } - - Transformation thirdperson = getTransform(0, 2.5f, 0, 75, 45, 0, 0.375f); - - return DEFAULT_BLOCK_TRANSFORM = ImmutableMap.builder() - .put(ItemTransforms.TransformType.GUI, getTransform(0, 0, 0, 30, 225, 0, 0.625f)) - .put(ItemTransforms.TransformType.GROUND, getTransform(0, 3, 0, 0, 0, 0, 0.25f)) - .put(ItemTransforms.TransformType.FIXED, getTransform(0, 0, 0, 0, 0, 0, 0.5f)) - .put(ItemTransforms.TransformType.THIRD_PERSON_RIGHT_HAND, thirdperson) - .put(ItemTransforms.TransformType.THIRD_PERSON_LEFT_HAND, leftifyTransform(thirdperson)) - .put(ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND, getTransform(0, 0, 0, 0, 45, 0, 0.4f)) - .put(ItemTransforms.TransformType.FIRST_PERSON_LEFT_HAND, getTransform(0, 0, 0, 0, 225, 0, 0.4f)) - .build(); + public static ItemTransforms getDefaultBlockTransforms() { + var thirdperson = getTransform(0, 2.5f, 0, 75, 45, 0, 0.375f); + return new ItemTransforms( + thirdperson, + thirdperson, + getTransform(0, 0, 0, 0, 225, 0, 0.4f), + getTransform(0, 0, 0, 0, 45, 0, 0.4f), + ItemTransform.NO_TRANSFORM, + getTransform(-3, 1, 0, 30, 225, 0, 0.625f), + getTransform(0, 3, 0, 0, 0, 0, 0.25f), + getTransform(0, 0, 0, 0, 0, 0, 0.5f), + ImmutableMap.of()); } - private static Transformation leftifyTransform(Transformation transform) { - return transform.blockCornerToCenter().blockCenterToCorner(); - } - - private static Transformation getTransform(float tx, float ty, float tz, float ax, float ay, float az, float s) { - return new Transformation( + private static ItemTransform getTransform(float tx, float ty, float tz, float ax, float ay, float az, float s) { + return new ItemTransform( + new Vector3f(ax, ay, az), new Vector3f(tx / 16, ty / 16, tz / 16), - new Quaternion(ax, ay, az, true), - new Vector3f(s, s, s), - null + new Vector3f(s, s, s) ); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/util/StackUtils.java b/src/main/java/com/refinedmods/refinedstorage/util/StackUtils.java index 61d881ae4..0551c5c75 100644 --- a/src/main/java/com/refinedmods/refinedstorage/util/StackUtils.java +++ b/src/main/java/com/refinedmods/refinedstorage/util/StackUtils.java @@ -18,8 +18,8 @@ import net.minecraft.world.Container; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandlerItem; @@ -33,6 +33,7 @@ import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.Objects; import java.util.UUID; import java.util.function.Function; @@ -297,7 +298,7 @@ public final class StackUtils { IFluidHandlerItem handler = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null).orElse(null); if (handler != null) { - FluidStack result = handler.drain(FluidAttributes.BUCKET_VOLUME, simulate ? IFluidHandler.FluidAction.SIMULATE : IFluidHandler.FluidAction.EXECUTE); + FluidStack result = handler.drain(FluidType.BUCKET_VOLUME, simulate ? IFluidHandler.FluidAction.SIMULATE : IFluidHandler.FluidAction.EXECUTE); return Pair.of(handler.getContainer(), result); } @@ -310,7 +311,8 @@ public final class StackUtils { CompoundTag itemTag = new CompoundTag(); - itemTag.putString(NBT_ITEM_ID, stack.getItem().getRegistryName().toString()); + ResourceLocation key = Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(stack.getItem()), "Item is not registered"); + itemTag.putString(NBT_ITEM_ID, key.toString()); itemTag.putInt(NBT_ITEM_QUANTITY, stack.getCount()); if (stack.hasTag()) { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index fd247f50b..d9782d6b9 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" -loaderVersion = "[40,)" +loaderVersion = "[43,)" issueTrackerURL = "https://github.com/refinedmods/refinedstorage" license="MIT" [[mods]] @@ -11,16 +11,4 @@ logoFile = "logo.png" authors = "Refined Mods" description = ''' An elegant solution to your hoarding problem -''' -[[dependencies.refinedstorage]] -modId = "forge" -mandatory = true -versionRange = "[40.1,)" -ordering = "NONE" -side = "BOTH" -[[dependencies.refinedstorage]] -modId = "jei" -mandatory = false -versionRange = "[9.7.1,)" -ordering = "BEFORE" -side = "BOTH" \ No newline at end of file +''' \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/blockstates/creative_portable_grid.json b/src/main/resources/assets/refinedstorage/blockstates/creative_portable_grid.json index 1b16bd5e6..b5bdb86fa 100644 --- a/src/main/resources/assets/refinedstorage/blockstates/creative_portable_grid.json +++ b/src/main/resources/assets/refinedstorage/blockstates/creative_portable_grid.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "refinedstorage:block/portable_grid_disconnected" + "model": "refinedstorage:block/portable_grid" } } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/blockstates/portable_grid.json b/src/main/resources/assets/refinedstorage/blockstates/portable_grid.json index 1b16bd5e6..b5bdb86fa 100644 --- a/src/main/resources/assets/refinedstorage/blockstates/portable_grid.json +++ b/src/main/resources/assets/refinedstorage/blockstates/portable_grid.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "refinedstorage:block/portable_grid_disconnected" + "model": "refinedstorage:block/portable_grid" } } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/cable_core.json b/src/main/resources/assets/refinedstorage/models/block/cable_core.json index ef5885ace..c66f6c16f 100755 --- a/src/main/resources/assets/refinedstorage/models/block/cable_core.json +++ b/src/main/resources/assets/refinedstorage/models/block/cable_core.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "textures": { "cable": "refinedstorage:block/cable", "particle": "refinedstorage:block/cable" diff --git a/src/main/resources/assets/refinedstorage/models/block/cable_extension.json b/src/main/resources/assets/refinedstorage/models/block/cable_extension.json index ec633d06d..bfb3b8e78 100755 --- a/src/main/resources/assets/refinedstorage/models/block/cable_extension.json +++ b/src/main/resources/assets/refinedstorage/models/block/cable_extension.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "textures": { "cable": "refinedstorage:block/cable", "particle": "refinedstorage:block/cable" diff --git a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json index 27156fa36..9ca7611e3 100755 --- a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json +++ b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "textures": { "border": "refinedstorage:block/cable_part_border" }, @@ -152,7 +153,8 @@ 0.0, 16.0, 16.0 - ] + ], + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/controller_nearly.json b/src/main/resources/assets/refinedstorage/models/block/controller_nearly.json index 99cab458b..500a567df 100644 --- a/src/main/resources/assets/refinedstorage/models/block/controller_nearly.json +++ b/src/main/resources/assets/refinedstorage/models/block/controller_nearly.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "elements": [ { diff --git a/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json b/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json index 913f1de69..0c42ce3a5 100644 --- a/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json +++ b/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "elements": [ { @@ -53,27 +54,33 @@ "faces": { "up": { "texture": "#cutout", - "cullface": "up" + "cullface": "up", + "emissivity": 15 }, "down": { "texture": "#cutout", - "cullface": "down" + "cullface": "down", + "emissivity": 15 }, "north": { "texture": "#cutout", - "cullface": "north" + "cullface": "north", + "emissivity": 15 }, "south": { "texture": "#cutout", - "cullface": "south" + "cullface": "south", + "emissivity": 15 }, "west": { "texture": "#cutout", - "cullface": "west" + "cullface": "west", + "emissivity": 15 }, "east": { "texture": "#cutout", - "cullface": "east" + "cullface": "east", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/cube_cutout.json b/src/main/resources/assets/refinedstorage/models/block/cube_cutout.json index aba1bb1fc..da4a541e8 100644 --- a/src/main/resources/assets/refinedstorage/models/block/cube_cutout.json +++ b/src/main/resources/assets/refinedstorage/models/block/cube_cutout.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "elements": [ { @@ -53,27 +54,33 @@ "faces": { "up": { "texture": "#cutout_up", - "cullface": "up" + "cullface": "up", + "emissivity": 15 }, "down": { "texture": "#cutout_down", - "cullface": "down" + "cullface": "down", + "emissivity": 15 }, "north": { "texture": "#cutout_north", - "cullface": "north" + "cullface": "north", + "emissivity": 15 }, "south": { "texture": "#cutout_south", - "cullface": "south" + "cullface": "south", + "emissivity": 15 }, "west": { "texture": "#cutout_west", - "cullface": "west" + "cullface": "west", + "emissivity": 15 }, "east": { "texture": "#cutout_east", - "cullface": "east" + "cullface": "east", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/cube_north_cutout.json b/src/main/resources/assets/refinedstorage/models/block/cube_north_cutout.json index 348c5e5ba..baba2d3bc 100644 --- a/src/main/resources/assets/refinedstorage/models/block/cube_north_cutout.json +++ b/src/main/resources/assets/refinedstorage/models/block/cube_north_cutout.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "elements": [ { @@ -53,7 +54,8 @@ "faces": { "north": { "texture": "#cutout", - "cullface": "north" + "cullface": "north", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/detector.json b/src/main/resources/assets/refinedstorage/models/block/detector.json index 1c1756c6b..ba814166b 100755 --- a/src/main/resources/assets/refinedstorage/models/block/detector.json +++ b/src/main/resources/assets/refinedstorage/models/block/detector.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "textures": { "side": "refinedstorage:block/detector/side", @@ -89,7 +90,8 @@ 10, 12 ], - "texture": "#torch" + "texture": "#torch", + "emissivity": 15 }, "west": { "uv": [ @@ -98,7 +100,8 @@ 10, 12 ], - "texture": "#torch" + "texture": "#torch", + "emissivity": 15 } } }, @@ -123,7 +126,8 @@ 10, 12 ], - "texture": "#torch" + "texture": "#torch", + "emissivity": 15 }, "south": { "uv": [ @@ -132,7 +136,8 @@ 10, 12 ], - "texture": "#torch" + "texture": "#torch", + "emissivity": 15 } } }, diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_drive.json b/src/main/resources/assets/refinedstorage/models/block/disk_drive.json old mode 100755 new mode 100644 index c359d97b1..2a37bf3a1 --- a/src/main/resources/assets/refinedstorage/models/block/disk_drive.json +++ b/src/main/resources/assets/refinedstorage/models/block/disk_drive.json @@ -1,50 +1,3 @@ { - "parent": "block/block", - "textures": { - "particle": "refinedstorage:block/disk_drive", - "front": "refinedstorage:block/disk_drive", - "bottom": "refinedstorage:block/disk_drive_bottom", - "top": "refinedstorage:block/disk_drive_top", - "side": "refinedstorage:block/disk_drive_side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#bottom", - "cullface": "down" - }, - "up": { - "texture": "#top", - "cullface": "up" - }, - "north": { - "texture": "#front", - "cullface": "north" - }, - "south": { - "texture": "#side", - "cullface": "south" - }, - "west": { - "texture": "#side", - "cullface": "west" - }, - "east": { - "texture": "#side", - "cullface": "east" - } - } - } - ] + "loader": "refinedstorage:disk_drive" } diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_drive_base.json b/src/main/resources/assets/refinedstorage/models/block/disk_drive_base.json new file mode 100644 index 000000000..c359d97b1 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/disk_drive_base.json @@ -0,0 +1,50 @@ +{ + "parent": "block/block", + "textures": { + "particle": "refinedstorage:block/disk_drive", + "front": "refinedstorage:block/disk_drive", + "bottom": "refinedstorage:block/disk_drive_bottom", + "top": "refinedstorage:block/disk_drive_top", + "side": "refinedstorage:block/disk_drive_side" + }, + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "texture": "#top", + "cullface": "up" + }, + "north": { + "texture": "#front", + "cullface": "north" + }, + "south": { + "texture": "#side", + "cullface": "south" + }, + "west": { + "texture": "#side", + "cullface": "west" + }, + "east": { + "texture": "#side", + "cullface": "east" + } + } + } + ] +} diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/disk.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk.json index 89a1d3e99..d59d59e5a 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/disk.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk.json @@ -93,7 +93,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 }, "east": { "texture": "#led", @@ -102,7 +103,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 }, "south": { "texture": "#led", @@ -111,7 +113,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 }, "west": { "texture": "#led", @@ -120,7 +123,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 }, "up": { "texture": "#led", @@ -129,7 +133,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 }, "down": { "texture": "#led", @@ -138,7 +143,8 @@ 0.0, 3.0, 1.0 - ] + ], + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json index 38d4be59c..1e7b31f9a 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json @@ -94,7 +94,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 }, "east": { "texture": "#led", @@ -103,7 +104,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 }, "south": { "texture": "#led", @@ -112,7 +114,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 }, "west": { "texture": "#led", @@ -121,7 +124,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 }, "up": { "texture": "#led", @@ -130,7 +134,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 }, "down": { "texture": "#led", @@ -139,7 +144,8 @@ 0.0, 2.0, 1.0 - ] + ], + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json index dda1a90b4..cbd9bc7ed 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json @@ -94,7 +94,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 }, "east": { "texture": "#led", @@ -103,7 +104,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 }, "south": { "texture": "#led", @@ -112,7 +114,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 }, "west": { "texture": "#led", @@ -121,7 +124,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 }, "up": { "texture": "#led", @@ -130,7 +134,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 }, "down": { "texture": "#led", @@ -139,7 +144,8 @@ 0.0, 1.0, 1.0 - ] + ], + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk.json b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk.json index f3324b6d4..87a3d1127 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk.json @@ -97,7 +97,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "west": { "uv": [ @@ -106,7 +107,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "north": { "uv": [ @@ -115,7 +117,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "south": { "uv": [ @@ -124,7 +127,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "up": { "uv": [ @@ -133,7 +137,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "down": { "uv": [ @@ -142,7 +147,8 @@ 3, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_full.json b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_full.json index 8b12d83d0..c2282cd7f 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_full.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_full.json @@ -97,7 +97,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "west": { "uv": [ @@ -106,7 +107,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "north": { "uv": [ @@ -115,7 +117,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "south": { "uv": [ @@ -124,7 +127,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "up": { "uv": [ @@ -133,7 +137,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "down": { "uv": [ @@ -142,7 +147,8 @@ 2, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_near_capacity.json b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_near_capacity.json index 9a7dd17c9..dd1d213e9 100644 --- a/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_near_capacity.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/portable_grid_disk_near_capacity.json @@ -97,7 +97,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "west": { "uv": [ @@ -106,7 +107,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "north": { "uv": [ @@ -115,7 +117,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "south": { "uv": [ @@ -124,7 +127,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "up": { "uv": [ @@ -133,7 +137,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 }, "down": { "uv": [ @@ -142,7 +147,8 @@ 1, 1 ], - "texture": "#led" + "texture": "#led", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/exporter.json b/src/main/resources/assets/refinedstorage/models/block/exporter.json index e16fe0c12..c7d269e05 100755 --- a/src/main/resources/assets/refinedstorage/models/block/exporter.json +++ b/src/main/resources/assets/refinedstorage/models/block/exporter.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "textures": { "border": "refinedstorage:block/cable_part_border" }, diff --git a/src/main/resources/assets/refinedstorage/models/block/external_storage.json b/src/main/resources/assets/refinedstorage/models/block/external_storage.json index 472e1869a..32e234765 100755 --- a/src/main/resources/assets/refinedstorage/models/block/external_storage.json +++ b/src/main/resources/assets/refinedstorage/models/block/external_storage.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { "border": "refinedstorage:block/cable_part_border" diff --git a/src/main/resources/assets/refinedstorage/models/block/importer.json b/src/main/resources/assets/refinedstorage/models/block/importer.json index b9c3926b1..9e3e5b2eb 100755 --- a/src/main/resources/assets/refinedstorage/models/block/importer.json +++ b/src/main/resources/assets/refinedstorage/models/block/importer.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { "border": "refinedstorage:block/cable_part_border" diff --git a/src/main/resources/assets/refinedstorage/models/block/portable_grid.json b/src/main/resources/assets/refinedstorage/models/block/portable_grid.json index 10a900ea8..68f0798e3 100644 --- a/src/main/resources/assets/refinedstorage/models/block/portable_grid.json +++ b/src/main/resources/assets/refinedstorage/models/block/portable_grid.json @@ -1,489 +1,4 @@ { - "parent": "block/cube", - "textures": { - "particle": "refinedstorage:block/portable_grid_1", - "texture0": "refinedstorage:block/portable_grid_1", - "texture2": "refinedstorage:block/portable_grid_3", - "texture3": "refinedstorage:block/portable_grid_4", - "texture4": "refinedstorage:block/portable_grid_5", - "texture5": "refinedstorage:block/portable_grid_6", - "texture6": "refinedstorage:block/portable_grid_7", - "texture7": "refinedstorage:block/portable_grid_8" - }, - "display": { - "firstperson_lefthand": { - "rotation": [10, 130, 0], - "scale": [0.4, 0.4, 0.4], - "translation": [2, 3.5, 0] - }, - "firstperson_righthand": { - "rotation": [10, 130, 0], - "scale": [0.4, 0.4, 0.4], - "translation": [2, 3.5, 0] - }, - "thirdperson_lefthand": { - "rotation": [10, 180, 0], - "scale": [0.4, 0.4, 0.4], - "translation": [0, 3, 1] - }, - "thirdperson_righthand": { - "rotation": [10, 180, 0], - "scale": [0.4, 0.4, 0.4], - "translation": [0, 3, 1] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "fixed": { - "scale": [0.75, 0.75, 0.75] - } - }, - "elements": [ - { - "name": "cube", - "from": [ - 0, - 6, - 5 - ], - "to": [ - 16, - 13, - 7 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 0, - 7, - 16, - 14 - ], - "texture": "#texture0" - }, - "east": { - "uv": [ - 0, - 7, - 2, - 14 - ], - "texture": "#texture1" - }, - "south": { - "uv": [ - 0, - 0, - 16, - 7 - ], - "texture": "#texture0" - }, - "west": { - "uv": [ - 0, - 0, - 2, - 7 - ], - "texture": "#texture1" - }, - "up": { - "uv": [ - 0, - 0, - 16, - 2 - ], - "texture": "#texture0", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 13, - 16, - 15 - ], - "texture": "#texture1", - "rotation": 180 - } - }, - "rotation": { - "origin": [ - 8, - 6, - 7 - ], - "axis": "x", - "angle": 22.5 - } - }, - { - "name": "cube", - "from": [ - 0, - 4, - 7 - ], - "to": [ - 16, - 6, - 16 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 0, - 14, - 16, - 16 - ], - "texture": "#texture0" - }, - "east": { - "uv": [ - 3, - 2, - 12, - 4 - ], - "texture": "#texture1" - }, - "south": { - "uv": [ - 0, - 0, - 16, - 2 - ], - "texture": "#texture2" - }, - "west": { - "uv": [ - 3, - 0, - 12, - 2 - ], - "texture": "#texture1" - }, - "up": { - "uv": [ - 0, - 2, - 16, - 11 - ], - "texture": "#texture2", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 9 - ], - "texture": "#texture3", - "rotation": 180 - } - } - }, - { - "name": "cube", - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 4, - 16 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 0, - 9, - 16, - 13 - ], - "texture": "#texture3" - }, - "east": { - "uv": [ - 0, - 4, - 16, - 8 - ], - "texture": "#texture4" - }, - "south": { - "uv": [ - 0, - 11, - 16, - 15 - ], - "texture": "#texture2" - }, - "west": { - "uv": [ - 0, - 0, - 16, - 4 - ], - "texture": "#texture4" - }, - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#texture5", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#texture6", - "rotation": 180 - } - } - }, - { - "name": "cube", - "from": [ - 1, - 4, - 1 - ], - "to": [ - 15, - 5, - 7 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 0, - 15, - 14, - 16 - ], - "texture": "#texture2" - }, - "east": { - "uv": [ - 4, - 9, - 10, - 10 - ], - "texture": "#texture1" - }, - "south": { - "uv": [ - 2, - 13, - 16, - 14 - ], - "texture": "#texture1" - }, - "west": { - "uv": [ - 4, - 8, - 10, - 9 - ], - "texture": "#texture1" - }, - "up": { - "uv": [ - 0, - 8, - 14, - 14 - ], - "texture": "#texture4", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 14, - 6 - ], - "texture": "#texture7", - "rotation": 180 - } - } - }, - { - "name": "cube", - "from": [ - 3, - 4.5, - 6 - ], - "to": [ - 4, - 6.5, - 8 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 5, - 10, - 6, - 12 - ], - "texture": "#texture1" - }, - "east": { - "uv": [ - 7, - 4, - 9, - 6 - ], - "texture": "#texture1" - }, - "south": { - "uv": [ - 4, - 10, - 5, - 12 - ], - "texture": "#texture1" - }, - "west": { - "uv": [ - 6, - 10, - 8, - 12 - ], - "texture": "#texture1" - }, - "up": { - "uv": [ - 7, - 6, - 8, - 8 - ], - "texture": "#texture1", - "rotation": 180 - }, - "down": { - "uv": [ - 8, - 6, - 9, - 8 - ], - "texture": "#texture1", - "rotation": 180 - } - } - }, - { - "name": "cube", - "from": [ - 12, - 4.5, - 6 - ], - "to": [ - 13, - 6.5, - 8 - ], - "shade": true, - "faces": { - "north": { - "uv": [ - 9, - 4, - 10, - 6 - ], - "texture": "#texture1" - }, - "east": { - "uv": [ - 9, - 10, - 11, - 12 - ], - "texture": "#texture1" - }, - "south": { - "uv": [ - 8, - 10, - 9, - 12 - ], - "texture": "#texture1" - }, - "west": { - "uv": [ - 9, - 6, - 11, - 8 - ], - "texture": "#texture1" - }, - "up": { - "uv": [ - 7, - 6, - 8, - 8 - ], - "texture": "#texture1", - "rotation": 180 - }, - "down": { - "uv": [ - 8, - 6, - 9, - 8 - ], - "texture": "#texture1", - "rotation": 180 - } - } - } - ] -} \ No newline at end of file + "render_type": "cutout", + "loader": "refinedstorage:portable_grid" +} diff --git a/src/main/resources/assets/refinedstorage/models/block/portable_grid_base.json b/src/main/resources/assets/refinedstorage/models/block/portable_grid_base.json new file mode 100644 index 000000000..0573b99b9 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/portable_grid_base.json @@ -0,0 +1,490 @@ +{ + "render_type": "cutout", + "parent": "block/cube", + "textures": { + "particle": "refinedstorage:block/portable_grid_1", + "texture0": "refinedstorage:block/portable_grid_1", + "texture2": "refinedstorage:block/portable_grid_3", + "texture3": "refinedstorage:block/portable_grid_4", + "texture4": "refinedstorage:block/portable_grid_5", + "texture5": "refinedstorage:block/portable_grid_6", + "texture6": "refinedstorage:block/portable_grid_7", + "texture7": "refinedstorage:block/portable_grid_8" + }, + "display": { + "firstperson_lefthand": { + "rotation": [10, 130, 0], + "scale": [0.4, 0.4, 0.4], + "translation": [2, 3.5, 0] + }, + "firstperson_righthand": { + "rotation": [10, 130, 0], + "scale": [0.4, 0.4, 0.4], + "translation": [2, 3.5, 0] + }, + "thirdperson_lefthand": { + "rotation": [10, 180, 0], + "scale": [0.4, 0.4, 0.4], + "translation": [0, 3, 1] + }, + "thirdperson_righthand": { + "rotation": [10, 180, 0], + "scale": [0.4, 0.4, 0.4], + "translation": [0, 3, 1] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "fixed": { + "scale": [0.75, 0.75, 0.75] + } + }, + "elements": [ + { + "name": "cube", + "from": [ + 0, + 6, + 5 + ], + "to": [ + 16, + 13, + 7 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 0, + 7, + 16, + 14 + ], + "texture": "#texture0" + }, + "east": { + "uv": [ + 0, + 7, + 2, + 14 + ], + "texture": "#texture1" + }, + "south": { + "uv": [ + 0, + 0, + 16, + 7 + ], + "texture": "#texture0" + }, + "west": { + "uv": [ + 0, + 0, + 2, + 7 + ], + "texture": "#texture1" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 2 + ], + "texture": "#texture0", + "rotation": 180 + }, + "down": { + "uv": [ + 0, + 13, + 16, + 15 + ], + "texture": "#texture1", + "rotation": 180 + } + }, + "rotation": { + "origin": [ + 8, + 6, + 7 + ], + "axis": "x", + "angle": 22.5 + } + }, + { + "name": "cube", + "from": [ + 0, + 4, + 7 + ], + "to": [ + 16, + 6, + 16 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 0, + 14, + 16, + 16 + ], + "texture": "#texture0" + }, + "east": { + "uv": [ + 3, + 2, + 12, + 4 + ], + "texture": "#texture1" + }, + "south": { + "uv": [ + 0, + 0, + 16, + 2 + ], + "texture": "#texture2" + }, + "west": { + "uv": [ + 3, + 0, + 12, + 2 + ], + "texture": "#texture1" + }, + "up": { + "uv": [ + 0, + 2, + 16, + 11 + ], + "texture": "#texture2", + "rotation": 180 + }, + "down": { + "uv": [ + 0, + 0, + 16, + 9 + ], + "texture": "#texture3", + "rotation": 180 + } + } + }, + { + "name": "cube", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 4, + 16 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 0, + 9, + 16, + 13 + ], + "texture": "#texture3" + }, + "east": { + "uv": [ + 0, + 4, + 16, + 8 + ], + "texture": "#texture4" + }, + "south": { + "uv": [ + 0, + 11, + 16, + 15 + ], + "texture": "#texture2" + }, + "west": { + "uv": [ + 0, + 0, + 16, + 4 + ], + "texture": "#texture4" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture5", + "rotation": 180 + }, + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture6", + "rotation": 180 + } + } + }, + { + "name": "cube", + "from": [ + 1, + 4, + 1 + ], + "to": [ + 15, + 5, + 7 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 0, + 15, + 14, + 16 + ], + "texture": "#texture2" + }, + "east": { + "uv": [ + 4, + 9, + 10, + 10 + ], + "texture": "#texture1" + }, + "south": { + "uv": [ + 2, + 13, + 16, + 14 + ], + "texture": "#texture1" + }, + "west": { + "uv": [ + 4, + 8, + 10, + 9 + ], + "texture": "#texture1" + }, + "up": { + "uv": [ + 0, + 8, + 14, + 14 + ], + "texture": "#texture4", + "rotation": 180 + }, + "down": { + "uv": [ + 0, + 0, + 14, + 6 + ], + "texture": "#texture7", + "rotation": 180 + } + } + }, + { + "name": "cube", + "from": [ + 3, + 4.5, + 6 + ], + "to": [ + 4, + 6.5, + 8 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 5, + 10, + 6, + 12 + ], + "texture": "#texture1" + }, + "east": { + "uv": [ + 7, + 4, + 9, + 6 + ], + "texture": "#texture1" + }, + "south": { + "uv": [ + 4, + 10, + 5, + 12 + ], + "texture": "#texture1" + }, + "west": { + "uv": [ + 6, + 10, + 8, + 12 + ], + "texture": "#texture1" + }, + "up": { + "uv": [ + 7, + 6, + 8, + 8 + ], + "texture": "#texture1", + "rotation": 180 + }, + "down": { + "uv": [ + 8, + 6, + 9, + 8 + ], + "texture": "#texture1", + "rotation": 180 + } + } + }, + { + "name": "cube", + "from": [ + 12, + 4.5, + 6 + ], + "to": [ + 13, + 6.5, + 8 + ], + "shade": true, + "faces": { + "north": { + "uv": [ + 9, + 4, + 10, + 6 + ], + "texture": "#texture1" + }, + "east": { + "uv": [ + 9, + 10, + 11, + 12 + ], + "texture": "#texture1" + }, + "south": { + "uv": [ + 8, + 10, + 9, + 12 + ], + "texture": "#texture1" + }, + "west": { + "uv": [ + 9, + 6, + 11, + 8 + ], + "texture": "#texture1" + }, + "up": { + "uv": [ + 7, + 6, + 8, + 8 + ], + "texture": "#texture1", + "rotation": 180 + }, + "down": { + "uv": [ + 8, + 6, + 9, + 8 + ], + "texture": "#texture1", + "rotation": 180 + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/portable_grid_connected.json b/src/main/resources/assets/refinedstorage/models/block/portable_grid_connected.json index 413fd3f05..48bcbe215 100644 --- a/src/main/resources/assets/refinedstorage/models/block/portable_grid_connected.json +++ b/src/main/resources/assets/refinedstorage/models/block/portable_grid_connected.json @@ -1,5 +1,5 @@ { - "parent": "refinedstorage:block/portable_grid", + "parent": "refinedstorage:block/portable_grid_base", "textures": { "texture1": "refinedstorage:block/portable_grid_2" } diff --git a/src/main/resources/assets/refinedstorage/models/block/portable_grid_disconnected.json b/src/main/resources/assets/refinedstorage/models/block/portable_grid_disconnected.json index 52e1edce9..53855df6f 100644 --- a/src/main/resources/assets/refinedstorage/models/block/portable_grid_disconnected.json +++ b/src/main/resources/assets/refinedstorage/models/block/portable_grid_disconnected.json @@ -1,5 +1,5 @@ { - "parent": "refinedstorage:block/portable_grid", + "parent": "refinedstorage:block/portable_grid_base", "textures": { "texture1": "refinedstorage:block/portable_grid_2_disconnected" } diff --git a/src/main/resources/assets/refinedstorage/models/block/wireless_transmitter.json b/src/main/resources/assets/refinedstorage/models/block/wireless_transmitter.json index e38e3dbc3..69b66c25c 100644 --- a/src/main/resources/assets/refinedstorage/models/block/wireless_transmitter.json +++ b/src/main/resources/assets/refinedstorage/models/block/wireless_transmitter.json @@ -1,4 +1,5 @@ { + "render_type": "cutout", "parent": "block/cube", "ambientocclusion": false, "textures": { @@ -125,7 +126,8 @@ 9, 15 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 }, "up": { "uv": [ @@ -134,7 +136,8 @@ 9, 8 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 } } }, @@ -158,7 +161,8 @@ 16, 16 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 }, "east": { "uv": [ @@ -167,7 +171,8 @@ 16, 16 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 } } }, @@ -191,7 +196,8 @@ 16, 16 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 }, "south": { "uv": [ @@ -200,7 +206,8 @@ 16, 16 ], - "texture": "#cutout" + "texture": "#cutout", + "emissivity": 15 } } } diff --git a/src/main/resources/assets/refinedstorage/models/item/creative_portable_grid.json b/src/main/resources/assets/refinedstorage/models/item/creative_portable_grid.json index 2c63c0851..4567e37a1 100644 --- a/src/main/resources/assets/refinedstorage/models/item/creative_portable_grid.json +++ b/src/main/resources/assets/refinedstorage/models/item/creative_portable_grid.json @@ -1,2 +1,4 @@ { + "parent": "refinedstorage:block/portable_grid" } + diff --git a/src/main/resources/assets/refinedstorage/models/item/portable_grid.json b/src/main/resources/assets/refinedstorage/models/item/portable_grid.json index 2c63c0851..d81149a10 100644 --- a/src/main/resources/assets/refinedstorage/models/item/portable_grid.json +++ b/src/main/resources/assets/refinedstorage/models/item/portable_grid.json @@ -1,2 +1,3 @@ { + "parent": "refinedstorage:block/portable_grid" } diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 6918715ee..63c2ceca3 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,8 @@ { "pack": { "description": "Refined Storage resources", - "pack_format": 9 + "pack_format": 9, + "forge:resource_pack_format": 9, + "forge:data_pack_format": 10 } }