├── .github └── workflows │ └── gradle.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── src ├── generated └── resources │ ├── .cache │ └── cache │ └── data │ ├── minecraft │ └── tags │ │ └── blocks │ │ └── mineable │ │ └── pickaxe.json │ └── rebornstorage │ └── loot_tables │ └── blocks │ ├── advanced_wireless_transmitter.json │ ├── multiblock_cpu.json │ ├── multiblock_frame.json │ ├── multiblock_heat.json │ └── multiblock_storage.json └── main ├── java └── net │ └── gigabit101 │ └── rebornstorage │ ├── Constants.java │ ├── RebornStorage.java │ ├── RebornStorageClient.java │ ├── RebornStorageConfig.java │ ├── RebornStorageDataGenerator.java │ ├── RebornStorageEventHandler.java │ ├── blockentities │ ├── BlockEntityAdvancedWirelessTransmitter.java │ └── BlockEntityMultiCrafter.java │ ├── blocks │ ├── BlockAdvancedWirelessTransmitter.java │ └── BlockMultiCrafter.java │ ├── client │ ├── CreativeTabRebornStorage.java │ ├── KeyBindings.java │ ├── SlotFiltered.java │ └── screens │ │ ├── AdvancedWirelessTransmitterScreen.java │ │ ├── ScreenBuilder.java │ │ └── ScreenMultiCrafter.java │ ├── containers │ ├── AdvancedWirelessTransmitterContainer.java │ ├── ContainerBase.java │ └── ContainerMultiCrafter.java │ ├── core │ └── multiblock │ │ ├── IMultiblockPart.java │ │ ├── LICENSE.txt │ │ ├── MultiblockBlockEntityBase.java │ │ ├── MultiblockControllerBase.java │ │ ├── MultiblockRegistry.java │ │ ├── MultiblockValidationException.java │ │ ├── MultiblockWorldRegistry.java │ │ ├── README.txt │ │ ├── events │ │ ├── MultiblockClientTickHandler.java │ │ ├── MultiblockEventHandler.java │ │ └── MultiblockServerTickHandler.java │ │ └── rectangular │ │ ├── PartPosition.java │ │ ├── RectangularMultiblockControllerBase.java │ │ └── RectangularMultiblockTileEntityBase.java │ ├── grid │ ├── crafting │ │ ├── WirelessCraftingGrid.java │ │ ├── WirelessCraftingGridGridFactory.java │ │ └── WirelessCraftingGridNetworkItem.java │ ├── fluid │ │ └── WirelessFluidGridNetworkItemExt.java │ └── monitor │ │ └── WirelessCraftingMonitorNetworkItemExt.java │ ├── init │ ├── ModBlocks.java │ ├── ModContainers.java │ ├── ModItems.java │ └── ModScreens.java │ ├── items │ ├── ItemBook.java │ ├── ItemFluidRebornStorageCell.java │ ├── ItemRebornStorageCell.java │ └── ItemWirelessGrid.java │ ├── multiblocks │ └── MultiBlockCrafter.java │ ├── nodes │ ├── AdvancedWirelessTransmitterNode.java │ └── CraftingNode.java │ └── packet │ ├── PacketChangeMode.java │ ├── PacketGui.java │ └── PacketHandler.java └── resources ├── META-INF └── mods.toml ├── assets └── rebornstorage │ ├── blockstates │ ├── advanced_wireless_transmitter.json │ ├── multiblock_cpu.json │ ├── multiblock_frame.json │ ├── multiblock_heat.json │ └── multiblock_storage.json │ ├── lang │ ├── de_de.json │ └── en_us.json │ ├── models │ ├── block │ │ ├── multiblock_cpu.json │ │ ├── multiblock_frame.json │ │ ├── multiblock_frame_left_right.json │ │ ├── multiblock_frame_up_down.json │ │ ├── multiblock_heat.json │ │ ├── multiblock_storage.json │ │ ├── wireless_transmitter.json │ │ └── wireless_transmitter │ │ │ ├── black.json │ │ │ ├── blue.json │ │ │ ├── brown.json │ │ │ ├── cyan.json │ │ │ ├── disconnected.json │ │ │ ├── gray.json │ │ │ ├── green.json │ │ │ ├── light_blue.json │ │ │ ├── light_gray.json │ │ │ ├── lime.json │ │ │ ├── magenta.json │ │ │ ├── orange.json │ │ │ ├── pink.json │ │ │ ├── purple.json │ │ │ ├── red.json │ │ │ ├── white.json │ │ │ └── yellow.json │ └── item │ │ ├── advanced_wireless_transmitter.json │ │ ├── black_wireless_transmitter.json │ │ ├── blue_wireless_transmitter.json │ │ ├── brown_wireless_transmitter.json │ │ ├── creative_super_wireless_crafting_grid.json │ │ ├── cyan_wireless_transmitter.json │ │ ├── green_wireless_transmitter.json │ │ ├── large_fluid_disk.json │ │ ├── large_fluid_disk_part.json │ │ ├── large_item_disk.json │ │ ├── large_item_disk_part.json │ │ ├── larger_fluid_disk.json │ │ ├── larger_fluid_disk_part.json │ │ ├── larger_item_disk.json │ │ ├── larger_item_disk_part.json │ │ ├── light_gray_wireless_transmitter.json │ │ ├── lime_wireless_transmitter.json │ │ ├── medium_fluid_disk.json │ │ ├── medium_fluid_disk_part.json │ │ ├── medium_item_disk.json │ │ ├── medium_item_disk_part.json │ │ ├── multiblock_cpu.json │ │ ├── multiblock_frame.json │ │ ├── multiblock_heat.json │ │ ├── multiblock_storage.json │ │ ├── orange_wireless_transmitter.json │ │ ├── pink_wireless_transmitter.json │ │ ├── purple_wireless_transmitter.json │ │ ├── raw_super_advanced_processor.json │ │ ├── red_wireless_transmitter.json │ │ ├── small_fluid_disk.json │ │ ├── small_fluid_disk_part.json │ │ ├── small_item_disk.json │ │ ├── small_item_disk_part.json │ │ ├── super_advanced_processor.json │ │ ├── super_wireless_crafting_grid.json │ │ ├── white_wireless_transmitter.json │ │ ├── wireless_transmitter.json │ │ └── yellow_network_transmitter.json │ └── textures │ ├── blocks │ ├── multiblock_cpu.png │ ├── multiblock_frame.png │ ├── multiblock_frame.png.mcmeta │ ├── multiblock_frame_ctm.png │ ├── multiblock_heat.png │ ├── multiblock_heat.png.mcmeta │ ├── multiblock_heat_ctm.png │ ├── multiblock_storage.png │ └── wireless_transmitter │ │ ├── cutouts │ │ ├── black.png │ │ ├── blue.png │ │ ├── brown.png │ │ ├── cyan.png │ │ ├── disconnected.png │ │ ├── gray.png │ │ ├── green.png │ │ ├── light_blue.png │ │ ├── light_gray.png │ │ ├── lime.png │ │ ├── magenta.png │ │ ├── orange.png │ │ ├── pink.png │ │ ├── purple.png │ │ ├── red.png │ │ ├── white.png │ │ └── yellow.png │ │ └── wireless_transmitter.png │ ├── gui │ └── gui_sheet.png │ └── items │ ├── disks │ ├── large_fluid_disk.png │ ├── large_item_disk.png │ ├── larger_fluid_disk.png │ ├── larger_item_disk.png │ ├── medium_fluid_disk.png │ ├── medium_item_disk.png │ ├── small_fluid_disk.png │ └── small_item_disk.png │ ├── grid.png │ ├── parts │ ├── large_fluid_disk_part.png │ ├── large_item_disk_part.png │ ├── larger_fluid_disk_part.png │ ├── larger_item_disk_part.png │ ├── medium_fluid_disk_part.png │ ├── medium_item_disk_part.png │ ├── small_fluid_disk_part.png │ └── small_item_disk_part.png │ ├── raw_super_advanced_processor.png │ └── super_advanced_processor.png ├── data ├── curios │ └── tags │ │ └── items │ │ └── curio.json ├── rebornstorage │ ├── patchouli_books │ │ └── rs_book │ │ │ ├── book.json │ │ │ └── en_us │ │ │ ├── categories │ │ │ ├── blocks.json │ │ │ └── multiblock.json │ │ │ └── entries │ │ │ ├── advanced_wireless_transmitter.json │ │ │ └── multiblock_crafter_template.json │ ├── recipes │ │ ├── advanced_wireless_transmitter.json │ │ ├── disks │ │ │ ├── large_fluid_disk.json │ │ │ ├── large_item_disk.json │ │ │ ├── larger_fluid_disk.json │ │ │ ├── larger_item_disk.json │ │ │ ├── medium_fluid_disk.json │ │ │ ├── medium_item_disk.json │ │ │ ├── small_fluid_disk.json │ │ │ └── small_item_disk.json │ │ ├── multiblock_cpu.json │ │ ├── multiblock_frame.json │ │ ├── multiblock_heat.json │ │ ├── multiblock_storage.json │ │ └── parts │ │ │ ├── large_fluid_disk_part.json │ │ │ ├── large_item_disk_part.json │ │ │ ├── larger_fluid_disk_part.json │ │ │ ├── larger_item_disk_part.json │ │ │ ├── medium_fluid_disk_part.json │ │ │ ├── medium_item_disk_part.json │ │ │ ├── raw_super_advanced_processor.json │ │ │ ├── small_fluid_disk_part.json │ │ │ ├── small_item_disk_part.json │ │ │ ├── super_advanced_processor.json │ │ │ └── super_wireless_crafting_grid.json │ └── tags │ │ └── blocks │ │ └── multiblock_inner_base.json └── refinedstorage │ └── tags │ └── items │ ├── disks.json │ ├── disks │ ├── fluids.json │ ├── fluids │ │ ├── 1048576k.json │ │ ├── 16384k.json │ │ ├── 262144k.json │ │ └── 65536k.json │ ├── items.json │ └── items │ │ ├── 1024k.json │ │ ├── 16384k.json │ │ ├── 256k.json │ │ └── 4096k.json │ ├── parts.json │ └── parts │ ├── fluids.json │ ├── fluids │ ├── 1048576k.json │ ├── 16384k.json │ ├── 262144k.json │ └── 65536k.json │ ├── items.json │ └── items │ ├── 1024k.json │ ├── 16384k.json │ ├── 256k.json │ └── 4096k.json └── pack.mcmeta /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- 1 | # This workflow uses actions that are not certified by GitHub. 2 | # They are provided by a third-party and are governed by 3 | # separate terms of service, privacy policy, and support 4 | # documentation. 5 | # This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time 6 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle 7 | 8 | name: Java CI with Gradle 9 | 10 | on: 11 | push: 12 | branches: [ 1.18.2 ] 13 | pull_request: 14 | branches: [ 1.18.2 ] 15 | 16 | jobs: 17 | build: 18 | 19 | runs-on: ubuntu-latest 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Set up JDK 16 24 | uses: actions/setup-java@v2 25 | with: 26 | java-version: '16' 27 | distribution: 'temurin' 28 | - name: Grant execute permission for gradlew 29 | run: chmod +x gradlew 30 | - name: Build with Gradle 31 | uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7 32 | with: 33 | arguments: build 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .settings 4 | *.iml 5 | *.ipr 6 | *.iws 7 | /.idea/ 8 | /bin/ 9 | /build/ 10 | /.gradle/ 11 | /assets/ 12 | /libs/ 13 | /run/ 14 | /classes/ 15 | out/ 16 | dep/ 17 | RebornStorage_Client.launch 18 | RebornStorage_Server.launch 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RebornStorage -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | maven { url = 'https://files.minecraftforge.net/maven' } 4 | // jcenter() 5 | mavenCentral() 6 | } 7 | dependencies { 8 | classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1+', changing: true 9 | } 10 | } 11 | plugins { 12 | id 'eclipse' 13 | id 'maven-publish' 14 | } 15 | apply plugin: 'net.minecraftforge.gradle' 16 | //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. 17 | 18 | version = "${project.mc_version}-${project.mod_version}" 19 | group = "${project.maven_group}" 20 | archivesBaseName = "${project.mod_id}" 21 | 22 | java.toolchain.languageVersion = JavaLanguageVersion.of(17) 23 | println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) 24 | 25 | minecraft { 26 | mappings channel: 'official', version: '1.18.2' 27 | accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') 28 | 29 | runs { 30 | client { 31 | workingDirectory project.file('run') 32 | property 'forge.logging.markers', 'SCAN,REGISTRIES' 33 | property 'forge.logging.console.level', 'debug' 34 | 35 | property 'forge.enabledGameTestNamespaces', 'rebornstorage' 36 | 37 | //Patchouli 38 | property 'mixin.env.remapRefMap', 'true' 39 | property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" 40 | 41 | mods { 42 | rebornstorage { 43 | source sourceSets.main 44 | } 45 | } 46 | } 47 | 48 | server { 49 | workingDirectory project.file('run') 50 | property 'forge.logging.markers', 'SCAN,REGISTRIES' 51 | property 'forge.logging.console.level', 'debug' 52 | 53 | property 'forge.enabledGameTestNamespaces', 'rebornstorage' 54 | 55 | //Patchouli 56 | property 'mixin.env.remapRefMap', 'true' 57 | property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" 58 | 59 | mods { 60 | rebornstorage { 61 | source sourceSets.main 62 | } 63 | } 64 | } 65 | 66 | gameTestServer { 67 | workingDirectory project.file('run') 68 | 69 | // Recommended logging data for a userdev environment 70 | // The markers can be added/remove as needed separated by commas. 71 | // "SCAN": For mods scan. 72 | // "REGISTRIES": For firing of registry events. 73 | // "REGISTRYDUMP": For getting the contents of all registries. 74 | property 'forge.logging.markers', 'REGISTRIES' 75 | 76 | // Recommended logging level for the console 77 | // You can set various levels here. 78 | // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels 79 | property 'forge.logging.console.level', 'debug' 80 | 81 | // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. 82 | property 'forge.enabledGameTestNamespaces', 'rebornstorage' 83 | 84 | mods { 85 | rebornstorage { 86 | source sourceSets.main 87 | } 88 | } 89 | } 90 | 91 | data { 92 | workingDirectory project.file('run') 93 | 94 | property 'forge.logging.markers', 'REGISTRIES' 95 | 96 | property 'forge.logging.console.level', 'debug' 97 | 98 | // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. 99 | args '--mod', 'rebornstorage', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') 100 | 101 | //Patchouli 102 | property 'mixin.env.remapRefMap', 'true' 103 | property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" 104 | 105 | mods { 106 | rebornstorage { 107 | source sourceSets.main 108 | } 109 | } 110 | } 111 | } 112 | } 113 | 114 | sourceSets.main.resources { srcDir 'src/generated/resources' } 115 | 116 | repositories { 117 | maven { 118 | url = "https://dvs1.progwml6.com/files/maven/" 119 | } 120 | maven { 121 | url = "https://maven.creeperhost.net" 122 | } 123 | maven { 124 | url "https://www.cursemaven.com" 125 | content { 126 | includeGroup "curse.maven" 127 | } 128 | } 129 | maven { 130 | url = "https://maven.theillusivec4.top/" 131 | } 132 | maven { 133 | name 'JEI' 134 | url 'https://dvs1.progwml6.com/files/maven' 135 | } 136 | maven { 137 | url = uri("https://maven.pkg.github.com/refinedmods/refinedstorage") 138 | credentials { 139 | username = "anything" 140 | password = "\u0067hp_oGjcDFCn8jeTzIj4Ke9pLoEVtpnZMP4VQgaX" 141 | } 142 | } 143 | maven { 144 | url = "https://maven.theillusivec4.top/" 145 | } 146 | } 147 | 148 | dependencies { 149 | minecraft "net.minecraftforge:forge:${project.mc_version}-${project.forge_version}" 150 | implementation fg.deobf("com.refinedmods:refinedstorage:${project.rs_version}") { 151 | transitive false 152 | } 153 | runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") 154 | runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${project.curios_version}") 155 | compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${project.curios_version}:api") 156 | 157 | compileOnly fg.deobf("vazkii.patchouli:Patchouli:${project.patchouli_version}:api") 158 | runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${project.patchouli_version}") 159 | 160 | compileOnly fg.deobf("team.chisel.ctm:CTM:${project.ctm_version}") 161 | runtimeOnly fg.deobf("team.chisel.ctm:CTM:${project.ctm_version}") 162 | } 163 | 164 | jar { 165 | manifest { 166 | attributes(["Specification-Title": archivesBaseName, 167 | "Specification-Vendor": "gigabit101", 168 | "Specification-Version": "${project.mod_version}", 169 | "Implementation-Title": archivesBaseName, 170 | "Implementation-Version": "${project.mod_version}", 171 | "Implementation-Vendor" :"gigabit101", 172 | "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")],) 173 | } 174 | } 175 | 176 | tasks.withType(JavaCompile).configureEach { 177 | options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation 178 | } 179 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx3G 2 | org.gradle.daemon=false 3 | 4 | mod_version = 4.0.12 5 | mod_id = rebornstorage 6 | maven_group = gigabit101 7 | 8 | mc_version = 1.18.2 9 | forge_version = 40.0.54 10 | jei_version=9.5.4.171 11 | rs_version=1.10.2 12 | curios_version=1.18.2-5.0.7.0 13 | patchouli_version=1.18.2-67 14 | ctm_version=1.18.2-1.1.4+4 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /src/generated/resources/.cache/cache: -------------------------------------------------------------------------------- 1 | f424f9ca97330d679aeb12309f49a04f8992399b data/minecraft/tags/blocks/mineable/pickaxe.json 2 | 627351dc04c4c6680357c15e5915f93ee7153d2d data/rebornstorage/loot_tables/blocks/advanced_wireless_transmitter.json 3 | 1e28a9f8cd4d9eed84bf817a6176e8fc9ee4c4a2 data/rebornstorage/loot_tables/blocks/multiblock_cpu.json 4 | fd3644855b05841fe4c924f7dacd264554223241 data/rebornstorage/loot_tables/blocks/multiblock_frame.json 5 | 35295b63e8367f8c1f48074e9f2399c51f793385 data/rebornstorage/loot_tables/blocks/multiblock_heat.json 6 | 69fc1d21c1b5b99623849ac01ff36cb19cbd40b8 data/rebornstorage/loot_tables/blocks/multiblock_storage.json 7 | -------------------------------------------------------------------------------- /src/generated/resources/data/rebornstorage/loot_tables/blocks/advanced_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "name": "rebornstorage:advanced_wireless_transmitter", 6 | "rolls": 1.0, 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "functions": [ 12 | { 13 | "function": "minecraft:copy_name", 14 | "source": "block_entity" 15 | } 16 | ], 17 | "name": "rebornstorage:advanced_wireless_transmitter" 18 | } 19 | ], 20 | "conditions": [ 21 | { 22 | "condition": "minecraft:survives_explosion" 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /src/generated/resources/data/rebornstorage/loot_tables/blocks/multiblock_cpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "name": "rebornstorage:multiblock_cpu", 6 | "rolls": 1.0, 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "functions": [ 12 | { 13 | "function": "minecraft:copy_name", 14 | "source": "block_entity" 15 | } 16 | ], 17 | "name": "rebornstorage:multiblock_cpu" 18 | } 19 | ], 20 | "conditions": [ 21 | { 22 | "condition": "minecraft:survives_explosion" 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /src/generated/resources/data/rebornstorage/loot_tables/blocks/multiblock_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "name": "rebornstorage:multiblock_frame", 6 | "rolls": 1.0, 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "functions": [ 12 | { 13 | "function": "minecraft:copy_name", 14 | "source": "block_entity" 15 | } 16 | ], 17 | "name": "rebornstorage:multiblock_frame" 18 | } 19 | ], 20 | "conditions": [ 21 | { 22 | "condition": "minecraft:survives_explosion" 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /src/generated/resources/data/rebornstorage/loot_tables/blocks/multiblock_heat.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "name": "rebornstorage:multiblock_heat", 6 | "rolls": 1.0, 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "functions": [ 12 | { 13 | "function": "minecraft:copy_name", 14 | "source": "block_entity" 15 | } 16 | ], 17 | "name": "rebornstorage:multiblock_heat" 18 | } 19 | ], 20 | "conditions": [ 21 | { 22 | "condition": "minecraft:survives_explosion" 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /src/generated/resources/data/rebornstorage/loot_tables/blocks/multiblock_storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "name": "rebornstorage:multiblock_storage", 6 | "rolls": 1.0, 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "functions": [ 12 | { 13 | "function": "minecraft:copy_name", 14 | "source": "block_entity" 15 | } 16 | ], 17 | "name": "rebornstorage:multiblock_storage" 18 | } 19 | ], 20 | "conditions": [ 21 | { 22 | "condition": "minecraft:survives_explosion" 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/Constants.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage; 2 | 3 | import net.minecraft.resources.ResourceLocation; 4 | 5 | public class Constants 6 | { 7 | public static final String MOD_ID = "rebornstorage"; 8 | public static final ResourceLocation MULTI_BLOCK_ID = new ResourceLocation(Constants.MOD_ID, "multiblockcrafter"); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/RebornStorage.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage; 2 | 3 | import com.refinedmods.refinedstorage.api.IRSAPI; 4 | import com.refinedmods.refinedstorage.api.RSAPIInject; 5 | import com.refinedmods.refinedstorage.api.network.node.INetworkNode; 6 | import com.refinedmods.refinedstorage.apiimpl.API; 7 | import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; 8 | import com.refinedmods.refinedstorage.screen.KeyInputListener; 9 | import com.refinedmods.refinedstorage.util.StackUtils; 10 | import net.gigabit101.rebornstorage.client.KeyBindings; 11 | import net.gigabit101.rebornstorage.core.multiblock.events.MultiblockClientTickHandler; 12 | import net.gigabit101.rebornstorage.core.multiblock.events.MultiblockEventHandler; 13 | import net.gigabit101.rebornstorage.core.multiblock.events.MultiblockServerTickHandler; 14 | import net.gigabit101.rebornstorage.grid.crafting.WirelessCraftingGridGridFactory; 15 | import net.gigabit101.rebornstorage.init.ModBlocks; 16 | import net.gigabit101.rebornstorage.init.ModContainers; 17 | import net.gigabit101.rebornstorage.init.ModItems; 18 | import net.gigabit101.rebornstorage.init.ModScreens; 19 | import net.gigabit101.rebornstorage.multiblocks.MultiBlockCrafter; 20 | import net.gigabit101.rebornstorage.nodes.AdvancedWirelessTransmitterNode; 21 | import net.gigabit101.rebornstorage.nodes.CraftingNode; 22 | import net.gigabit101.rebornstorage.packet.PacketChangeMode; 23 | import net.gigabit101.rebornstorage.packet.PacketHandler; 24 | import net.gigabit101.rebornstorage.blockentities.BlockEntityMultiCrafter; 25 | import net.minecraft.client.Minecraft; 26 | import net.minecraft.client.renderer.ItemBlockRenderTypes; 27 | import net.minecraft.client.renderer.RenderType; 28 | import net.minecraft.core.BlockPos; 29 | import net.minecraft.nbt.CompoundTag; 30 | import net.minecraft.resources.ResourceLocation; 31 | import net.minecraft.world.level.Level; 32 | import net.minecraft.world.level.block.entity.BlockEntity; 33 | import net.minecraftforge.api.distmarker.Dist; 34 | import net.minecraftforge.client.ClientRegistry; 35 | import net.minecraftforge.client.event.InputEvent; 36 | import net.minecraftforge.client.event.TextureStitchEvent; 37 | import net.minecraftforge.common.MinecraftForge; 38 | import net.minecraftforge.eventbus.api.IEventBus; 39 | import net.minecraftforge.eventbus.api.SubscribeEvent; 40 | import net.minecraftforge.fml.DistExecutor; 41 | import net.minecraftforge.fml.InterModComms; 42 | import net.minecraftforge.fml.common.Mod; 43 | import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; 44 | import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; 45 | import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; 46 | import net.minecraftforge.fml.loading.FMLPaths; 47 | import org.apache.logging.log4j.LogManager; 48 | import org.apache.logging.log4j.Logger; 49 | import top.theillusivec4.curios.api.SlotTypeMessage; 50 | import top.theillusivec4.curios.api.SlotTypePreset; 51 | 52 | import javax.swing.text.TabExpander; 53 | import javax.swing.text.TextAction; 54 | 55 | @Mod(Constants.MOD_ID) 56 | public class RebornStorage 57 | { 58 | @RSAPIInject 59 | public static IRSAPI RSAPI; 60 | 61 | public static Logger logger = LogManager.getLogger(); 62 | 63 | public static RebornStorage INSTANCE; 64 | 65 | public RebornStorage() 66 | { 67 | INSTANCE = this; 68 | IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); 69 | RebornStorageConfig.loadConfig(RebornStorageConfig.COMMON_CONFIG, FMLPaths.CONFIGDIR.get().resolve(Constants.MOD_ID + "-common.toml")); 70 | ModItems.ITEMS.register(eventBus); 71 | ModBlocks.BLOCKS.register(eventBus); 72 | ModBlocks.TILES_ENTITIES.register(eventBus); 73 | ModContainers.CONTAINERS.register(eventBus); 74 | eventBus.addListener(this::preInit); 75 | eventBus.addListener(this::clientInit); 76 | InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.CHARM.getMessageBuilder().size(4).build()); 77 | InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("grid").icon(new ResourceLocation(Constants.MOD_ID, "items/grid")).size(1).build()); 78 | MinecraftForge.EVENT_BUS.register(this); 79 | MinecraftForge.EVENT_BUS.register(new MultiblockEventHandler()); 80 | MinecraftForge.EVENT_BUS.register(new MultiblockServerTickHandler()); 81 | DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { 82 | MinecraftForge.EVENT_BUS.addListener(this::onKeyInput); 83 | }); 84 | } 85 | 86 | @SubscribeEvent 87 | public void preInit(FMLCommonSetupEvent event) 88 | { 89 | PacketHandler.register(); 90 | API.instance().getNetworkNodeRegistry().add(Constants.MULTI_BLOCK_ID, (tag, world, pos) -> 91 | { 92 | CraftingNode node = new CraftingNode(world, pos); 93 | StackUtils.readItems(node.patterns, 0, tag); 94 | return node; 95 | }); 96 | API.instance().getNetworkNodeRegistry().add(AdvancedWirelessTransmitterNode.ID, (tag, world, pos) -> readAndReturn(tag, new AdvancedWirelessTransmitterNode(world, pos))); 97 | API.instance().getGridManager().add(WirelessCraftingGridGridFactory.ID, new WirelessCraftingGridGridFactory()); 98 | } 99 | 100 | @SubscribeEvent 101 | public void clientInit(FMLClientSetupEvent event) 102 | { 103 | ModScreens.init(); 104 | MinecraftForge.EVENT_BUS.register(new MultiblockClientTickHandler()); 105 | ItemBlockRenderTypes.setRenderLayer(ModBlocks.BLOCK_ADVANCED_WIRELESS_TRANSMITTER.get(), RenderType.cutout()); 106 | ClientRegistry.registerKeyBinding(KeyBindings.OPEN_WIRELESS_CRAFTING_GRID); 107 | ClientRegistry.registerKeyBinding(KeyBindings.MODE_SWITCH_WIRELESS_CRAFTING_GRID); 108 | } 109 | 110 | @SubscribeEvent 111 | public void onKeyInput(InputEvent.KeyInputEvent e) 112 | { 113 | if (Minecraft.getInstance().player != null) 114 | { 115 | if (KeyBindings.OPEN_WIRELESS_CRAFTING_GRID.consumeClick()) 116 | { 117 | KeyInputListener.findAndOpen(ModItems.WIRELESS_GRID.get(), ModItems.CREATIVE_WIRELESS_GRID.get()); 118 | } 119 | if (KeyBindings.MODE_SWITCH_WIRELESS_CRAFTING_GRID.consumeClick() && e.getAction() == 1) 120 | { 121 | PacketHandler.sendToServer(new PacketChangeMode()); 122 | } 123 | } 124 | } 125 | 126 | public static MultiBlockCrafter getMultiBlock(Level world, BlockPos pos) 127 | { 128 | BlockEntity tileEntity = world.getBlockEntity(pos); 129 | if (tileEntity instanceof BlockEntityMultiCrafter) 130 | { 131 | return (MultiBlockCrafter) ((BlockEntityMultiCrafter) tileEntity).getMultiblockController(); 132 | } 133 | return null; 134 | } 135 | 136 | private static INetworkNode readAndReturn(CompoundTag tag, NetworkNode node) 137 | { 138 | node.read(tag); 139 | return node; 140 | } 141 | 142 | } 143 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/RebornStorageClient.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage; 2 | 3 | import net.minecraft.resources.ResourceLocation; 4 | import net.minecraftforge.api.distmarker.Dist; 5 | import net.minecraftforge.client.event.TextureStitchEvent; 6 | import net.minecraftforge.eventbus.api.SubscribeEvent; 7 | import net.minecraftforge.fml.common.Mod; 8 | 9 | @Mod.EventBusSubscriber(modid = Constants.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) 10 | public class RebornStorageClient 11 | { 12 | @SubscribeEvent 13 | public static void textureStitch(TextureStitchEvent.Pre event) 14 | { 15 | event.addSprite(new ResourceLocation(Constants.MOD_ID, "items/grid")); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/RebornStorageConfig.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage; 2 | 3 | import com.electronwill.nightconfig.core.file.CommentedFileConfig; 4 | import com.electronwill.nightconfig.core.io.WritingMode; 5 | import net.minecraftforge.common.ForgeConfigSpec; 6 | import net.minecraftforge.fml.common.Mod; 7 | 8 | import java.nio.file.Path; 9 | 10 | @Mod.EventBusSubscriber 11 | public class RebornStorageConfig 12 | { 13 | public static final String CATEGORY_GENERAL = "general"; 14 | public static final String CATEGORY_MULTIBLOCK = "multiblock"; 15 | 16 | private static final ForgeConfigSpec.Builder COMMON_BUILDER = new ForgeConfigSpec.Builder(); 17 | 18 | public static ForgeConfigSpec COMMON_CONFIG; 19 | 20 | public static ForgeConfigSpec.IntValue FRAME_COST; 21 | public static ForgeConfigSpec.IntValue HEAT_COST; 22 | public static ForgeConfigSpec.IntValue CPU_COST; 23 | public static ForgeConfigSpec.IntValue STORAGE_COST; 24 | 25 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MAX_XSIZE; 26 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MAX_YSIZE; 27 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MAX_ZSIZE; 28 | 29 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MIN_XSIZE; 30 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MIN_YSIZE; 31 | public static ForgeConfigSpec.IntValue MULTIBLOCK_MIN_ZSIZE; 32 | 33 | public static ForgeConfigSpec.IntValue ADVANCED_WIRELESS_TRANSMITTER_RANGE; 34 | public static ForgeConfigSpec.IntValue ADVANCED_WIRELESS_TRANSMITTER_POWER_COST; 35 | 36 | public static ForgeConfigSpec.IntValue ADVANCED_WIRELESS_RAGE_BOOSTER_RANGE; 37 | 38 | 39 | static 40 | { 41 | COMMON_BUILDER.comment("General Settings").push(CATEGORY_GENERAL); 42 | 43 | FRAME_COST = COMMON_BUILDER.comment("Power requirement for Frame blocks").defineInRange("multiblock_crafter_frame_cost", 0, 0, 1000); 44 | HEAT_COST = COMMON_BUILDER.comment("Power requirement for Heat exchanger blocks").defineInRange("multiblock_crafter_heat_cost", 0, 0, 1000); 45 | CPU_COST = COMMON_BUILDER.comment("Power requirement for Crafting Cpu blocks").defineInRange("multiblock_crafter_cpu_cost", 5, 0, 1000); 46 | STORAGE_COST = COMMON_BUILDER.comment("Power requirement for Storage blocks").defineInRange("multiblock_crafter_storage_cost", 10, 0, 1000); 47 | 48 | COMMON_BUILDER.pop(); 49 | 50 | COMMON_BUILDER.comment("Multiblock Settings").push(CATEGORY_MULTIBLOCK); 51 | 52 | MULTIBLOCK_MAX_XSIZE = COMMON_BUILDER.comment("Maximum X size").defineInRange("multiblock_crafter_max_x", 16, 3, 64); 53 | MULTIBLOCK_MAX_YSIZE = COMMON_BUILDER.comment("Maximum Y size").defineInRange("multiblock_crafter_max_y", 16, 3, 64); 54 | MULTIBLOCK_MAX_ZSIZE = COMMON_BUILDER.comment("Maximum Z size").defineInRange("multiblock_crafter_max_z", 16, 3, 64); 55 | 56 | MULTIBLOCK_MIN_XSIZE = COMMON_BUILDER.comment("Maximum X size").defineInRange("multiblock_crafter_min_x", 3, 3, 64); 57 | MULTIBLOCK_MIN_YSIZE = COMMON_BUILDER.comment("Maximum Y size").defineInRange("multiblock_crafter_min_y", 3, 3, 64); 58 | MULTIBLOCK_MIN_ZSIZE = COMMON_BUILDER.comment("Maximum Z size").defineInRange("multiblock_crafter_min_z", 3, 3, 64); 59 | 60 | ADVANCED_WIRELESS_TRANSMITTER_RANGE = COMMON_BUILDER.defineInRange("advanced_wireless_transmitter_range", 1000, 0, Integer.MAX_VALUE); 61 | ADVANCED_WIRELESS_TRANSMITTER_POWER_COST = COMMON_BUILDER.defineInRange("advanced_wireless_transmitter_cost", 100, 0, 100000); 62 | 63 | ADVANCED_WIRELESS_RAGE_BOOSTER_RANGE = COMMON_BUILDER.defineInRange("advanced_wireless_transmitter_range_booster_range", 500, 0, 100000); 64 | COMMON_BUILDER.pop(); 65 | 66 | COMMON_CONFIG = COMMON_BUILDER.build(); 67 | } 68 | 69 | public static void loadConfig(ForgeConfigSpec spec, Path path) 70 | { 71 | 72 | final CommentedFileConfig configData = CommentedFileConfig.builder(path).sync().autosave().writingMode(WritingMode.REPLACE).build(); 73 | 74 | configData.load(); 75 | spec.setConfig(configData); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/RebornStorageEventHandler.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage; 2 | 3 | import com.refinedmods.refinedstorage.api.autocrafting.ICraftingManager; 4 | import com.refinedmods.refinedstorage.api.network.node.INetworkNode; 5 | import com.refinedmods.refinedstorage.apiimpl.API; 6 | import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; 7 | import com.refinedmods.refinedstorage.apiimpl.network.node.WirelessTransmitterNetworkNode; 8 | import com.refinedmods.refinedstorage.util.StackUtils; 9 | import net.gigabit101.rebornstorage.client.screens.AdvancedWirelessTransmitterScreen; 10 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockRegistry; 11 | import net.gigabit101.rebornstorage.nodes.AdvancedWirelessTransmitterNode; 12 | import net.gigabit101.rebornstorage.nodes.CraftingNode; 13 | import net.minecraft.core.BlockPos; 14 | import net.minecraft.nbt.CompoundTag; 15 | import net.minecraft.resources.ResourceLocation; 16 | import net.minecraftforge.event.TickEvent; 17 | import net.minecraftforge.event.world.WorldEvent; 18 | import net.minecraftforge.eventbus.api.SubscribeEvent; 19 | import net.minecraftforge.fml.common.Mod; 20 | import org.apache.commons.lang3.tuple.Pair; 21 | 22 | import java.util.LinkedList; 23 | import java.util.Queue; 24 | import java.util.stream.Collectors; 25 | 26 | @Mod.EventBusSubscriber(modid = Constants.MOD_ID) 27 | public class RebornStorageEventHandler 28 | { 29 | public static boolean debugLogging = false; 30 | 31 | private static Queue> rebuildQueue = new LinkedList<>(); 32 | 33 | public static void queue(ICraftingManager craftingManager, CraftingNode node, String reason) 34 | { 35 | if (node.getLevel().isClientSide) 36 | { 37 | return; 38 | } 39 | for (ICraftingManager queued : rebuildQueue.stream().map(Pair::getLeft).collect(Collectors.toList())) 40 | { 41 | if (queued.equals(craftingManager)) 42 | { 43 | return; 44 | } 45 | } 46 | rebuildQueue.add(Pair.of(craftingManager, new RebuildReason(node.getPos(), node.getLevel().dimension().getRegistryName(), reason))); 47 | } 48 | 49 | @SubscribeEvent 50 | public static void tick(TickEvent.WorldTickEvent event) 51 | { 52 | if (event.phase == TickEvent.Phase.START) 53 | { 54 | MultiblockRegistry.tickStart(event.world); 55 | } 56 | if (event.phase == TickEvent.Phase.END && !event.world.isClientSide()) 57 | { 58 | Pair rebuildReasonPair = rebuildQueue.poll(); 59 | if (rebuildReasonPair != null) 60 | { 61 | if (debugLogging) 62 | { 63 | RebornStorage.logger.error("Triggering cached crafting manager rebuild pos:" + rebuildReasonPair.getRight().toString()); 64 | } 65 | rebuildReasonPair.getLeft().invalidate(); 66 | } 67 | } 68 | } 69 | 70 | private static class RebuildReason 71 | { 72 | BlockPos pos; 73 | ResourceLocation worldId; 74 | String reason; 75 | 76 | public RebuildReason(BlockPos pos, ResourceLocation worldId, String reason) 77 | { 78 | this.pos = pos; 79 | this.worldId = worldId; 80 | this.reason = reason; 81 | } 82 | 83 | @Override 84 | public String toString() 85 | { 86 | return "RebuildReason{" + "pos=" + pos + ", worldId=" + worldId + ", reason='" + reason + '\'' + '}'; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/blockentities/BlockEntityAdvancedWirelessTransmitter.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.blockentities; 2 | 3 | import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; 4 | import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; 5 | import net.gigabit101.rebornstorage.init.ModBlocks; 6 | import net.gigabit101.rebornstorage.nodes.AdvancedWirelessTransmitterNode; 7 | import net.minecraft.core.BlockPos; 8 | import net.minecraft.network.syncher.EntityDataSerializers; 9 | import net.minecraft.world.level.Level; 10 | import net.minecraft.world.level.block.state.BlockState; 11 | 12 | public class BlockEntityAdvancedWirelessTransmitter extends NetworkNodeBlockEntity 13 | { 14 | public static final BlockEntitySynchronizationParameter RANGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, (t) -> t.getNode().getRange()); 15 | 16 | public BlockEntityAdvancedWirelessTransmitter(BlockPos pos, BlockState state) 17 | { 18 | super(ModBlocks.ADVANCED_WIRELESS_TRANSMITTER.get(), pos, state); 19 | this.dataManager.addWatchedParameter(RANGE); 20 | } 21 | 22 | @Override 23 | public AdvancedWirelessTransmitterNode createNode(Level level, BlockPos blockPos) 24 | { 25 | return new AdvancedWirelessTransmitterNode(level, blockPos); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/blocks/BlockAdvancedWirelessTransmitter.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.blocks; 2 | 3 | import com.refinedmods.refinedstorage.block.BlockDirection; 4 | import com.refinedmods.refinedstorage.block.ColoredNetworkBlock; 5 | import com.refinedmods.refinedstorage.container.factory.BlockEntityMenuProvider; 6 | import com.refinedmods.refinedstorage.util.NetworkUtils; 7 | import net.gigabit101.rebornstorage.blockentities.BlockEntityAdvancedWirelessTransmitter; 8 | import net.gigabit101.rebornstorage.containers.AdvancedWirelessTransmitterContainer; 9 | import net.minecraft.core.BlockPos; 10 | import net.minecraft.network.chat.TranslatableComponent; 11 | import net.minecraft.server.level.ServerPlayer; 12 | import net.minecraft.world.InteractionHand; 13 | import net.minecraft.world.InteractionResult; 14 | import net.minecraft.world.entity.player.Player; 15 | import net.minecraft.world.level.BlockGetter; 16 | import net.minecraft.world.level.Level; 17 | import net.minecraft.world.level.block.entity.BlockEntity; 18 | import net.minecraft.world.level.block.state.BlockState; 19 | import net.minecraft.world.level.material.Material; 20 | import net.minecraft.world.phys.BlockHitResult; 21 | import net.minecraft.world.phys.shapes.CollisionContext; 22 | import net.minecraft.world.phys.shapes.Shapes; 23 | import net.minecraft.world.phys.shapes.VoxelShape; 24 | import net.minecraftforge.network.NetworkHooks; 25 | import org.jetbrains.annotations.NotNull; 26 | import org.jetbrains.annotations.Nullable; 27 | 28 | public class BlockAdvancedWirelessTransmitter extends ColoredNetworkBlock 29 | { 30 | private static final VoxelShape SHAPE_DOWN = box(6.0D, 0.0D, 6.0D, 10.0D, 10.0D, 10.0D); 31 | private static final VoxelShape SHAPE_UP = box(6.0D, 6.0D, 6.0D, 10.0D, 16.0D, 10.0D); 32 | private static final VoxelShape SHAPE_EAST = box(6.0D, 6.0D, 6.0D, 16.0D, 10.0D, 10.0D); 33 | private static final VoxelShape SHAPE_WEST = box(0.0D, 6.0D, 6.0D, 10.0D, 10.0D, 10.0D); 34 | private static final VoxelShape SHAPE_NORTH = box(6.0D, 6.0D, 0.0D, 10.0D, 10.0D, 10.0D); 35 | private static final VoxelShape SHAPE_SOUTH = box(6.0D, 6.0D, 6.0D, 10.0D, 10.0D, 16.0D); 36 | 37 | public BlockAdvancedWirelessTransmitter() 38 | { 39 | super(Properties.of(Material.METAL).strength(2.0F)); 40 | } 41 | 42 | @Override 43 | public BlockDirection getDirection() 44 | { 45 | return BlockDirection.ANY; 46 | } 47 | 48 | @Override 49 | public boolean hasConnectedState() 50 | { 51 | return true; 52 | } 53 | 54 | @Override 55 | @SuppressWarnings("deprecation") 56 | public VoxelShape getShape(BlockState state, @NotNull BlockGetter world, @NotNull BlockPos pos, @NotNull CollisionContext context) 57 | { 58 | switch (state.getValue(getDirection().getProperty())) 59 | { 60 | case DOWN: 61 | return SHAPE_DOWN; 62 | case UP: 63 | return SHAPE_UP; 64 | case NORTH: 65 | return SHAPE_NORTH; 66 | case SOUTH: 67 | return SHAPE_SOUTH; 68 | case WEST: 69 | return SHAPE_WEST; 70 | case EAST: 71 | return SHAPE_EAST; 72 | default: 73 | return Shapes.empty(); 74 | } 75 | } 76 | 77 | @Nullable 78 | @Override 79 | public BlockEntity newBlockEntity(@NotNull BlockPos blockPos, @NotNull BlockState blockState) 80 | { 81 | return new BlockEntityAdvancedWirelessTransmitter(blockPos, blockState); 82 | } 83 | 84 | @Override 85 | public @NotNull InteractionResult use(@NotNull BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull Player player, @NotNull InteractionHand hand, @NotNull BlockHitResult blockHitResult) 86 | { 87 | if (!level.isClientSide) 88 | { 89 | return NetworkUtils.attemptModify(level, blockPos, player, () -> NetworkHooks.openGui( 90 | (ServerPlayer) player, 91 | new BlockEntityMenuProvider( 92 | new TranslatableComponent("gui.rebornstorage.advanced_wireless_transmitter"), 93 | (blockEntity, windowId, inventory, p) -> new AdvancedWirelessTransmitterContainer(blockEntity, player, windowId), 94 | blockPos 95 | ), 96 | blockPos 97 | )); 98 | } 99 | return InteractionResult.SUCCESS; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/CreativeTabRebornStorage.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client; 2 | 3 | import net.gigabit101.rebornstorage.init.ModItems; 4 | import net.gigabit101.rebornstorage.Constants; 5 | import net.minecraft.world.item.CreativeModeTab; 6 | import net.minecraft.world.item.ItemStack; 7 | 8 | public class CreativeTabRebornStorage extends CreativeModeTab 9 | { 10 | public static CreativeTabRebornStorage INSTANCE = new CreativeTabRebornStorage(); 11 | 12 | public CreativeTabRebornStorage() 13 | { 14 | super(Constants.MOD_ID); 15 | } 16 | 17 | @Override 18 | public ItemStack makeIcon() 19 | { 20 | return new ItemStack(ModItems.STORAGE_DISK_16384K.get()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/KeyBindings.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client; 2 | 3 | import com.mojang.blaze3d.platform.InputConstants; 4 | import net.minecraft.client.KeyMapping; 5 | import net.minecraftforge.client.settings.KeyConflictContext; 6 | import net.minecraftforge.client.settings.KeyModifier; 7 | import org.lwjgl.glfw.GLFW; 8 | 9 | public class KeyBindings { 10 | public static final KeyMapping OPEN_WIRELESS_CRAFTING_GRID = new KeyMapping( 11 | "key.rebornstorage.openWirelessCraftingGrid", 12 | KeyConflictContext.IN_GAME, 13 | KeyModifier.CONTROL, 14 | InputConstants.Type.KEYSYM, 15 | GLFW.GLFW_KEY_G, 16 | "Reborn Storage" 17 | ); 18 | public static final KeyMapping MODE_SWITCH_WIRELESS_CRAFTING_GRID = new KeyMapping( 19 | "key.rebornstorage.switchModeWirelessCraftingGrid", 20 | KeyConflictContext.IN_GAME, 21 | KeyModifier.CONTROL, 22 | InputConstants.Type.KEYSYM, 23 | GLFW.GLFW_KEY_G, 24 | "Reborn Storage" 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/SlotFiltered.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client; 2 | 3 | import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPatternProvider; 4 | import net.minecraft.world.item.ItemStack; 5 | import net.minecraftforge.items.IItemHandler; 6 | import net.minecraftforge.items.SlotItemHandler; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public class SlotFiltered extends SlotItemHandler 10 | { 11 | public SlotFiltered(IItemHandler inventoryIn, int index, int xPosition, int yPosition) 12 | { 13 | super(inventoryIn, index, xPosition, yPosition); 14 | } 15 | 16 | @Override 17 | public boolean mayPlace(@NotNull ItemStack stack) 18 | { 19 | return stack.getItem() instanceof ICraftingPatternProvider; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/screens/AdvancedWirelessTransmitterScreen.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client.screens; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import com.refinedmods.refinedstorage.RS; 5 | import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; 6 | import com.refinedmods.refinedstorage.screen.BaseScreen; 7 | import com.refinedmods.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; 8 | import net.gigabit101.rebornstorage.blockentities.BlockEntityAdvancedWirelessTransmitter; 9 | import net.gigabit101.rebornstorage.containers.AdvancedWirelessTransmitterContainer; 10 | import net.minecraft.client.resources.language.I18n; 11 | import net.minecraft.network.chat.Component; 12 | import net.minecraft.world.entity.player.Inventory; 13 | 14 | public class AdvancedWirelessTransmitterScreen extends BaseScreen 15 | { 16 | AdvancedWirelessTransmitterContainer container; 17 | 18 | public AdvancedWirelessTransmitterScreen(AdvancedWirelessTransmitterContainer containerMenu, Inventory inventory, Component title) 19 | { 20 | super(containerMenu, 211, 137, inventory, title); 21 | this.container = containerMenu; 22 | } 23 | 24 | @Override 25 | public void onPostInit(int i, int i1) 26 | { 27 | addSideButton(new RedstoneModeSideButton(this, NetworkNodeBlockEntity.REDSTONE_MODE)); 28 | } 29 | 30 | @Override 31 | public void tick(int i, int i1) {} 32 | 33 | @Override 34 | public void renderBackground(PoseStack poseStack, int x, int y, int i2, int i3) 35 | { 36 | bindTexture(RS.ID, "gui/wireless_transmitter.png"); 37 | blit(poseStack, x, y, 0, 0, imageWidth, imageHeight); 38 | } 39 | 40 | @Override 41 | public void renderForeground(PoseStack poseStack, int i, int i1) 42 | { 43 | renderString(poseStack, 7, 7, title.getString()); 44 | renderString(poseStack, 28, 25, I18n.get("gui.refinedstorage.wireless_transmitter.distance", container.getBlockEntity() != null ? container.getBlockEntity().getNode().getRange() : 0)); 45 | renderString(poseStack, 7, 43, I18n.get("container.inventory")); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/screens/ScreenBuilder.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client.screens; 2 | 3 | import com.mojang.blaze3d.systems.RenderSystem; 4 | import com.mojang.blaze3d.vertex.PoseStack; 5 | import net.gigabit101.rebornstorage.Constants; 6 | import net.minecraft.client.gui.screens.Screen; 7 | import net.minecraft.resources.ResourceLocation; 8 | 9 | public class ScreenBuilder 10 | { 11 | public static final ResourceLocation GUI_SHEET = new ResourceLocation(Constants.MOD_ID.toLowerCase() + ":" + "textures/gui/gui_sheet.png"); 12 | 13 | public void drawDefaultBackground(Screen gui, PoseStack matrixStack, int x, int y, int width, int height, int textureXSize, int textureYSize) 14 | { 15 | RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); 16 | RenderSystem.setShaderTexture(0, GUI_SHEET); 17 | 18 | 19 | gui.blit(matrixStack, x, y, 0, 0, width / 2, height / 2, textureXSize, textureYSize); 20 | gui.blit(matrixStack, x + width / 2, y, 150 - width / 2, 0, width / 2, height / 2, textureXSize, textureYSize); 21 | gui.blit(matrixStack, x, y + height / 2, 0, 150 - height / 2, width / 2, height / 2, textureXSize, textureYSize); 22 | gui.blit(matrixStack, x + width / 2, y + height / 2, 150 - width / 2, 150 - height / 2, width / 2, height / 2, textureXSize, textureYSize); 23 | } 24 | 25 | public void drawPlayerSlots(Screen gui, PoseStack matrixStack, int posX, int posY, boolean center, int textureXSize, int textureYSize) 26 | { 27 | RenderSystem.setShaderTexture(0, GUI_SHEET); 28 | if (center) 29 | { 30 | posX -= 81; 31 | } 32 | for (int y = 0; y < 3; y++) 33 | { 34 | for (int x = 0; x < 9; x++) 35 | { 36 | gui.blit(matrixStack, posX + x * 18, posY + y * 18, 150, 0, 18, 18, textureXSize, textureYSize); 37 | } 38 | } 39 | for (int x = 0; x < 9; x++) 40 | { 41 | gui.blit(matrixStack, posX + x * 18, posY + 58, 150, 0, 18, 18, textureXSize, textureYSize); 42 | } 43 | } 44 | 45 | public void drawSlot(Screen gui, PoseStack matrixStack, int posX, int posY, int textureXSize, int textureYSize) 46 | { 47 | RenderSystem.setShaderTexture(0, GUI_SHEET); 48 | gui.blit(matrixStack, posX, posY, 150, 0, 18, 18, textureXSize, textureYSize); 49 | } 50 | 51 | 52 | public boolean isInRect(int x, int y, int xSize, int ySize, int mouseX, int mouseY) 53 | { 54 | return ((mouseX >= x && mouseX <= x + xSize) && (mouseY >= y && mouseY <= y + ySize)); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/client/screens/ScreenMultiCrafter.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.client.screens; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.gigabit101.rebornstorage.containers.ContainerMultiCrafter; 5 | import net.gigabit101.rebornstorage.multiblocks.MultiBlockCrafter; 6 | import net.gigabit101.rebornstorage.packet.PacketGui; 7 | import net.gigabit101.rebornstorage.packet.PacketHandler; 8 | import net.minecraft.client.gui.components.Button; 9 | import net.minecraft.client.gui.screens.Screen; 10 | import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; 11 | import net.minecraft.network.chat.Component; 12 | import net.minecraft.network.chat.TextComponent; 13 | import net.minecraft.world.entity.player.Inventory; 14 | 15 | public class ScreenMultiCrafter extends AbstractContainerScreen 16 | { 17 | ScreenBuilder builder = new ScreenBuilder(); 18 | MultiBlockCrafter crafter; 19 | ContainerMultiCrafter containerMultiCrafter; 20 | public static int maxSlotsPerPage = 78; 21 | Button buttonNext; 22 | Button buttonBack; 23 | 24 | public ScreenMultiCrafter(ContainerMultiCrafter containerMultiCrafter, Inventory playerInventory, Component title) 25 | { 26 | super(containerMultiCrafter, playerInventory, title); 27 | this.imageWidth = 250; 28 | this.imageHeight = 240; 29 | this.inventoryLabelY = 130; 30 | this.containerMultiCrafter = containerMultiCrafter; 31 | this.crafter = containerMultiCrafter.crafter; 32 | } 33 | 34 | @Override 35 | public void init() 36 | { 37 | super.init(); 38 | buttonNext = new Button(this.leftPos + 209, this.topPos + 172, 20, 20, new TextComponent(">"), p_onPress_1_ -> 39 | { 40 | boolean shift = Screen.hasShiftDown(); 41 | int next = crafter.currentPage + 1; 42 | if(shift) 43 | { 44 | int test = crafter.currentPage + 10; 45 | if(crafter.invs.size() >= test) 46 | { 47 | next = test; 48 | } 49 | } 50 | crafter.currentPage = next; 51 | if(containerMultiCrafter != null && containerMultiCrafter.blockPos != null) 52 | PacketHandler.sendToServer(new PacketGui(next, containerMultiCrafter.blockPos)); 53 | }); 54 | buttonBack = new Button(this.leftPos + 13, this.topPos + 172, 20, 20, new TextComponent("<"), p_onPress_1_ -> 55 | { 56 | boolean shift = Screen.hasShiftDown(); 57 | int next = crafter.currentPage - 1; 58 | if(shift) 59 | { 60 | int test = crafter.currentPage - 10; 61 | if(test > 0) 62 | { 63 | next = test; 64 | } 65 | } 66 | crafter.currentPage = next; 67 | if(containerMultiCrafter != null && containerMultiCrafter.blockPos != null) 68 | PacketHandler.sendToServer(new PacketGui(next, containerMultiCrafter.blockPos)); 69 | }); 70 | addRenderableWidget(buttonBack); 71 | addRenderableWidget(buttonNext); 72 | 73 | if (crafter != null && crafter.invs != null) 74 | { 75 | if (crafter.invs.size() != 0) 76 | { 77 | if (crafter.invs.size() == crafter.currentPage) 78 | { 79 | buttonNext.active = false; 80 | } 81 | if (crafter.currentPage == 1) 82 | { 83 | buttonBack.active = false; 84 | } 85 | } 86 | } 87 | } 88 | 89 | @Override 90 | protected void renderLabels(PoseStack poseStack, int mouseX, int mouseY) 91 | { 92 | this.font.draw(poseStack, this.title, (float) this.titleLabelX, (float) this.titleLabelY, 4210752); 93 | this.font.draw(poseStack, this.playerInventoryTitle, (float) this.inventoryLabelX, (float) this.inventoryLabelY, 4210752); 94 | } 95 | 96 | @Override 97 | public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) 98 | { 99 | this.renderBackground(matrixStack); 100 | super.render(matrixStack, mouseX, mouseY, partialTicks); 101 | this.renderTooltip(matrixStack, mouseX, mouseY); 102 | 103 | this.font.draw(matrixStack, new TextComponent("Page " + crafter.currentPage + " of " + crafter.invs.size()), leftPos + 10, topPos + 224, 4210752); 104 | if(buttonNext.isMouseOver(mouseX, mouseY) || buttonBack.isMouseOver(mouseX, mouseY)) 105 | { 106 | renderTooltip(matrixStack, new TextComponent("Hold to increment by 10"), mouseX, mouseY); 107 | } 108 | } 109 | 110 | @Override 111 | public void renderBg(PoseStack matrixStack, float partialTicks, int x, int y) 112 | { 113 | builder.drawDefaultBackground(this, matrixStack, leftPos, topPos, getXSize(), getYSize(), 256, 256); 114 | builder.drawPlayerSlots(this, matrixStack, leftPos + getXSize() / 2, topPos + 140, true, 256, 256); 115 | if (crafter != null) 116 | { 117 | if (crafter.invs.size() > 0 && crafter.currentPage <= crafter.invs.size()) 118 | { 119 | drawSlots(13, 6, maxSlotsPerPage, matrixStack); 120 | } 121 | } 122 | } 123 | 124 | public void drawSlots(int col, int rows, int max, PoseStack matrixStack) 125 | { 126 | int i = 0; 127 | for (int y = 0; y < rows; y++) 128 | { 129 | for (int x = 0; x < col; x++) 130 | { 131 | i++; 132 | if (i <= max) builder.drawSlot(this, matrixStack, leftPos + 8 + x * 18, topPos + 20 + y * 18, 256, 256); 133 | } 134 | } 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/containers/AdvancedWirelessTransmitterContainer.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.containers; 2 | 3 | import com.refinedmods.refinedstorage.blockentity.BaseBlockEntity; 4 | import com.refinedmods.refinedstorage.container.BaseContainerMenu; 5 | import net.gigabit101.rebornstorage.blockentities.BlockEntityAdvancedWirelessTransmitter; 6 | import net.gigabit101.rebornstorage.init.ModContainers; 7 | import net.minecraft.world.entity.player.Player; 8 | import net.minecraftforge.items.SlotItemHandler; 9 | import org.jetbrains.annotations.NotNull; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | public class AdvancedWirelessTransmitterContainer extends BaseContainerMenu 13 | { 14 | public AdvancedWirelessTransmitterContainer(@Nullable BlockEntityAdvancedWirelessTransmitter wirelessTransmitter, Player player, int windowId) 15 | { 16 | super(ModContainers.ADVANCED_WIRELESS_CONTAINER.get(), wirelessTransmitter, player, windowId); 17 | for (int i = 0; i < 4; ++i) 18 | { 19 | addSlot(new SlotItemHandler(wirelessTransmitter.getNode().getUpgrades(), i, 187, 6 + (i * 18))); 20 | } 21 | 22 | addPlayerInventory(8, 55); 23 | 24 | transferManager.addBiTransfer(player.getInventory(), wirelessTransmitter.getNode().getUpgrades()); 25 | } 26 | 27 | @Nullable 28 | @Override 29 | public BlockEntityAdvancedWirelessTransmitter getBlockEntity() 30 | { 31 | return (BlockEntityAdvancedWirelessTransmitter) super.getBlockEntity(); 32 | } 33 | 34 | @Override 35 | public boolean stillValid(@NotNull Player player) 36 | { 37 | return true; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/containers/ContainerBase.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.containers; 2 | 3 | import net.minecraft.world.entity.player.Inventory; 4 | import net.minecraft.world.entity.player.Player; 5 | import net.minecraft.world.inventory.AbstractContainerMenu; 6 | import net.minecraft.world.inventory.MenuType; 7 | import net.minecraft.world.inventory.Slot; 8 | import net.minecraft.world.item.ItemStack; 9 | import org.jetbrains.annotations.Nullable; 10 | 11 | public class ContainerBase extends AbstractContainerMenu 12 | { 13 | public ContainerBase(@Nullable MenuType menuType, int id) 14 | { 15 | super(menuType, id); 16 | } 17 | 18 | public void drawPlayersInv(Inventory player, int x, int y) 19 | { 20 | int i; 21 | for (i = 0; i < 3; ++i) 22 | { 23 | for (int j = 0; j < 9; ++j) 24 | { 25 | this.addSlot(new Slot(player, j + i * 9 + 9, x + j * 18, y + i * 18)); 26 | } 27 | } 28 | } 29 | 30 | public void drawPlayersHotBar(Inventory player, int x, int y) 31 | { 32 | int i; 33 | for (i = 0; i < 9; ++i) 34 | { 35 | this.addSlot(new Slot(player, i, x + i * 18, y)); 36 | } 37 | } 38 | 39 | @Override 40 | public boolean stillValid(Player player) 41 | { 42 | return false; 43 | } 44 | 45 | public static boolean canStacksMerge(ItemStack stack1, ItemStack stack2) 46 | { 47 | if (stack1.isEmpty() || stack2.isEmpty()) return false; 48 | if (!stack1.sameItem(stack2)) return false; 49 | if (!ItemStack.tagMatches(stack1, stack2)) return false; 50 | return true; 51 | } 52 | 53 | @Override 54 | public ItemStack quickMoveStack(Player player, int slotIndex) 55 | { 56 | ItemStack originalStack = ItemStack.EMPTY; 57 | Slot slot = (Slot) slots.get(slotIndex); 58 | int numSlots = slots.size(); 59 | if (slot != null && slot.hasItem()) 60 | { 61 | ItemStack stackInSlot = slot.getItem(); 62 | originalStack = stackInSlot.copy(); 63 | if (slotIndex >= numSlots - 9 * 4 && tryShiftItem(stackInSlot, numSlots)) 64 | { 65 | // NOOP 66 | } else if (slotIndex >= numSlots - 9 * 4 && slotIndex < numSlots - 9) 67 | { 68 | if (!shiftItemStack(stackInSlot, numSlots - 9, numSlots)) 69 | { 70 | return ItemStack.EMPTY; 71 | } 72 | } else if (slotIndex >= numSlots - 9 && slotIndex < numSlots) 73 | { 74 | if (!shiftItemStack(stackInSlot, numSlots - 9 * 4, numSlots - 9)) 75 | { 76 | return ItemStack.EMPTY; 77 | } 78 | } else if (!shiftItemStack(stackInSlot, numSlots - 9 * 4, numSlots)) 79 | { 80 | return ItemStack.EMPTY; 81 | } 82 | slot.onQuickCraft(stackInSlot, originalStack); 83 | if (stackInSlot.getCount() <= 0) 84 | { 85 | slot.set(ItemStack.EMPTY); 86 | } else 87 | { 88 | slot.setChanged(); 89 | } 90 | if (stackInSlot.getCount() == originalStack.getCount()) 91 | { 92 | return ItemStack.EMPTY; 93 | } 94 | slot.onTake(player, stackInSlot); 95 | } 96 | return originalStack; 97 | } 98 | 99 | protected boolean shiftItemStack(ItemStack stackToShift, int start, int end) 100 | { 101 | boolean changed = false; 102 | if (stackToShift.isStackable()) 103 | { 104 | for (int slotIndex = start; stackToShift.getCount() > 0 && slotIndex < end; slotIndex++) 105 | { 106 | Slot slot = (Slot) slots.get(slotIndex); 107 | ItemStack stackInSlot = slot.getItem(); 108 | if (!stackInSlot.isEmpty() && canStacksMerge(stackInSlot, stackToShift)) 109 | { 110 | int resultingStackSize = stackInSlot.getCount() + stackToShift.getCount(); 111 | int max = Math.min(stackToShift.getMaxStackSize(), slot.getMaxStackSize()); 112 | if (resultingStackSize <= max) 113 | { 114 | stackToShift.setCount(0); 115 | stackInSlot.setCount(resultingStackSize); 116 | slot.setChanged(); 117 | changed = true; 118 | } else if (stackInSlot.getCount() < max) 119 | { 120 | stackToShift.setCount(stackToShift.getCount() - (max - stackInSlot.getCount())); 121 | stackInSlot.setCount(max); 122 | slot.setChanged(); 123 | changed = true; 124 | } 125 | } 126 | } 127 | } 128 | if (stackToShift.getCount() > 0) 129 | { 130 | for (int slotIndex = start; stackToShift.getCount() > 0 && slotIndex < end; slotIndex++) 131 | { 132 | Slot slot = (Slot) slots.get(slotIndex); 133 | ItemStack stackInSlot = slot.getItem(); 134 | if (stackInSlot.isEmpty()) 135 | { 136 | int max = Math.min(stackToShift.getMaxStackSize(), slot.getMaxStackSize()); 137 | stackInSlot = stackToShift.copy(); 138 | stackInSlot.setCount(Math.min(stackToShift.getCount(), max)); 139 | stackToShift.setCount(stackToShift.getCount() - stackInSlot.getCount()); 140 | slot.set(stackInSlot); 141 | slot.setChanged(); 142 | changed = true; 143 | } 144 | } 145 | } 146 | return changed; 147 | } 148 | 149 | private boolean tryShiftItem(ItemStack stackToShift, int numSlots) 150 | { 151 | for (int machineIndex = 0; machineIndex < numSlots - 9 * 4; machineIndex++) 152 | { 153 | Slot slot = (Slot) slots.get(machineIndex); 154 | if (!slot.mayPlace(stackToShift)) continue; 155 | if (shiftItemStack(stackToShift, machineIndex, machineIndex + 1)) return true; 156 | } 157 | return false; 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/containers/ContainerMultiCrafter.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.containers; 2 | 3 | import net.gigabit101.rebornstorage.RebornStorage; 4 | import net.gigabit101.rebornstorage.client.SlotFiltered; 5 | import net.gigabit101.rebornstorage.init.ModContainers; 6 | import net.gigabit101.rebornstorage.multiblocks.MultiBlockCrafter; 7 | import net.gigabit101.rebornstorage.blockentities.BlockEntityMultiCrafter; 8 | import net.gigabit101.rebornstorage.packet.PacketGui; 9 | import net.gigabit101.rebornstorage.packet.PacketHandler; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.core.BlockPos; 12 | import net.minecraft.network.FriendlyByteBuf; 13 | import net.minecraft.world.entity.player.Inventory; 14 | import net.minecraft.world.entity.player.Player; 15 | import net.minecraft.world.inventory.AbstractContainerMenu; 16 | import net.minecraft.world.inventory.Slot; 17 | import net.minecraft.world.level.Level; 18 | import net.minecraftforge.items.IItemHandler; 19 | 20 | import java.util.Objects; 21 | 22 | public class ContainerMultiCrafter extends ContainerBase 23 | { 24 | public MultiBlockCrafter crafter; 25 | public BlockPos blockPos; 26 | 27 | public ContainerMultiCrafter(int id, Inventory playerInv, FriendlyByteBuf extraData) 28 | { 29 | this(id, playerInv, (BlockEntityMultiCrafter) Objects.requireNonNull(Minecraft.getInstance().level.getBlockEntity(extraData.readBlockPos()))); 30 | } 31 | 32 | public ContainerMultiCrafter(int id, Inventory playerInv, BlockEntityMultiCrafter multiBlockCrafter) 33 | { 34 | super(ModContainers.MULTI_CRAFTER_CONTAINER.get(), id); 35 | Level level = playerInv.player.level; 36 | crafter = RebornStorage.getMultiBlock(level, multiBlockCrafter.getBlockPos()); 37 | if(level.isClientSide) 38 | { 39 | if(crafter == null) 40 | { 41 | RebornStorage.logger.error("multiblock is null on client"); 42 | return; 43 | } 44 | if(crafter.invs.isEmpty()) 45 | { 46 | RebornStorage.logger.error("invs.isEmpty"); 47 | return; 48 | } 49 | } 50 | 51 | this.blockPos = multiBlockCrafter.getBlockPos(); 52 | if (crafter != null && !crafter.invs.isEmpty()) 53 | { 54 | if (crafter.currentPage > 0 && crafter.currentPage <= crafter.invs.size() && !crafter.invs.isEmpty() && crafter.invs.size() > 0) 55 | { 56 | drawSlotsForPage(crafter.getInvForPage(crafter.currentPage)); 57 | } else 58 | { 59 | if(!playerInv.player.level.isClientSide) 60 | { 61 | RebornStorage.logger.error("currentPage is out of bounds, Resetting to 1"); 62 | crafter.currentPage = 1; 63 | } 64 | } 65 | } 66 | drawPlayersInv(playerInv, 45, 141); 67 | drawPlayersHotBar(playerInv, 45, 199); 68 | } 69 | 70 | public void drawSlotsForPage(IItemHandler handler) 71 | { 72 | if(handler == null) return; 73 | if(handler.getSlots() == 0) return; 74 | int i = 0; 75 | for (int l = 0; l < 6; ++l) 76 | { 77 | for (int j1 = 0; j1 < 13; ++j1) 78 | { 79 | this.addSlot(new SlotFiltered(handler, i, 9 + j1 * 18, 21 + l * 18)); 80 | i++; 81 | } 82 | } 83 | } 84 | 85 | @Override 86 | public boolean stillValid(Player player) 87 | { 88 | return true; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 "Erogenous Beef" 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/MultiblockRegistry.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock; 2 | 3 | import net.gigabit101.rebornstorage.RebornStorage; 4 | import net.minecraft.world.level.Level; 5 | import net.minecraft.world.level.chunk.LevelChunk; 6 | 7 | import java.util.HashMap; 8 | import java.util.Set; 9 | 10 | /** 11 | * This is a very static singleton registry class which directs incoming events 12 | * to sub-objects, which actually manage each individual world's multiblocks. 13 | * 14 | * @author Erogenous Beef 15 | */ 16 | public class MultiblockRegistry 17 | { 18 | // World > WorldRegistry map 19 | private static HashMap registries = new HashMap(); 20 | 21 | /** 22 | * Called before Tile Entities are ticked in the world. Do bookkeeping here. 23 | * 24 | * @param world The world being ticked 25 | */ 26 | public static void tickStart(Level world) 27 | { 28 | if (registries.containsKey(world)) 29 | { 30 | MultiblockWorldRegistry registry = registries.get(world); 31 | registry.processMultiblockChanges(); 32 | registry.tickStart(); 33 | } 34 | } 35 | 36 | /** 37 | * Called when the world has finished loading a chunk. 38 | * 39 | * @param world The world which has finished loading a chunk 40 | * @param chunk Loaded chunk 41 | */ 42 | public static void onChunkLoaded(Level world, LevelChunk chunk) 43 | { 44 | if (registries.containsKey(world)) 45 | { 46 | registries.get(world).onChunkLoaded(chunk); 47 | } 48 | } 49 | 50 | /** 51 | * Register a new part in the system. The part has been created either 52 | * through user action or via a chunk loading. 53 | * 54 | * @param world The world into which this part is loading. 55 | * @param part The part being loaded. 56 | */ 57 | public static void onPartAdded(Level world, IMultiblockPart part) 58 | { 59 | MultiblockWorldRegistry registry = getOrCreateRegistry(world); 60 | registry.onPartAdded(part); 61 | } 62 | 63 | /** 64 | * Call to remove a part from world lists. 65 | * 66 | * @param world The world from which a multiblock part is being removed. 67 | * @param part The part being removed. 68 | */ 69 | public static void onPartRemovedFromWorld(Level world, IMultiblockPart part) 70 | { 71 | if (registries.containsKey(world)) 72 | { 73 | registries.get(world).onPartRemovedFromWorld(part); 74 | } 75 | } 76 | 77 | /** 78 | * Called whenever a world is unloaded. Unload the relevant registry, if we 79 | * have one. 80 | * 81 | * @param world The world being unloaded. 82 | */ 83 | public static void onWorldUnloaded(Level world) 84 | { 85 | if (registries.containsKey(world)) 86 | { 87 | registries.get(world).onWorldUnloaded(); 88 | registries.remove(world); 89 | } 90 | } 91 | 92 | /** 93 | * Call to mark a controller as dirty. Dirty means that parts have been 94 | * added or removed this tick. 95 | * 96 | * @param world The world containing the multiblock 97 | * @param controller The dirty controller 98 | */ 99 | public static void addDirtyController(Level world, MultiblockControllerBase controller) 100 | { 101 | if (registries.containsKey(world)) 102 | { 103 | registries.get(world).addDirtyController(controller); 104 | } else 105 | { 106 | RebornStorage.logger.error("Adding a dirty controller to a world that has no registered controllers! This is most likey not an issue with reborn core, please check the full log file for more infomation!"); 107 | } 108 | } 109 | 110 | /** 111 | * Call to mark a controller as dead. It should only be marked as dead when 112 | * it has no connected parts. It will be removed after the next world tick. 113 | * 114 | * @param world The world formerly containing the multiblock 115 | * @param controller The dead controller 116 | */ 117 | public static void addDeadController(Level world, MultiblockControllerBase controller) 118 | { 119 | if (registries.containsKey(world)) 120 | { 121 | registries.get(world).addDeadController(controller); 122 | } else 123 | { 124 | RebornStorage.logger.error(String.format("Controller %d in world %s marked as dead, but that world is not tracked! Controller is being ignored.", controller.hashCode(), world)); 125 | } 126 | } 127 | 128 | /** 129 | * @param world The world whose controllers you wish to retrieve. 130 | * @return An unmodifiable set of controllers active in the given world, or 131 | * null if there are none. 132 | */ 133 | public static Set getControllersFromWorld(Level world) 134 | { 135 | if (registries.containsKey(world)) 136 | { 137 | return registries.get(world).getControllers(); 138 | } 139 | return null; 140 | } 141 | 142 | // / *** PRIVATE HELPERS *** /// 143 | 144 | private static MultiblockWorldRegistry getOrCreateRegistry(Level world) 145 | { 146 | if (registries.containsKey(world)) 147 | { 148 | return registries.get(world); 149 | } else 150 | { 151 | MultiblockWorldRegistry newRegistry = new MultiblockWorldRegistry(world); 152 | registries.put(world, newRegistry); 153 | return newRegistry; 154 | } 155 | } 156 | 157 | } 158 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/MultiblockValidationException.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock; 2 | 3 | /** 4 | * An exception thrown when trying to validate a multiblock. Requires a string 5 | * describing why the multiblock could not assemble. 6 | * 7 | * @author Erogenous Beef 8 | */ 9 | public class MultiblockValidationException extends Exception 10 | { 11 | 12 | private static final long serialVersionUID = -4038176177468678877L; 13 | 14 | public MultiblockValidationException(String reason) 15 | { 16 | super(reason); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/README.txt: -------------------------------------------------------------------------------- 1 | This code is not ours! We are using an updated and partly re-written version of BeefCore. 2 | 3 | https://github.com/erogenousbeef/BeefCore 4 | 5 | For Licence information look at https://github.com/erogenousbeef/BeefCore/blob/master/README.md 6 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/events/MultiblockClientTickHandler.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock.events; 2 | 3 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockRegistry; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraftforge.event.TickEvent; 6 | import net.minecraftforge.eventbus.api.SubscribeEvent; 7 | 8 | public class MultiblockClientTickHandler 9 | { 10 | @SubscribeEvent 11 | public void onClientTick(TickEvent.ClientTickEvent event) 12 | { 13 | if (event.phase == TickEvent.Phase.START) MultiblockRegistry.tickStart(Minecraft.getInstance().level); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/events/MultiblockEventHandler.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock.events; 2 | 3 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockRegistry; 4 | import net.minecraft.world.level.Level; 5 | import net.minecraft.world.level.LevelAccessor; 6 | import net.minecraft.world.level.chunk.LevelChunk; 7 | import net.minecraftforge.event.world.ChunkEvent; 8 | import net.minecraftforge.event.world.WorldEvent; 9 | import net.minecraftforge.eventbus.api.EventPriority; 10 | import net.minecraftforge.eventbus.api.SubscribeEvent; 11 | 12 | public class MultiblockEventHandler 13 | { 14 | @SubscribeEvent(priority = EventPriority.NORMAL) 15 | public void onChunkLoad(ChunkEvent.Load event) 16 | { 17 | LevelChunk chunk = (LevelChunk) event.getChunk(); 18 | LevelAccessor level = event.getChunk().getWorldForge(); 19 | MultiblockRegistry.onChunkLoaded((Level) level, chunk); 20 | } 21 | 22 | @SubscribeEvent(priority = EventPriority.LOWEST) 23 | public void onWorldUnload(WorldEvent.Unload event) 24 | { 25 | MultiblockRegistry.onWorldUnloaded((Level) event.getWorld()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/events/MultiblockServerTickHandler.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock.events; 2 | 3 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockRegistry; 4 | import net.minecraftforge.event.TickEvent; 5 | import net.minecraftforge.eventbus.api.SubscribeEvent; 6 | 7 | public class MultiblockServerTickHandler 8 | { 9 | @SubscribeEvent 10 | public void onWorldTick(TickEvent.WorldTickEvent event) 11 | { 12 | if (event.phase == TickEvent.Phase.START) MultiblockRegistry.tickStart(event.world); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/rectangular/PartPosition.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock.rectangular; 2 | 3 | public enum PartPosition 4 | { 5 | Unknown, Interior, FrameCorner, Frame, TopFace, BottomFace, NorthFace, SouthFace, EastFace, WestFace; 6 | 7 | public boolean isFace(PartPosition position) 8 | { 9 | switch (position) 10 | { 11 | case TopFace: 12 | case BottomFace: 13 | case NorthFace: 14 | case SouthFace: 15 | case EastFace: 16 | case WestFace: 17 | return true; 18 | default: 19 | return false; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/core/multiblock/rectangular/RectangularMultiblockTileEntityBase.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.core.multiblock.rectangular; 2 | 3 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockControllerBase; 4 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockBlockEntityBase; 5 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockValidationException; 6 | import net.minecraft.core.BlockPos; 7 | import net.minecraft.core.Direction; 8 | import net.minecraft.world.level.block.entity.BlockEntityType; 9 | import net.minecraft.world.level.block.state.BlockState; 10 | 11 | public abstract class RectangularMultiblockTileEntityBase extends MultiblockBlockEntityBase 12 | { 13 | 14 | PartPosition position; 15 | Direction outwards; 16 | 17 | public RectangularMultiblockTileEntityBase(BlockEntityType tileEntityTypeIn, BlockPos blockPos, BlockState blockState) 18 | { 19 | super(tileEntityTypeIn, blockPos, blockState); 20 | 21 | position = PartPosition.Unknown; 22 | outwards = null; 23 | } 24 | 25 | // Positional Data 26 | public Direction getOutwardsDir() 27 | { 28 | return outwards; 29 | } 30 | 31 | public PartPosition getPartPosition() 32 | { 33 | return position; 34 | } 35 | 36 | // Handlers from MultiblockTileEntityBase 37 | @Override 38 | public void onAttached(MultiblockControllerBase newController) 39 | { 40 | super.onAttached(newController); 41 | recalculateOutwardsDirection(newController.getMinimumCoord(), newController.getMaximumCoord()); 42 | } 43 | 44 | @Override 45 | public void onMachineAssembled(MultiblockControllerBase controller) 46 | { 47 | BlockPos maxCoord = controller.getMaximumCoord(); 48 | BlockPos minCoord = controller.getMinimumCoord(); 49 | 50 | // Discover where I am on the reactor 51 | recalculateOutwardsDirection(minCoord, maxCoord); 52 | } 53 | 54 | @Override 55 | public void onMachineBroken() 56 | { 57 | position = PartPosition.Unknown; 58 | outwards = null; 59 | } 60 | 61 | // Positional helpers 62 | public void recalculateOutwardsDirection(BlockPos minCoord, BlockPos maxCoord) 63 | { 64 | outwards = null; 65 | position = PartPosition.Unknown; 66 | 67 | int facesMatching = 0; 68 | if (maxCoord.getX() == this.getBlockPos().getX() || minCoord.getX() == this.getBlockPos().getX()) 69 | { 70 | facesMatching++; 71 | } 72 | if (maxCoord.getY() == this.getBlockPos().getY() || minCoord.getY() == this.getBlockPos().getY()) 73 | { 74 | facesMatching++; 75 | } 76 | if (maxCoord.getZ() == this.getBlockPos().getZ() || minCoord.getZ() == this.getBlockPos().getZ()) 77 | { 78 | facesMatching++; 79 | } 80 | 81 | if (facesMatching <= 0) 82 | { 83 | position = PartPosition.Interior; 84 | } else if (facesMatching >= 3) 85 | { 86 | position = PartPosition.FrameCorner; 87 | } else if (facesMatching == 2) 88 | { 89 | position = PartPosition.Frame; 90 | } else 91 | { 92 | // 1 face matches 93 | if (maxCoord.getX() == this.getBlockPos().getX()) 94 | { 95 | position = PartPosition.EastFace; 96 | outwards = Direction.EAST; 97 | } else if (minCoord.getX() == this.getBlockPos().getX()) 98 | { 99 | position = PartPosition.WestFace; 100 | outwards = Direction.WEST; 101 | } else if (maxCoord.getZ() == this.getBlockPos().getZ()) 102 | { 103 | position = PartPosition.SouthFace; 104 | outwards = Direction.SOUTH; 105 | } else if (minCoord.getZ() == this.getBlockPos().getZ()) 106 | { 107 | position = PartPosition.NorthFace; 108 | outwards = Direction.NORTH; 109 | } else if (maxCoord.getY() == this.getBlockPos().getY()) 110 | { 111 | position = PartPosition.TopFace; 112 | outwards = Direction.UP; 113 | } else 114 | { 115 | position = PartPosition.BottomFace; 116 | outwards = Direction.DOWN; 117 | } 118 | } 119 | } 120 | 121 | // /// Validation Helpers (IMultiblockPart) 122 | public abstract void isGoodForFrame() throws MultiblockValidationException; 123 | 124 | public abstract void isGoodForSides() throws MultiblockValidationException; 125 | 126 | public abstract void isGoodForTop() throws MultiblockValidationException; 127 | 128 | public abstract void isGoodForBottom() throws MultiblockValidationException; 129 | 130 | public abstract void isGoodForInterior() throws MultiblockValidationException; 131 | } 132 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/grid/crafting/WirelessCraftingGridGridFactory.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.grid.crafting; 2 | 3 | import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; 4 | import com.refinedmods.refinedstorage.api.network.grid.IGrid; 5 | import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; 6 | import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; 7 | import net.gigabit101.rebornstorage.Constants; 8 | import net.gigabit101.rebornstorage.grid.crafting.WirelessCraftingGrid; 9 | import net.minecraft.core.BlockPos; 10 | import net.minecraft.resources.ResourceLocation; 11 | import net.minecraft.world.entity.player.Player; 12 | import net.minecraft.world.item.ItemStack; 13 | import net.minecraft.world.level.Level; 14 | import net.minecraft.world.level.block.entity.BlockEntity; 15 | 16 | import javax.annotation.Nullable; 17 | 18 | public class WirelessCraftingGridGridFactory implements IGridFactory 19 | { 20 | public static final ResourceLocation ID = new ResourceLocation(Constants.MOD_ID, "wireless_crafting_grid"); 21 | 22 | @Nullable 23 | @Override 24 | public IGrid createFromStack(Player player, ItemStack stack, PlayerSlot slot) 25 | { 26 | return new WirelessCraftingGrid(stack, player.getLevel(), player.getServer(), slot); 27 | } 28 | 29 | @Nullable 30 | @Override 31 | public IGrid createFromBlock(Player player, BlockPos pos) 32 | { 33 | return null; 34 | } 35 | 36 | @Nullable 37 | @Override 38 | public BlockEntity getRelevantBlockEntity(Level level, BlockPos pos) 39 | { 40 | return null; 41 | } 42 | 43 | @Override 44 | public GridFactoryType getType() 45 | { 46 | return GridFactoryType.STACK; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/grid/crafting/WirelessCraftingGridNetworkItem.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.grid.crafting; 2 | 3 | import com.refinedmods.refinedstorage.RS; 4 | import com.refinedmods.refinedstorage.api.network.INetwork; 5 | import com.refinedmods.refinedstorage.api.network.item.INetworkItem; 6 | import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; 7 | import com.refinedmods.refinedstorage.api.network.security.Permission; 8 | import com.refinedmods.refinedstorage.apiimpl.API; 9 | import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; 10 | import com.refinedmods.refinedstorage.util.LevelUtils; 11 | import net.gigabit101.rebornstorage.items.ItemWirelessGrid; 12 | import net.minecraft.network.chat.TranslatableComponent; 13 | import net.minecraft.server.level.ServerPlayer; 14 | import net.minecraft.world.entity.player.Player; 15 | import net.minecraft.world.item.ItemStack; 16 | import net.minecraftforge.energy.CapabilityEnergy; 17 | import net.minecraftforge.energy.IEnergyStorage; 18 | 19 | public class WirelessCraftingGridNetworkItem implements INetworkItem 20 | { 21 | private final INetworkItemManager handler; 22 | private final Player player; 23 | private final ItemStack stack; 24 | private final PlayerSlot slot; 25 | 26 | 27 | public WirelessCraftingGridNetworkItem(INetworkItemManager handler, Player player, ItemStack stack, PlayerSlot slot) 28 | { 29 | this.handler = handler; 30 | this.player = player; 31 | this.stack = stack; 32 | this.slot = slot; 33 | } 34 | 35 | @Override 36 | public Player getPlayer() 37 | { 38 | return player; 39 | } 40 | 41 | @Override 42 | public boolean onOpen(INetwork network) 43 | { 44 | IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); 45 | 46 | if (((ItemWirelessGrid) stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE && 47 | energy != null && energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()) 48 | { 49 | sendOutOfEnergyMessage(); 50 | return false; 51 | } 52 | 53 | if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player)) 54 | { 55 | LevelUtils.sendNoPermissionMessage(player); 56 | 57 | return false; 58 | } 59 | 60 | API.instance().getGridManager().openGrid(WirelessCraftingGridGridFactory.ID, (ServerPlayer) player, stack, slot); 61 | 62 | this.drainEnergy(RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage()); 63 | return true; 64 | } 65 | 66 | private void sendOutOfEnergyMessage() { 67 | this.player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new Object[]{new TranslatableComponent(this.stack.getItem().getDescriptionId())}), this.player.getUUID()); 68 | } 69 | 70 | @Override 71 | public void drainEnergy(int energy) 72 | { 73 | if (RS.SERVER_CONFIG.getWirelessGrid().getUseEnergy() && ((ItemWirelessGrid)this.stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE) { 74 | this.stack.getCapability(CapabilityEnergy.ENERGY).ifPresent((energyStorage) -> { 75 | energyStorage.extractEnergy(energy, false); 76 | if (energyStorage.getEnergyStored() <= 0) { 77 | this.handler.close(this.player); 78 | this.player.closeContainer(); 79 | this.sendOutOfEnergyMessage(); 80 | } 81 | }); 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/grid/fluid/WirelessFluidGridNetworkItemExt.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.grid.fluid; 2 | 3 | import com.refinedmods.refinedstorage.RS; 4 | import com.refinedmods.refinedstorage.api.network.INetwork; 5 | import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; 6 | import com.refinedmods.refinedstorage.api.network.security.Permission; 7 | import com.refinedmods.refinedstorage.apiimpl.API; 8 | import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory; 9 | import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessFluidGridNetworkItem; 10 | import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; 11 | import com.refinedmods.refinedstorage.util.LevelUtils; 12 | import net.gigabit101.rebornstorage.items.ItemWirelessGrid; 13 | import net.minecraft.network.chat.TranslatableComponent; 14 | import net.minecraft.server.level.ServerPlayer; 15 | import net.minecraft.world.entity.player.Player; 16 | import net.minecraft.world.item.ItemStack; 17 | import net.minecraftforge.energy.CapabilityEnergy; 18 | import net.minecraftforge.energy.IEnergyStorage; 19 | 20 | public class WirelessFluidGridNetworkItemExt extends WirelessFluidGridNetworkItem 21 | { 22 | private final INetworkItemManager handler; 23 | private final Player player; 24 | private final ItemStack stack; 25 | private final PlayerSlot slot; 26 | 27 | public WirelessFluidGridNetworkItemExt(INetworkItemManager handler, Player player, ItemStack stack, PlayerSlot slot) 28 | { 29 | super(handler, player, stack, slot); 30 | this.handler = handler; 31 | this.player = player; 32 | this.stack = stack; 33 | this.slot = slot; 34 | } 35 | 36 | public boolean onOpen(INetwork network) { 37 | IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); 38 | if (RS.SERVER_CONFIG.getWirelessFluidGrid().getUseEnergy() && ((ItemWirelessGrid)this.stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE && energy != null && energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()) { 39 | this.sendOutOfEnergyMessage(); 40 | return false; 41 | } else if (!network.getSecurityManager().hasPermission(Permission.MODIFY, this.player)) { 42 | LevelUtils.sendNoPermissionMessage(this.player); 43 | return false; 44 | } else { 45 | API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayer)this.player, this.stack, this.slot); 46 | this.drainEnergy(RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()); 47 | return true; 48 | } 49 | } 50 | 51 | @Override 52 | public void drainEnergy(int energy) 53 | { 54 | if (RS.SERVER_CONFIG.getWirelessFluidGrid().getUseEnergy() && ((ItemWirelessGrid)this.stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE) { 55 | this.stack.getCapability(CapabilityEnergy.ENERGY).ifPresent((energyStorage) -> { 56 | energyStorage.extractEnergy(energy, false); 57 | if (energyStorage.getEnergyStored() <= 0) { 58 | this.handler.close(this.player); 59 | this.player.closeContainer(); 60 | this.sendOutOfEnergyMessage(); 61 | } 62 | }); 63 | } 64 | } 65 | 66 | private void sendOutOfEnergyMessage() { 67 | this.player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new Object[]{new TranslatableComponent(this.stack.getItem().getDescriptionId())}), this.player.getUUID()); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/grid/monitor/WirelessCraftingMonitorNetworkItemExt.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.grid.monitor; 2 | 3 | import com.refinedmods.refinedstorage.RS; 4 | import com.refinedmods.refinedstorage.RSContainerMenus; 5 | import com.refinedmods.refinedstorage.api.network.INetwork; 6 | import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; 7 | import com.refinedmods.refinedstorage.api.network.security.Permission; 8 | import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessCraftingMonitorNetworkItem; 9 | import com.refinedmods.refinedstorage.blockentity.craftingmonitor.CraftingMonitorBlockEntity; 10 | import com.refinedmods.refinedstorage.blockentity.craftingmonitor.WirelessCraftingMonitor; 11 | import com.refinedmods.refinedstorage.container.factory.CraftingMonitorMenuProvider; 12 | import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; 13 | import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; 14 | import com.refinedmods.refinedstorage.util.LevelUtils; 15 | import net.gigabit101.rebornstorage.items.ItemWirelessGrid; 16 | import net.minecraft.core.Direction; 17 | import net.minecraft.network.chat.TranslatableComponent; 18 | import net.minecraft.server.level.ServerPlayer; 19 | import net.minecraft.world.entity.player.Player; 20 | import net.minecraft.world.item.ItemStack; 21 | import net.minecraftforge.energy.CapabilityEnergy; 22 | import net.minecraftforge.energy.IEnergyStorage; 23 | import net.minecraftforge.network.NetworkHooks; 24 | 25 | import java.util.Objects; 26 | 27 | public class WirelessCraftingMonitorNetworkItemExt extends WirelessCraftingMonitorNetworkItem 28 | { 29 | private final INetworkItemManager handler; 30 | private final Player player; 31 | private final ItemStack stack; 32 | private final PlayerSlot slot; 33 | 34 | public WirelessCraftingMonitorNetworkItemExt(INetworkItemManager handler, Player player, ItemStack stack, PlayerSlot slot) 35 | { 36 | super(handler, player, stack, slot); 37 | this.handler = handler; 38 | this.player = player; 39 | this.stack = stack; 40 | this.slot = slot; 41 | } 42 | 43 | @Override 44 | public boolean onOpen(INetwork network) 45 | { 46 | IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); 47 | if (RS.SERVER_CONFIG.getWirelessCraftingMonitor().getUseEnergy() && ((ItemWirelessGrid)this.stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE && energy != null && energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()) { 48 | this.sendOutOfEnergyMessage(); 49 | return false; 50 | } else if (network.getSecurityManager().hasPermission(Permission.MODIFY, this.player) && network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, this.player)) { 51 | WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(this.stack, this.player.getServer(), this.slot); 52 | ServerPlayer var10000 = (ServerPlayer)this.player; 53 | CraftingMonitorMenuProvider var10001 = new CraftingMonitorMenuProvider(RSContainerMenus.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, (CraftingMonitorBlockEntity)null); 54 | PlayerSlot var10002 = this.slot; 55 | Objects.requireNonNull(var10002); 56 | NetworkHooks.openGui(var10000, var10001, var10002::writePlayerSlot); 57 | this.drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()); 58 | return true; 59 | } else { 60 | LevelUtils.sendNoPermissionMessage(this.player); 61 | return false; 62 | } 63 | } 64 | 65 | @Override 66 | public void drainEnergy(int energy) 67 | { 68 | if (RS.SERVER_CONFIG.getWirelessCraftingMonitor().getUseEnergy() && ((ItemWirelessGrid)this.stack.getItem()).getType() != ItemWirelessGrid.Type.CREATIVE) { 69 | this.stack.getCapability(CapabilityEnergy.ENERGY).ifPresent((energyStorage) -> { 70 | energyStorage.extractEnergy(energy, false); 71 | if (energyStorage.getEnergyStored() <= 0) { 72 | this.handler.close(this.player); 73 | this.player.closeContainer(); 74 | this.sendOutOfEnergyMessage(); 75 | } 76 | }); 77 | } 78 | } 79 | 80 | public void sendOutOfEnergyMessage() 81 | { 82 | this.player.sendMessage(new TranslatableComponent("misc.refinedstorage.network_item.out_of_energy", new Object[]{new TranslatableComponent(this.stack.getItem().getDescriptionId())}), this.player.getUUID()); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/init/ModBlocks.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.init; 2 | 3 | import net.gigabit101.rebornstorage.blockentities.BlockEntityAdvancedWirelessTransmitter; 4 | import net.gigabit101.rebornstorage.blocks.BlockAdvancedWirelessTransmitter; 5 | import net.gigabit101.rebornstorage.blocks.BlockMultiCrafter; 6 | import net.gigabit101.rebornstorage.Constants; 7 | import net.gigabit101.rebornstorage.blockentities.BlockEntityMultiCrafter; 8 | import net.minecraft.world.level.block.Block; 9 | import net.minecraft.world.level.block.entity.BlockEntityType; 10 | import net.minecraftforge.registries.DeferredRegister; 11 | import net.minecraftforge.registries.ForgeRegistries; 12 | import net.minecraftforge.registries.RegistryObject; 13 | 14 | public class ModBlocks 15 | { 16 | public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Constants.MOD_ID); 17 | public static final DeferredRegister> TILES_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, Constants.MOD_ID); 18 | 19 | public static final RegistryObject BLOCK_MULTI_FRAME = BLOCKS.register("multiblock_frame", BlockMultiCrafter::new); 20 | public static final RegistryObject BLOCK_MULTI_HEAT = BLOCKS.register("multiblock_heat", BlockMultiCrafter::new); 21 | public static final RegistryObject BLOCK_MULTI_CPU = BLOCKS.register("multiblock_cpu", BlockMultiCrafter::new); 22 | public static final RegistryObject BLOCK_MULTI_STORAGE = BLOCKS.register("multiblock_storage", BlockMultiCrafter::new); 23 | 24 | public static final RegistryObject BLOCK_ADVANCED_WIRELESS_TRANSMITTER = BLOCKS.register("advanced_wireless_transmitter", BlockAdvancedWirelessTransmitter::new); 25 | 26 | public static final RegistryObject> CRAFTER_TILE = TILES_ENTITIES.register("multiblock_frame", () -> BlockEntityType.Builder.of(BlockEntityMultiCrafter::new, ModBlocks.BLOCK_MULTI_FRAME.get(), ModBlocks.BLOCK_MULTI_STORAGE.get(), ModBlocks.BLOCK_MULTI_CPU.get(), ModBlocks.BLOCK_MULTI_HEAT.get()).build(null)); 27 | public static final RegistryObject> ADVANCED_WIRELESS_TRANSMITTER = TILES_ENTITIES.register("advanced_wireless_transmitter", () -> BlockEntityType.Builder.of(BlockEntityAdvancedWirelessTransmitter::new, ModBlocks.BLOCK_ADVANCED_WIRELESS_TRANSMITTER.get()).build(null)); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/init/ModContainers.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.init; 2 | 3 | import com.refinedmods.refinedstorage.container.factory.BlockEntityContainerFactory; 4 | import net.gigabit101.rebornstorage.blockentities.BlockEntityAdvancedWirelessTransmitter; 5 | import net.gigabit101.rebornstorage.containers.AdvancedWirelessTransmitterContainer; 6 | import net.gigabit101.rebornstorage.containers.ContainerMultiCrafter; 7 | import net.gigabit101.rebornstorage.Constants; 8 | import net.minecraft.world.inventory.MenuType; 9 | import net.minecraftforge.common.extensions.IForgeMenuType; 10 | import net.minecraftforge.registries.DeferredRegister; 11 | import net.minecraftforge.registries.ForgeRegistries; 12 | import net.minecraftforge.registries.RegistryObject; 13 | 14 | public class ModContainers 15 | { 16 | public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Constants.MOD_ID); 17 | public static final RegistryObject> MULTI_CRAFTER_CONTAINER = CONTAINERS.register("container_multiblock_crafter", () -> IForgeMenuType.create(ContainerMultiCrafter::new)); 18 | public static final RegistryObject> ADVANCED_WIRELESS_CONTAINER = CONTAINERS.register("container_advanced_wireless_transmitter", 19 | () -> IForgeMenuType.create(new BlockEntityContainerFactory(((i, inventory, wirelessTransmitter) 20 | -> new AdvancedWirelessTransmitterContainer(wirelessTransmitter, inventory.player, i))))); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/init/ModItems.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.init; 2 | 3 | import com.refinedmods.refinedstorage.api.storage.StorageType; 4 | import com.refinedmods.refinedstorage.block.BaseBlock; 5 | import com.refinedmods.refinedstorage.item.blockitem.BaseBlockItem; 6 | import net.gigabit101.rebornstorage.client.CreativeTabRebornStorage; 7 | import net.gigabit101.rebornstorage.items.ItemBook; 8 | import net.gigabit101.rebornstorage.items.ItemWirelessGrid; 9 | import net.gigabit101.rebornstorage.items.ItemFluidRebornStorageCell; 10 | import net.gigabit101.rebornstorage.items.ItemRebornStorageCell; 11 | import net.gigabit101.rebornstorage.Constants; 12 | import net.minecraft.world.item.BlockItem; 13 | import net.minecraft.world.item.Item; 14 | import net.minecraft.world.item.Rarity; 15 | import net.minecraftforge.registries.DeferredRegister; 16 | import net.minecraftforge.registries.ForgeRegistries; 17 | import net.minecraftforge.registries.RegistryObject; 18 | 19 | public class ModItems 20 | { 21 | public static final Item.Properties ITEM_GROUP = new Item.Properties().tab(CreativeTabRebornStorage.INSTANCE); 22 | public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Constants.MOD_ID); 23 | public static final Item.Properties PROPERTIES = new Item.Properties().tab(CreativeTabRebornStorage.INSTANCE); 24 | 25 | // public static final RegistryObject BOOK = ITEMS.register("rs_book", () -> new ItemBook()); 26 | 27 | //ItemBlocks 28 | public static final RegistryObject BLOCK_MULTI_FRAME_ITEM = ITEMS.register("multiblock_frame", () -> new BlockItem(ModBlocks.BLOCK_MULTI_FRAME.get(), ITEM_GROUP)); 29 | public static final RegistryObject BLOCK_MULTI_HEAT_ITEM = ITEMS.register("multiblock_heat", () -> new BlockItem(ModBlocks.BLOCK_MULTI_HEAT.get(), ITEM_GROUP)); 30 | public static final RegistryObject BLOCK_MULTI_FRAME_CPU = ITEMS.register("multiblock_cpu", () -> new BlockItem(ModBlocks.BLOCK_MULTI_CPU.get(), ITEM_GROUP)); 31 | public static final RegistryObject BLOCK_MULTI_FRAME_STORAGE = ITEMS.register("multiblock_storage", () -> new BlockItem(ModBlocks.BLOCK_MULTI_STORAGE.get(), ITEM_GROUP)); 32 | 33 | public static final RegistryObject STORAGE_DISK_256k = ITEMS.register("small_item_disk", () -> new ItemRebornStorageCell(256000, StorageType.ITEM)); 34 | public static final RegistryObject STORAGE_DISK_1024k = ITEMS.register("medium_item_disk", () -> new ItemRebornStorageCell(1024000, StorageType.ITEM)); 35 | public static final RegistryObject STORAGE_DISK_4096K = ITEMS.register("large_item_disk", () -> new ItemRebornStorageCell(4096000, StorageType.ITEM)); 36 | public static final RegistryObject STORAGE_DISK_16384K = ITEMS.register("larger_item_disk", () -> new ItemRebornStorageCell(16384000, StorageType.ITEM)); 37 | 38 | public static final RegistryObject STORAGE_DISK_FLUID_16384K = ITEMS.register("small_fluid_disk", () -> new ItemFluidRebornStorageCell(16384000, StorageType.FLUID)); 39 | public static final RegistryObject STORAGE_DISK_FLUID_65536K = ITEMS.register("medium_fluid_disk", () -> new ItemFluidRebornStorageCell(65536000, StorageType.FLUID)); 40 | public static final RegistryObject STORAGE_DISK_FLUID_262M = ITEMS.register("large_fluid_disk", () -> new ItemFluidRebornStorageCell(262144000, StorageType.FLUID)); 41 | public static final RegistryObject STORAGE_DISK_FLUID_1048M = ITEMS.register("larger_fluid_disk", () -> new ItemFluidRebornStorageCell(1048576000, StorageType.FLUID)); 42 | 43 | public static final RegistryObject STORAGE_DISK_256k_PART = ITEMS.register("small_item_disk_part", () -> new Item(PROPERTIES)); 44 | public static final RegistryObject STORAGE_DISK_1024k_PART = ITEMS.register("medium_item_disk_part", () -> new Item(PROPERTIES)); 45 | public static final RegistryObject STORAGE_DISK_4096K_PART = ITEMS.register("large_item_disk_part", () -> new Item(PROPERTIES)); 46 | public static final RegistryObject STORAGE_DISK_16384K_PART = ITEMS.register("larger_item_disk_part", () -> new Item(PROPERTIES)); 47 | 48 | public static final RegistryObject STORAGE_DISK_16384K_FLUID_PART = ITEMS.register("small_fluid_disk_part", () -> new Item(PROPERTIES)); 49 | public static final RegistryObject STORAGE_DISK_65536K_FLUID_PART = ITEMS.register("medium_fluid_disk_part", () -> new Item(PROPERTIES)); 50 | public static final RegistryObject STORAGE_DISK_262M_FLUID_PART = ITEMS.register("large_fluid_disk_part", () -> new Item(PROPERTIES)); 51 | public static final RegistryObject STORAGE_DISK_1048M_FLUID_PART = ITEMS.register("larger_fluid_disk_part", () -> new Item(PROPERTIES)); 52 | 53 | public static final RegistryObject RAW_SUPER_ADVANCED_PROCESSOR = ITEMS.register("raw_super_advanced_processor", () -> new Item(PROPERTIES)); 54 | public static final RegistryObject SUPER_ADVANCED_PROCESSOR = ITEMS.register("super_advanced_processor", () -> new Item(PROPERTIES)); 55 | 56 | public static final RegistryObject WIRELESS_GRID = ITEMS.register("super_wireless_crafting_grid", () -> new ItemWirelessGrid(PROPERTIES.stacksTo(1).rarity(Rarity.EPIC), ItemWirelessGrid.Type.NORMAL, () -> 100000)); 57 | public static final RegistryObject CREATIVE_WIRELESS_GRID = ITEMS.register("creative_super_wireless_crafting_grid", () -> new ItemWirelessGrid(PROPERTIES.stacksTo(1).rarity(Rarity.EPIC), ItemWirelessGrid.Type.CREATIVE, () -> 100000)); 58 | 59 | public static final RegistryObject ADVANCED_WIRELESS_TRANSMITTER_ITEM = ITEMS.register("advanced_wireless_transmitter", () -> new BaseBlockItem((BaseBlock) ModBlocks.BLOCK_ADVANCED_WIRELESS_TRANSMITTER.get(), ITEM_GROUP)); 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/init/ModScreens.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.init; 2 | 3 | import net.gigabit101.rebornstorage.client.screens.AdvancedWirelessTransmitterScreen; 4 | import net.gigabit101.rebornstorage.client.screens.ScreenMultiCrafter; 5 | import net.minecraft.client.gui.screens.MenuScreens; 6 | 7 | public class ModScreens 8 | { 9 | public static void init() 10 | { 11 | MenuScreens.register(ModContainers.MULTI_CRAFTER_CONTAINER.get(), ScreenMultiCrafter::new); 12 | MenuScreens.register(ModContainers.ADVANCED_WIRELESS_CONTAINER.get(), AdvancedWirelessTransmitterScreen::new); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/items/ItemBook.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.items; 2 | 3 | import net.gigabit101.rebornstorage.client.CreativeTabRebornStorage; 4 | import net.gigabit101.rebornstorage.init.ModItems; 5 | import net.minecraft.core.Registry; 6 | import net.minecraft.server.level.ServerPlayer; 7 | import net.minecraft.world.InteractionHand; 8 | import net.minecraft.world.InteractionResultHolder; 9 | import net.minecraft.world.entity.player.Player; 10 | import net.minecraft.world.item.Item; 11 | import net.minecraft.world.item.ItemStack; 12 | import net.minecraft.world.level.Level; 13 | import vazkii.patchouli.api.PatchouliAPI; 14 | 15 | public class ItemBook extends Item 16 | { 17 | public ItemBook() 18 | { 19 | super(new Properties().tab(CreativeTabRebornStorage.INSTANCE).stacksTo(1)); 20 | } 21 | 22 | @Override 23 | public InteractionResultHolder use(Level level, Player player, InteractionHand hand) 24 | { 25 | ItemStack stack = player.getItemInHand(hand); 26 | 27 | if(player instanceof ServerPlayer serverPlayer) 28 | { 29 | PatchouliAPI.get().openBookGUI(serverPlayer, Registry.ITEM.getKey(this)); 30 | } 31 | return InteractionResultHolder.success(stack); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/items/ItemFluidRebornStorageCell.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.items; 2 | 3 | import com.refinedmods.refinedstorage.api.storage.StorageType; 4 | import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider; 5 | import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; 6 | import com.refinedmods.refinedstorage.apiimpl.API; 7 | import com.refinedmods.refinedstorage.apiimpl.storage.FluidStorageType; 8 | import com.refinedmods.refinedstorage.render.Styles; 9 | import net.gigabit101.rebornstorage.client.CreativeTabRebornStorage; 10 | import net.minecraft.nbt.CompoundTag; 11 | import net.minecraft.network.chat.TextComponent; 12 | import net.minecraft.network.chat.TranslatableComponent; 13 | import net.minecraft.server.level.ServerLevel; 14 | import net.minecraft.world.entity.Entity; 15 | import net.minecraft.world.entity.player.Player; 16 | import net.minecraft.world.item.Item; 17 | import net.minecraft.world.item.ItemStack; 18 | import net.minecraft.world.item.TooltipFlag; 19 | import net.minecraft.world.level.Level; 20 | 21 | import java.util.List; 22 | import java.util.UUID; 23 | 24 | public class ItemFluidRebornStorageCell extends Item implements IStorageDiskProvider 25 | { 26 | private static final String NBT_ID = "Id"; 27 | 28 | private final int capacity; 29 | 30 | public ItemFluidRebornStorageCell(int capacity, StorageType storageType) 31 | { 32 | super(new Properties().tab(CreativeTabRebornStorage.INSTANCE).stacksTo(1)); 33 | this.capacity = capacity; 34 | } 35 | 36 | @Override 37 | public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemSlot, boolean isSelected) 38 | { 39 | super.inventoryTick(stack, world, entity, itemSlot, isSelected); 40 | if (!world.isClientSide && !stack.hasTag() && entity instanceof Player) 41 | { 42 | UUID id = UUID.randomUUID(); 43 | API.instance().getStorageDiskManager((ServerLevel)world).set(id, API.instance().createDefaultFluidDisk((ServerLevel)world, this.getCapacity(stack), (Player)entity)); 44 | API.instance().getStorageDiskManager((ServerLevel)world).markForSaving(); 45 | this.setId(stack, id); 46 | } 47 | } 48 | 49 | @Override 50 | public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable Level level, List tooltip, TooltipFlag flag) 51 | { 52 | super.appendHoverText(stack, level, tooltip, flag); 53 | if (isValid(stack)) 54 | { 55 | UUID id = getId(stack); 56 | 57 | API.instance().getStorageDiskSync().sendRequest(id); 58 | 59 | StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); 60 | 61 | if (data != null) 62 | { 63 | if (data.getCapacity() == -1) 64 | { 65 | tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); 66 | } else 67 | { 68 | tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); 69 | } 70 | } 71 | if (flag.isAdvanced()) 72 | { 73 | tooltip.add(new TextComponent(id.toString())); 74 | } 75 | } 76 | } 77 | 78 | 79 | @Override 80 | public int getEntityLifespan(ItemStack stack, Level world) 81 | { 82 | return 2147483647; 83 | } 84 | 85 | @Override 86 | public UUID getId(ItemStack disk) 87 | { 88 | return disk.getTag().getUUID(NBT_ID); 89 | } 90 | 91 | @Override 92 | public void setId(ItemStack disk, UUID id) 93 | { 94 | disk.setTag(new CompoundTag()); 95 | disk.getTag().putUUID(NBT_ID, id); 96 | } 97 | 98 | @Override 99 | public boolean isValid(ItemStack disk) 100 | { 101 | return disk.hasTag() && disk.getTag().hasUUID(NBT_ID); 102 | } 103 | 104 | @Override 105 | public int getCapacity(ItemStack disk) 106 | { 107 | return this.capacity; 108 | } 109 | 110 | @Override 111 | public StorageType getType() 112 | { 113 | return StorageType.FLUID; 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/items/ItemRebornStorageCell.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.items; 2 | 3 | import com.refinedmods.refinedstorage.api.storage.StorageType; 4 | import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider; 5 | import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; 6 | import com.refinedmods.refinedstorage.apiimpl.API; 7 | import com.refinedmods.refinedstorage.render.Styles; 8 | import net.gigabit101.rebornstorage.client.CreativeTabRebornStorage; 9 | import net.minecraft.nbt.CompoundTag; 10 | import net.minecraft.network.chat.TextComponent; 11 | import net.minecraft.network.chat.TranslatableComponent; 12 | import net.minecraft.server.level.ServerLevel; 13 | import net.minecraft.world.entity.Entity; 14 | import net.minecraft.world.entity.player.Player; 15 | import net.minecraft.world.item.Item; 16 | import net.minecraft.world.item.ItemStack; 17 | import net.minecraft.world.item.TooltipFlag; 18 | import net.minecraft.world.level.Level; 19 | 20 | import java.util.List; 21 | import java.util.UUID; 22 | 23 | public class ItemRebornStorageCell extends Item implements IStorageDiskProvider 24 | { 25 | private static final String NBT_ID = "id"; 26 | 27 | private final int capacity; 28 | private final StorageType storageType; 29 | 30 | public ItemRebornStorageCell(int capacity, StorageType storageType) 31 | { 32 | super(new Item.Properties().tab(CreativeTabRebornStorage.INSTANCE).stacksTo(1)); 33 | this.capacity = capacity; 34 | this.storageType = storageType; 35 | } 36 | 37 | @Override 38 | public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemSlot, boolean isSelected) 39 | { 40 | super.inventoryTick(stack, world, entity, itemSlot, isSelected); 41 | if (!world.isClientSide && !stack.hasTag() && entity instanceof Player) 42 | { 43 | UUID id = UUID.randomUUID(); 44 | API.instance().getStorageDiskManager((ServerLevel) world).set(id, API.instance().createDefaultItemDisk((ServerLevel) world, getCapacity(stack), (Player) entity)); 45 | API.instance().getStorageDiskManager((ServerLevel) world).markForSaving(); 46 | setId(stack, id); 47 | } 48 | } 49 | 50 | @Override 51 | public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable Level level, List tooltip, TooltipFlag flag) 52 | { 53 | super.appendHoverText(stack, level, tooltip, flag); 54 | if (isValid(stack)) 55 | { 56 | UUID id = getId(stack); 57 | 58 | API.instance().getStorageDiskSync().sendRequest(id); 59 | 60 | StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); 61 | 62 | if (data != null) 63 | { 64 | if (data.getCapacity() == -1) 65 | { 66 | tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); 67 | } else 68 | { 69 | tooltip.add(new TranslatableComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); 70 | } 71 | } 72 | if (flag.isAdvanced()) 73 | { 74 | tooltip.add(new TextComponent(id.toString())); 75 | } 76 | } 77 | } 78 | 79 | 80 | @Override 81 | public int getEntityLifespan(ItemStack stack, Level world) 82 | { 83 | return Integer.MAX_VALUE; 84 | } 85 | 86 | @Override 87 | public UUID getId(ItemStack disk) 88 | { 89 | return disk.getTag().getUUID(NBT_ID); 90 | } 91 | 92 | @Override 93 | public void setId(ItemStack disk, UUID id) 94 | { 95 | disk.setTag(new CompoundTag()); 96 | disk.getTag().putUUID(NBT_ID, id); 97 | } 98 | 99 | @Override 100 | public boolean isValid(ItemStack disk) 101 | { 102 | return disk.hasTag() && disk.getTag().hasUUID(NBT_ID); 103 | } 104 | 105 | @Override 106 | public int getCapacity(ItemStack disk) 107 | { 108 | return this.capacity; 109 | } 110 | 111 | @Override 112 | public StorageType getType() 113 | { 114 | return storageType; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/items/ItemWirelessGrid.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.items; 2 | 3 | import com.refinedmods.refinedstorage.api.network.item.INetworkItem; 4 | import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; 5 | import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; 6 | import com.refinedmods.refinedstorage.item.NetworkItem; 7 | import net.gigabit101.rebornstorage.grid.crafting.WirelessCraftingGridNetworkItem; 8 | import net.gigabit101.rebornstorage.grid.monitor.WirelessCraftingMonitorNetworkItemExt; 9 | import net.gigabit101.rebornstorage.grid.fluid.WirelessFluidGridNetworkItemExt; 10 | import net.minecraft.ChatFormatting; 11 | import net.minecraft.nbt.CompoundTag; 12 | import net.minecraft.network.chat.Component; 13 | import net.minecraft.network.chat.TextComponent; 14 | import net.minecraft.world.InteractionHand; 15 | import net.minecraft.world.InteractionResultHolder; 16 | import net.minecraft.world.entity.player.Player; 17 | import net.minecraft.world.item.ItemStack; 18 | import net.minecraft.world.item.TooltipFlag; 19 | import net.minecraft.world.level.Level; 20 | import org.jetbrains.annotations.NotNull; 21 | import org.jetbrains.annotations.Nullable; 22 | 23 | import java.util.List; 24 | import java.util.function.Supplier; 25 | 26 | public class ItemWirelessGrid extends NetworkItem 27 | { 28 | public enum Type 29 | { 30 | NORMAL, 31 | CREATIVE; 32 | } 33 | 34 | Type type; 35 | 36 | public ItemWirelessGrid(Properties item, Type type, Supplier energyCapacity) 37 | { 38 | super(item, type == Type.CREATIVE, energyCapacity); 39 | this.type = type; 40 | } 41 | 42 | @Override 43 | public InteractionResultHolder use(Level level, Player player, InteractionHand hand) 44 | { 45 | if(player.isCrouching()) 46 | { 47 | ItemStack stack = player.getItemInHand(hand); 48 | MODE current = getMode(stack); 49 | switch (current) 50 | { 51 | case CRAFTING: 52 | setMode(stack, MODE.FLUID); 53 | player.displayClientMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + MODE.FLUID.name()), true); 54 | return InteractionResultHolder.success(stack); 55 | case FLUID: 56 | setMode(stack, MODE.MONITOR); 57 | player.displayClientMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + MODE.MONITOR.name()), true); 58 | return InteractionResultHolder.success(stack); 59 | case MONITOR: 60 | setMode(stack, MODE.CRAFTING); 61 | player.displayClientMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + MODE.CRAFTING.name()), true); 62 | return InteractionResultHolder.success(stack); 63 | } 64 | } 65 | return super.use(level, player, hand); 66 | } 67 | 68 | public Type getType() 69 | { 70 | return type; 71 | } 72 | 73 | public void setMode(ItemStack stack, MODE mode) 74 | { 75 | CompoundTag tag = stack.getOrCreateTag(); 76 | tag.putString("mode", mode.name()); 77 | } 78 | 79 | public MODE getMode(ItemStack stack) 80 | { 81 | CompoundTag compoundTag = stack.getOrCreateTag(); 82 | if(compoundTag.contains("mode")) 83 | { 84 | return MODE.valueOf(compoundTag.getString("mode")); 85 | } 86 | return MODE.CRAFTING; 87 | } 88 | 89 | @NotNull 90 | @Override 91 | public INetworkItem provide(INetworkItemManager iNetworkItemManager, Player player, ItemStack itemStack, PlayerSlot playerSlot) 92 | { 93 | switch (getMode(itemStack)) 94 | { 95 | case CRAFTING: 96 | return new WirelessCraftingGridNetworkItem(iNetworkItemManager, player, itemStack, playerSlot); 97 | case FLUID: 98 | return new WirelessFluidGridNetworkItemExt(iNetworkItemManager, player, itemStack, playerSlot); 99 | case MONITOR: 100 | return new WirelessCraftingMonitorNetworkItemExt(iNetworkItemManager, player, itemStack, playerSlot); 101 | 102 | } 103 | return new WirelessCraftingGridNetworkItem(iNetworkItemManager, player, itemStack, playerSlot); 104 | } 105 | 106 | @Override 107 | public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltip, TooltipFlag flag) 108 | { 109 | super.appendHoverText(stack, level, tooltip, flag); 110 | try 111 | { 112 | tooltip.add(new TextComponent(ChatFormatting.GOLD + "MODE: " + getMode(stack))); 113 | 114 | } catch (Exception e) 115 | { 116 | e.printStackTrace(); 117 | } 118 | } 119 | 120 | public enum MODE 121 | { 122 | CRAFTING, 123 | FLUID, 124 | MONITOR 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/multiblocks/MultiBlockCrafter.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.multiblocks; 2 | 3 | import net.gigabit101.rebornstorage.RebornStorage; 4 | import net.gigabit101.rebornstorage.RebornStorageConfig; 5 | import net.gigabit101.rebornstorage.blockentities.BlockEntityMultiCrafter; 6 | import net.gigabit101.rebornstorage.core.multiblock.IMultiblockPart; 7 | import net.gigabit101.rebornstorage.core.multiblock.MultiblockControllerBase; 8 | import net.gigabit101.rebornstorage.core.multiblock.rectangular.RectangularMultiblockControllerBase; 9 | import net.gigabit101.rebornstorage.init.ModBlocks; 10 | import net.minecraft.nbt.CompoundTag; 11 | import net.minecraft.world.level.Level; 12 | import net.minecraftforge.items.ItemStackHandler; 13 | 14 | import java.util.Map; 15 | import java.util.Optional; 16 | import java.util.TreeMap; 17 | 18 | public class MultiBlockCrafter extends RectangularMultiblockControllerBase 19 | { 20 | public Map invs = new TreeMap<>(); 21 | public int speed = 0; 22 | public int pages = 0; 23 | public Level level; 24 | public int currentPage = 1; 25 | 26 | public MultiBlockCrafter(Level world) 27 | { 28 | super(world); 29 | this.level = world; 30 | } 31 | 32 | @Override 33 | public void onAttachedPartWithMultiblockData(IMultiblockPart iMultiblockPart, CompoundTag nbtTagCompound) 34 | { 35 | readFromNBT(nbtTagCompound); 36 | } 37 | 38 | @Override 39 | public void onBlockAdded(IMultiblockPart iMultiblockPart) 40 | { 41 | } 42 | 43 | @Override 44 | public void onBlockRemoved(IMultiblockPart iMultiblockPart) 45 | { 46 | } 47 | 48 | @Override 49 | public void onMachineAssembled() 50 | { 51 | updateInfo("machineAssembled"); 52 | } 53 | 54 | public void updateInfo(String reason) 55 | { 56 | RebornStorage.logger.info("Rebuilding Multiblock Crafter due to " + reason); 57 | speed = 0; 58 | pages = 0; 59 | TreeMap collector = new TreeMap<>(); 60 | int append = 2745; 61 | /* we need to collect all storages first and assign ids after every storage is known 62 | * also we need them to be sorted ... so a treemap. 'append' is explained later 63 | */ 64 | for (IMultiblockPart part : connectedParts) 65 | { 66 | if (part.getBlockState().getBlock() == ModBlocks.BLOCK_MULTI_STORAGE.get()) 67 | { 68 | pages++; 69 | BlockEntityMultiCrafter tile = (BlockEntityMultiCrafter) part; 70 | tile.getNode().rebuildPatterns(reason); 71 | if (tile.page.isPresent()) 72 | { 73 | collector.put(tile.page.get(), tile); 74 | } else 75 | { 76 | collector.put(append++, tile); 77 | } 78 | } 79 | if (part.getBlockState().getBlock() == ModBlocks.BLOCK_MULTI_CPU.get()) 80 | { 81 | speed++; 82 | } 83 | } 84 | 85 | int newid = 0; 86 | for (BlockEntityMultiCrafter tile : collector.values()) 87 | { 88 | newid++; 89 | tile.page = Optional.of(newid); 90 | invs.put(newid, tile.getNode().patterns); 91 | } 92 | } 93 | 94 | public ItemStackHandler getInvForPage(int page) 95 | { 96 | return invs.get(page); 97 | } 98 | 99 | @Override 100 | protected void onMachineRestored() 101 | { 102 | updateInfo("machine rebuilt"); 103 | } 104 | 105 | @Override 106 | protected void onMachinePaused() 107 | { 108 | } 109 | 110 | @Override 111 | protected void onMachineDisassembled() 112 | { 113 | for (IMultiblockPart part : connectedParts) 114 | { 115 | BlockEntityMultiCrafter tile = (BlockEntityMultiCrafter) part; 116 | tile.getNode().rebuildPatterns("machine disassembled"); 117 | tile.getNode().invalidate(); 118 | } 119 | } 120 | 121 | @Override 122 | protected int getMinimumNumberOfBlocksForAssembledMachine() 123 | { 124 | return (9 * 3); 125 | } 126 | 127 | @Override 128 | protected int getMaximumXSize() 129 | { 130 | return RebornStorageConfig.MULTIBLOCK_MAX_XSIZE.get(); 131 | } 132 | 133 | @Override 134 | protected int getMaximumZSize() 135 | { 136 | return RebornStorageConfig.MULTIBLOCK_MAX_ZSIZE.get(); 137 | } 138 | 139 | @Override 140 | protected int getMaximumYSize() 141 | { 142 | return RebornStorageConfig.MULTIBLOCK_MAX_YSIZE.get(); 143 | } 144 | 145 | @Override 146 | protected int getMinimumXSize() 147 | { 148 | return RebornStorageConfig.MULTIBLOCK_MIN_XSIZE.get(); 149 | } 150 | 151 | @Override 152 | protected int getMinimumYSize() 153 | { 154 | return RebornStorageConfig.MULTIBLOCK_MIN_YSIZE.get(); 155 | } 156 | 157 | @Override 158 | protected int getMinimumZSize() 159 | { 160 | return RebornStorageConfig.MULTIBLOCK_MIN_ZSIZE.get(); 161 | } 162 | 163 | @Override 164 | protected void onAssimilate(MultiblockControllerBase multiblockControllerBase) 165 | { 166 | } 167 | 168 | @Override 169 | protected void onAssimilated(MultiblockControllerBase multiblockControllerBase) 170 | { 171 | } 172 | 173 | @Override 174 | protected boolean updateServer() 175 | { 176 | return true; 177 | } 178 | 179 | @Override 180 | public void updateClient() 181 | { 182 | } 183 | 184 | @Override 185 | public void writeToNBT(CompoundTag nbtTagCompound) 186 | { 187 | nbtTagCompound.putInt("currentpage", currentPage); 188 | } 189 | 190 | @Override 191 | public void readFromNBT(CompoundTag nbtTagCompound) 192 | { 193 | currentPage = nbtTagCompound.getInt("currentpage"); 194 | } 195 | 196 | @Override 197 | public void formatDescriptionPacket(CompoundTag nbtTagCompound) 198 | { 199 | writeToNBT(nbtTagCompound); 200 | } 201 | 202 | @Override 203 | public void decodeDescriptionPacket(CompoundTag nbtTagCompound) 204 | { 205 | readFromNBT(nbtTagCompound); 206 | } 207 | } 208 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/nodes/AdvancedWirelessTransmitterNode.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.nodes; 2 | 3 | import com.refinedmods.refinedstorage.RS; 4 | import com.refinedmods.refinedstorage.api.network.IWirelessTransmitter; 5 | import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; 6 | import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; 7 | import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; 8 | import com.refinedmods.refinedstorage.item.UpgradeItem; 9 | import com.refinedmods.refinedstorage.util.StackUtils; 10 | import net.gigabit101.rebornstorage.Constants; 11 | import net.gigabit101.rebornstorage.RebornStorageConfig; 12 | import net.minecraft.core.BlockPos; 13 | import net.minecraft.core.Direction; 14 | import net.minecraft.nbt.CompoundTag; 15 | import net.minecraft.resources.ResourceKey; 16 | import net.minecraft.resources.ResourceLocation; 17 | import net.minecraft.world.level.Level; 18 | import net.minecraftforge.items.IItemHandler; 19 | import org.jetbrains.annotations.Nullable; 20 | 21 | public class AdvancedWirelessTransmitterNode extends NetworkNode implements IWirelessTransmitter 22 | { 23 | public static final ResourceLocation ID = new ResourceLocation(Constants.MOD_ID, "advanced_wireless_transmitter"); 24 | private final UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.RANGE).addListener(new NetworkNodeInventoryListener(this)); 25 | 26 | public AdvancedWirelessTransmitterNode(Level level, BlockPos pos) 27 | { 28 | super(level, pos); 29 | } 30 | 31 | @Override 32 | public int getRange() 33 | { 34 | return RebornStorageConfig.ADVANCED_WIRELESS_TRANSMITTER_RANGE.get() + this.upgrades.getUpgradeCount(UpgradeItem.Type.RANGE) * RebornStorageConfig.ADVANCED_WIRELESS_RAGE_BOOSTER_RANGE.get(); 35 | } 36 | 37 | @Override 38 | public BlockPos getOrigin() 39 | { 40 | return this.pos; 41 | } 42 | 43 | @Override 44 | public ResourceKey getDimension() 45 | { 46 | return this.level.dimension(); 47 | } 48 | 49 | @Override 50 | public int getEnergyUsage() 51 | { 52 | return RebornStorageConfig.ADVANCED_WIRELESS_TRANSMITTER_POWER_COST.get(); 53 | } 54 | 55 | @Override 56 | public boolean canConduct(Direction direction) 57 | { 58 | return this.getDirection() == direction; 59 | } 60 | 61 | @Override 62 | public void visit(Operator operator) 63 | { 64 | operator.apply(this.level, this.pos.relative(Direction.DOWN), Direction.UP); 65 | } 66 | 67 | @Override 68 | public ResourceLocation getId() 69 | { 70 | return ID; 71 | } 72 | 73 | @Override 74 | public void read(CompoundTag tag) 75 | { 76 | super.read(tag); 77 | StackUtils.readItems(upgrades, 0, tag); 78 | } 79 | 80 | @Override 81 | public CompoundTag write(CompoundTag tag) 82 | { 83 | super.write(tag); 84 | StackUtils.writeItems(upgrades, 0, tag); 85 | return tag; 86 | } 87 | 88 | public UpgradeItemHandler getUpgrades() 89 | { 90 | return upgrades; 91 | } 92 | 93 | @Nullable 94 | @Override 95 | public IItemHandler getDrops() 96 | { 97 | return getUpgrades(); 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/packet/PacketChangeMode.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.packet; 2 | 3 | import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration; 4 | import net.gigabit101.rebornstorage.init.ModItems; 5 | import net.gigabit101.rebornstorage.items.ItemWirelessGrid; 6 | import net.minecraft.ChatFormatting; 7 | import net.minecraft.Util; 8 | import net.minecraft.network.FriendlyByteBuf; 9 | import net.minecraft.network.chat.TextComponent; 10 | import net.minecraft.server.level.ServerPlayer; 11 | import net.minecraft.world.Container; 12 | import net.minecraft.world.entity.player.Player; 13 | import net.minecraft.world.item.Item; 14 | import net.minecraft.world.item.ItemStack; 15 | import net.minecraftforge.network.NetworkEvent; 16 | import org.apache.commons.lang3.tuple.ImmutableTriple; 17 | import top.theillusivec4.curios.api.CuriosApi; 18 | 19 | import java.util.Arrays; 20 | import java.util.HashSet; 21 | import java.util.Optional; 22 | import java.util.Set; 23 | import java.util.function.Supplier; 24 | 25 | public class PacketChangeMode 26 | { 27 | public PacketChangeMode() {} 28 | 29 | public static void encode(PacketChangeMode packetGui, FriendlyByteBuf buf) {} 30 | 31 | public static PacketChangeMode decode(FriendlyByteBuf buf) 32 | { 33 | return new PacketChangeMode(); 34 | } 35 | 36 | public static class Handler 37 | { 38 | public static void handle(final PacketChangeMode message, Supplier ctx) 39 | { 40 | Set validItems = new HashSet(Arrays.asList(ModItems.WIRELESS_GRID.get(), ModItems.CREATIVE_WIRELESS_GRID.get())); 41 | 42 | ctx.get().enqueueWork(() -> 43 | { 44 | ServerPlayer player = ctx.get().getSender(); 45 | if (player == null) return; 46 | Container inv = player.getInventory(); 47 | int slotFound = -1; 48 | 49 | //Loop the players inventory looking for our item 50 | for(int i = 0; i < inv.getContainerSize(); ++i) 51 | { 52 | ItemStack slot = inv.getItem(i); 53 | if (validItems.contains(slot.getItem())) 54 | { 55 | if (slotFound != -1) { 56 | return; 57 | } 58 | slotFound = i; 59 | } 60 | } 61 | 62 | //If we don't find our stack and Curio is loaded look in the curio slots 63 | if (CuriosIntegration.isLoaded() && slotFound == -1) 64 | { 65 | Optional> curio = CuriosApi.getCuriosHelper().findEquippedCurio((stack) -> validItems.contains(stack.getItem()), player); 66 | if (curio.isPresent()) 67 | { 68 | //if we find our stack update its nbt/mode 69 | updateStack(curio.get().getRight(), player); 70 | return; 71 | } 72 | } 73 | if (slotFound != -1) 74 | { 75 | //If we find our stack before Curio update this stack 76 | updateStack(player.getInventory().getItem(slotFound), player); 77 | } 78 | 79 | }); 80 | ctx.get().setPacketHandled(true); 81 | } 82 | } 83 | 84 | public static void updateStack(ItemStack stack, Player player) 85 | { 86 | if (player.level.isClientSide) 87 | return; 88 | if(stack.getItem() instanceof ItemWirelessGrid itemWirelessGrid) 89 | { 90 | ItemWirelessGrid.MODE current = itemWirelessGrid.getMode(stack); 91 | switch (current) 92 | { 93 | case CRAFTING: 94 | itemWirelessGrid.setMode(stack, ItemWirelessGrid.MODE.FLUID); 95 | player.sendMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + ItemWirelessGrid.MODE.FLUID.name()), Util.NIL_UUID); 96 | break; 97 | case FLUID: 98 | itemWirelessGrid.setMode(stack, ItemWirelessGrid.MODE.MONITOR); 99 | player.sendMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + ItemWirelessGrid.MODE.MONITOR.name()), Util.NIL_UUID); 100 | break; 101 | case MONITOR: 102 | itemWirelessGrid.setMode(stack, ItemWirelessGrid.MODE.CRAFTING); 103 | player.sendMessage(new TextComponent(ChatFormatting.GOLD + "MODE: " + ItemWirelessGrid.MODE.CRAFTING.name()), Util.NIL_UUID); 104 | break; 105 | } 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/packet/PacketGui.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.packet; 2 | 3 | import net.gigabit101.rebornstorage.blockentities.BlockEntityMultiCrafter; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.network.FriendlyByteBuf; 6 | import net.minecraft.server.level.ServerPlayer; 7 | import net.minecraft.world.MenuProvider; 8 | import net.minecraft.world.entity.player.Player; 9 | import net.minecraft.world.level.Level; 10 | import net.minecraft.world.level.block.entity.BlockEntity; 11 | import net.minecraftforge.network.NetworkEvent; 12 | import net.minecraftforge.network.NetworkHooks; 13 | 14 | import java.util.function.Supplier; 15 | 16 | public class PacketGui 17 | { 18 | private final int page; 19 | private final BlockPos blockPos; 20 | 21 | public PacketGui(int page, BlockPos blockPos) 22 | { 23 | this.page = page; 24 | this.blockPos = blockPos; 25 | } 26 | 27 | public static void encode(PacketGui packetGui, FriendlyByteBuf buf) 28 | { 29 | buf.writeInt(packetGui.page); 30 | buf.writeBlockPos(packetGui.blockPos); 31 | } 32 | 33 | public static PacketGui decode(FriendlyByteBuf buf) 34 | { 35 | return new PacketGui(buf.readInt(), buf.readBlockPos()); 36 | } 37 | 38 | public static class Handler 39 | { 40 | public static void handle(final PacketGui message, Supplier ctx) 41 | { 42 | ctx.get().enqueueWork(() -> 43 | { 44 | ServerPlayer player = ctx.get().getSender(); 45 | if (player == null) return; 46 | 47 | BlockEntity blockEntity = player.getLevel().getBlockEntity(message.blockPos); 48 | if (blockEntity != null && blockEntity instanceof BlockEntityMultiCrafter blockEntityMultiCrafter && blockEntityMultiCrafter.getMultiBlock().isAssembled()) 49 | { 50 | if(message.page > 0) 51 | { 52 | blockEntityMultiCrafter.getMultiBlock().currentPage = message.page; 53 | blockEntityMultiCrafter.setChanged(); 54 | } 55 | } 56 | openGUI(player.getLevel(), player, message.blockPos); 57 | }); 58 | ctx.get().setPacketHandled(true); 59 | } 60 | 61 | public static void openGUI(Level world, Player player, BlockPos blockPos) 62 | { 63 | NetworkHooks.openGui((ServerPlayer) player, (MenuProvider) world.getBlockEntity(blockPos), blockPos); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/net/gigabit101/rebornstorage/packet/PacketHandler.java: -------------------------------------------------------------------------------- 1 | package net.gigabit101.rebornstorage.packet; 2 | 3 | import net.gigabit101.rebornstorage.Constants; 4 | import net.minecraft.resources.ResourceLocation; 5 | import net.minecraft.server.level.ServerPlayer; 6 | import net.minecraftforge.common.util.FakePlayer; 7 | import net.minecraftforge.network.NetworkDirection; 8 | import net.minecraftforge.network.NetworkRegistry; 9 | import net.minecraftforge.network.simple.SimpleChannel; 10 | 11 | public class PacketHandler 12 | { 13 | private static final String PROTOCOL_VERSION = Integer.toString(1); 14 | private static final SimpleChannel HANDLER = NetworkRegistry.ChannelBuilder.named(new ResourceLocation(Constants.MOD_ID, "main_channel")).clientAcceptedVersions(PROTOCOL_VERSION::equals).serverAcceptedVersions(PROTOCOL_VERSION::equals).networkProtocolVersion(() -> PROTOCOL_VERSION).simpleChannel(); 15 | 16 | public static void register() 17 | { 18 | int disc = 0; 19 | HANDLER.registerMessage(disc++, PacketGui.class, PacketGui::encode, PacketGui::decode, PacketGui.Handler::handle); 20 | HANDLER.registerMessage(disc++, PacketChangeMode.class, PacketChangeMode::encode, PacketChangeMode::decode, PacketChangeMode.Handler::handle); 21 | } 22 | 23 | public static void sendTo(Object msg, ServerPlayer player) 24 | { 25 | if (!(player instanceof FakePlayer)) 26 | { 27 | HANDLER.sendTo(msg, player.connection.connection, NetworkDirection.PLAY_TO_CLIENT); 28 | } 29 | } 30 | 31 | public static void sendToServer(Object msg) 32 | { 33 | HANDLER.sendToServer(msg); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/mods.toml: -------------------------------------------------------------------------------- 1 | modLoader = "javafml" #mandatory 2 | loaderVersion = "[40,]" #mandatory 3 | license = "MIT License" 4 | credits = "" #optional 5 | authors = "gigabit101" #optional 6 | [[mods]] #mandatory 7 | modId = "rebornstorage" #mandatory 8 | version = "${file.jarVersion}" #mandatory 9 | displayName = "RebornStorage" #mandatory 10 | description = ''' A large multiblock that can store all of your crafting patterns in one place 11 | ''' 12 | 13 | [[dependencies.rebornstorage]] 14 | modId = "minecraft" 15 | mandatory = true 16 | versionRange = "[1.18.2]" 17 | ordering = "NONE" 18 | side = "BOTH" 19 | 20 | [[dependencies.rebornstorage]] 21 | modId = "refinedstorage" 22 | mandatory = true 23 | versionRange = "[1.10.2,)" 24 | ordering = "AFTER" 25 | side = "BOTH" 26 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/blockstates/advanced_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "connected=false,direction=down": { 4 | "model": "rebornstorage:block/wireless_transmitter/disconnected" 5 | }, 6 | "connected=true,direction=down": { 7 | "model": "rebornstorage:block/wireless_transmitter/light_blue" 8 | }, 9 | "connected=false,direction=up": { 10 | "model": "rebornstorage:block/wireless_transmitter/disconnected", 11 | "x": 180 12 | }, 13 | "connected=true,direction=up": { 14 | "model": "rebornstorage:block/wireless_transmitter/light_blue", 15 | "x": 180 16 | }, 17 | "connected=false,direction=north": { 18 | "model": "rebornstorage:block/wireless_transmitter/disconnected", 19 | "x": 90, 20 | "y": 180 21 | }, 22 | "connected=true,direction=north": { 23 | "model": "rebornstorage:block/wireless_transmitter/light_blue", 24 | "x": 90, 25 | "y": 180 26 | }, 27 | "connected=false,direction=south": { 28 | "model": "rebornstorage:block/wireless_transmitter/disconnected", 29 | "x": 90 30 | }, 31 | "connected=true,direction=south": { 32 | "model": "rebornstorage:block/wireless_transmitter/light_blue", 33 | "x": 90 34 | }, 35 | "connected=false,direction=west": { 36 | "model": "rebornstorage:block/wireless_transmitter/disconnected", 37 | "x": 90, 38 | "y": 90 39 | }, 40 | "connected=true,direction=west": { 41 | "model": "rebornstorage:block/wireless_transmitter/light_blue", 42 | "x": 90, 43 | "y": 90 44 | }, 45 | "connected=false,direction=east": { 46 | "model": "rebornstorage:block/wireless_transmitter/disconnected", 47 | "x": 90, 48 | "y": 270 49 | }, 50 | "connected=true,direction=east": { 51 | "model": "rebornstorage:block/wireless_transmitter/light_blue", 52 | "x": 90, 53 | "y": 270 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/blockstates/multiblock_cpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "rebornstorage:block/multiblock_cpu" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/blockstates/multiblock_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": {"model": "rebornstorage:block/multiblock_frame"} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/blockstates/multiblock_heat.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "rebornstorage:block/multiblock_heat" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/blockstates/multiblock_storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "rebornstorage:block/multiblock_storage" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/lang/de_de.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemGroup.rebornstorage": "Reborn Storage", 3 | "item.rebornstorage.small_item_disk": "256k Speicherzelle", 4 | "item.rebornstorage.medium_item_disk": "1024k Speicherzelle", 5 | "item.rebornstorage.large_item_disk": "4096k Speicherzelle", 6 | "item.rebornstorage.larger_item_disk": "16384k Speicherzelle", 7 | "item.rebornstorage.small_fluid_disk": "256k Flüssigspeicherzelle", 8 | "item.rebornstorage.medium_fluid_disk": "1024k Flüssigspeicherzelle", 9 | "item.rebornstorage.large_fluid_disk": "4096k Flüssigspeicherzelle", 10 | "item.rebornstorage.larger_fluid_disk": "16384k Flüssigspeicherzelle", 11 | "item.rebornstorage.small_item_disk_part": "256k Speicherkern", 12 | "item.rebornstorage.medium_item_disk_part": "1024k Speicherkern", 13 | "item.rebornstorage.large_item_disk_part": "4096k Speicherkern", 14 | "item.rebornstorage.larger_item_disk_part": "16384k Speicherkern", 15 | "item.rebornstorage.small_fluid_disk_part": "256k Flüssigspeicherkern", 16 | "item.rebornstorage.medium_fluid_disk_part": "1024k Flüssigspeicherkern", 17 | "item.rebornstorage.large_fluid_disk_part": "4096k Flüssigspeicherkern", 18 | "item.rebornstorage.larger_fluid_disk_part": "16384k Flüssigspeicherkern", 19 | "block.rebornstorage.multiblock_cpu": "Herstellungs-CPU", 20 | "block.rebornstorage.multiblock_heat": "Wärmeleiter", 21 | "block.rebornstorage.multiblock_frame": "Herstellungsrahmen", 22 | "block.rebornstorage.multiblock_storage": "Herstellungsspeicher" 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/lang/en_us.json: -------------------------------------------------------------------------------- 1 | { 2 | "curios.identifier.grid": "Grid", 3 | "key.rebornstorage.openWirelessCraftingGrid": "Open Super Wireless Grid", 4 | "key.rebornstorage.switchModeWirelessCraftingGrid": "Switch Super Wireless Grid Mode", 5 | "itemGroup.rebornstorage": "Reborn Storage", 6 | "item.rebornstorage.small_item_disk": "256k Storage Disk", 7 | "item.rebornstorage.medium_item_disk": "1024k Storage Disk", 8 | "item.rebornstorage.large_item_disk": "4096k Storage Disk", 9 | "item.rebornstorage.larger_item_disk": "16384k Storage Disk", 10 | "item.rebornstorage.small_fluid_disk": "16384K Fluid Storage Disk", 11 | "item.rebornstorage.medium_fluid_disk": "65536K Fluid Storage Disk", 12 | "item.rebornstorage.large_fluid_disk": "262M Fluid Storage Disk", 13 | "item.rebornstorage.larger_fluid_disk": "1048M Fluid Storage Disk", 14 | "item.rebornstorage.small_item_disk_part": "256k Storage Part", 15 | "item.rebornstorage.medium_item_disk_part": "1024k Storage Part", 16 | "item.rebornstorage.large_item_disk_part": "4096k Storage Part", 17 | "item.rebornstorage.larger_item_disk_part": "16384k Storage Part", 18 | "item.rebornstorage.small_fluid_disk_part": "16384K Fluid Storage Part", 19 | "item.rebornstorage.medium_fluid_disk_part": "65536K Fluid Storage Part", 20 | "item.rebornstorage.large_fluid_disk_part": "262M Fluid Storage Part", 21 | "item.rebornstorage.larger_fluid_disk_part": "1048M Fluid Storage Part", 22 | "block.rebornstorage.multiblock_cpu": "Crafting CPU", 23 | "block.rebornstorage.multiblock_heat": "Heat Conductor", 24 | "block.rebornstorage.multiblock_frame": "Crafting Frame", 25 | "block.rebornstorage.multiblock_storage": "Crafting Storage", 26 | "block.rebornstorage.advanced_wireless_transmitter": "Advanced Wireless Transmitter", 27 | "gui.rebornstorage.advanced_wireless_transmitter": "Advanced Wireless Transmitter", 28 | "item.rebornstorage.super_wireless_crafting_grid": "Super Wireless Grid", 29 | "item.rebornstorage.creative_super_wireless_crafting_grid": "Creative Super Wireless Grid", 30 | "item.rebornstorage.raw_super_advanced_processor": "Raw Super Advanced Processor", 31 | "item.rebornstorage.super_advanced_processor": "Super Advanced Processor", 32 | "item.rebornstorage.rs_book": "Book of Reborn Storage", 33 | "info.rebornstorage.book.landing": "Welcome to Reborn Storage, you will find some things you need to know" 34 | } 35 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_cpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_cpu" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_frame" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_frame_left_right.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_frame_left_right" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_frame_up_down.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_frame_up_down" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_heat.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_heat" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/multiblock_storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "rebornstorage:blocks/multiblock_storage" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "credit": "Made with TheMattaBase", 3 | "parent": "block/cube", 4 | "ambientocclusion": false, 5 | "textures": { 6 | "particle": "rebornstorage:blocks/wireless_transmitter/wireless_transmitter", 7 | "torch": "rebornstorage:blocks/wireless_transmitter/wireless_transmitter", 8 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/blue" 9 | }, 10 | "elements": [ 11 | { 12 | "from": [7, 0, 7], 13 | "to": [9, 10, 9], 14 | "shade": false, 15 | "faces": { 16 | "up": {"uv": [7, 6, 9, 8], "texture": "#torch"}, 17 | "down": {"uv": [7, 13, 9, 15], "texture": "#torch"} 18 | } 19 | }, 20 | { 21 | "from": [7, 0, 0], 22 | "to": [9, 16, 16], 23 | "shade": false, 24 | "faces": { 25 | "east": {"uv": [0, 2, 16, 16], "texture": "#torch"}, 26 | "west": {"uv": [0, 2, 16, 16], "texture": "#torch"} 27 | } 28 | }, 29 | { 30 | "from": [0, 0, 7], 31 | "to": [16, 16, 9], 32 | "shade": false, 33 | "faces": { 34 | "north": {"uv": [0, 2, 16, 16], "texture": "#torch"}, 35 | "south": {"uv": [0, 2, 16, 16], "texture": "#torch"} 36 | } 37 | }, 38 | { 39 | "from": [7, 0, 7], 40 | "to": [9, 10, 9], 41 | "shade": false, 42 | "faces": { 43 | "up": {"uv": [7, 6, 9, 8], "texture": "#cutout"}, 44 | "down": {"uv": [7, 13, 9, 15], "texture": "#cutout"} 45 | } 46 | }, 47 | { 48 | "from": [7, 0, 0], 49 | "to": [9, 16, 16], 50 | "shade": false, 51 | "faces": { 52 | "east": {"uv": [0, 0, 16, 16], "texture": "#cutout"}, 53 | "west": {"uv": [0, 0, 16, 16], "texture": "#cutout"} 54 | } 55 | }, 56 | { 57 | "from": [0, 0, 7], 58 | "to": [16, 16, 9], 59 | "shade": false, 60 | "faces": { 61 | "north": {"uv": [0, 0, 16, 16], "texture": "#cutout"}, 62 | "south": {"uv": [0, 0, 16, 16], "texture": "#cutout"} 63 | } 64 | }, 65 | { 66 | "from": [6, 0, 6], 67 | "to": [10, 1, 7], 68 | "shade": false, 69 | "faces": { 70 | "north": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 71 | "east": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 72 | "south": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 73 | "west": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 74 | "up": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 75 | "down": {"uv": [8, 1, 12, 2], "texture": "#torch"} 76 | } 77 | }, 78 | { 79 | "from": [6, 0, 9], 80 | "to": [10, 1, 10], 81 | "shade": false, 82 | "faces": { 83 | "north": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 84 | "east": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 85 | "south": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 86 | "west": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 87 | "up": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 88 | "down": {"uv": [8, 1, 12, 2], "texture": "#torch"} 89 | } 90 | }, 91 | { 92 | "from": [6, 0, 7], 93 | "to": [7, 1, 9], 94 | "shade": false, 95 | "faces": { 96 | "north": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 97 | "east": {"uv": [8, 1, 10, 2], "texture": "#torch"}, 98 | "south": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 99 | "west": {"uv": [8, 1, 10, 2], "texture": "#torch"}, 100 | "up": {"uv": [8, 0, 9, 2], "texture": "#torch"}, 101 | "down": {"uv": [8, 0, 9, 2], "texture": "#torch"} 102 | } 103 | }, 104 | { 105 | "from": [9, 0, 7], 106 | "to": [10, 1, 9], 107 | "shade": false, 108 | "faces": { 109 | "north": {"uv": [8, 1, 9, 2], "texture": "#torch"}, 110 | "east": {"uv": [8, 1, 10, 2], "texture": "#torch"}, 111 | "south": {"uv": [8, 1, 12, 2], "texture": "#torch"}, 112 | "west": {"uv": [8, 1, 10, 2], "texture": "#torch"}, 113 | "up": {"uv": [8, 0, 9, 2], "texture": "#torch"}, 114 | "down": {"uv": [8, 0, 9, 2], "texture": "#torch"} 115 | } 116 | } 117 | ] 118 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/black.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/black" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/blue.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/blue" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/brown.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/brown" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/cyan.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/cyan" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/disconnected.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/disconnected" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/gray.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/gray" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/green.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/green" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/light_blue.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/light_blue" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/light_gray.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/light_gray" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/lime.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/lime" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/magenta.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/magenta" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/orange.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/orange" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/pink.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/pink" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/purple.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/purple" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/red.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/red" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/white.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/white" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/block/wireless_transmitter/yellow.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter", 3 | "textures": { 4 | "cutout": "rebornstorage:blocks/wireless_transmitter/cutouts/yellow" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/advanced_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "refinedstorage:block/wireless_transmitter/light_blue" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/black_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/black" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/blue_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/blue" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/brown_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/brown" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/creative_super_wireless_crafting_grid.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "refinedstorage:item/wireless_grid_disconnected" 5 | }, 6 | "overrides": [ 7 | { 8 | "predicate": { 9 | "connected": 0 10 | }, 11 | "model": "refinedstorage:item/wireless_grid_disconnected" 12 | }, 13 | { 14 | "predicate": { 15 | "connected": 1 16 | }, 17 | "model": "refinedstorage:item/wireless_grid_connected" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/cyan_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/cyan" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/green_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/green" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/large_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/large_fluid_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/large_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/large_fluid_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/large_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/large_item_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/large_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/large_item_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/larger_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/larger_fluid_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/larger_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/larger_fluid_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/larger_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/larger_item_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/larger_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/larger_item_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/light_gray_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/light_gray" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/lime_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/lime" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/medium_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/medium_fluid_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/medium_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/medium_fluid_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/medium_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/medium_item_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/medium_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/medium_item_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/multiblock_cpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/multiblock_cpu" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/multiblock_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/multiblock_frame" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/multiblock_heat.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/multiblock_heat" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/multiblock_storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/multiblock_storage" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/orange_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/orange" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/pink_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/pink" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/purple_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/purple" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/raw_super_advanced_processor.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/raw_super_advanced_processor" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/red_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/red" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/small_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/small_fluid_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/small_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/small_fluid_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/small_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/disks/small_item_disk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/small_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/parts/small_item_disk_part" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/super_advanced_processor.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "rebornstorage:items/super_advanced_processor" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/super_wireless_crafting_grid.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "refinedstorage:item/wireless_grid_disconnected" 5 | }, 6 | "overrides": [ 7 | { 8 | "predicate": { 9 | "connected": 0 10 | }, 11 | "model": "refinedstorage:item/wireless_grid_disconnected" 12 | }, 13 | { 14 | "predicate": { 15 | "connected": 1 16 | }, 17 | "model": "refinedstorage:item/wireless_grid_connected" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/white_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/white" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/wireless_transmitter/light_blue" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/models/item/yellow_network_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "rebornstorage:block/network_transmitter/yellow" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_cpu.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_frame.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_frame.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "ctm": { 3 | "ctm_version": 1, 4 | "type": "ctm", 5 | "layer": "CUTOUT", 6 | "textures": [ "rebornstorage:blocks/multiblock_frame_ctm" ] 7 | } 8 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_frame_ctm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_frame_ctm.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_heat.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_heat.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "ctm": { 3 | "ctm_version": 1, 4 | "type": "ctm", 5 | "layer": "CUTOUT", 6 | "textures": [ "rebornstorage:blocks/multiblock_heat_ctm" ] 7 | } 8 | } -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_heat_ctm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_heat_ctm.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/multiblock_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/multiblock_storage.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/black.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/blue.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/brown.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/cyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/cyan.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/disconnected.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/gray.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/green.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/light_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/light_blue.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/light_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/light_gray.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/lime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/lime.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/magenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/magenta.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/orange.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/pink.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/purple.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/red.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/white.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/cutouts/yellow.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/wireless_transmitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/blocks/wireless_transmitter/wireless_transmitter.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/gui/gui_sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/gui/gui_sheet.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/large_fluid_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/large_fluid_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/large_item_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/large_item_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/larger_fluid_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/larger_fluid_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/larger_item_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/larger_item_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/medium_fluid_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/medium_fluid_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/medium_item_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/medium_item_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/small_fluid_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/small_fluid_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/disks/small_item_disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/disks/small_item_disk.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/grid.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/large_fluid_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/large_fluid_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/large_item_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/large_item_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/larger_fluid_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/larger_fluid_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/larger_item_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/larger_item_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/medium_fluid_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/medium_fluid_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/medium_item_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/medium_item_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/small_fluid_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/small_fluid_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/parts/small_item_disk_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/parts/small_item_disk_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/raw_super_advanced_processor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/raw_super_advanced_processor.png -------------------------------------------------------------------------------- /src/main/resources/assets/rebornstorage/textures/items/super_advanced_processor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechReborn/RebornStorage/fcbd0496e360ba370d1115910f6e6dd61d19ab52/src/main/resources/assets/rebornstorage/textures/items/super_advanced_processor.png -------------------------------------------------------------------------------- /src/main/resources/data/curios/tags/items/curio.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:super_wireless_crafting_grid", 5 | "rebornstorage:creative_super_wireless_crafting_grid" 6 | ] 7 | } -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/patchouli_books/rs_book/book.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "item.rebornstorage.rs_book", 3 | "landing_text": "rebornstorage.landing", 4 | "version": "1", 5 | "creative_tab": "rebornstorage" 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/patchouli_books/rs_book/en_us/categories/blocks.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Blocks", 3 | "description": "These are the blocks!", 4 | "icon": "rebornstorage:multiblock_frame" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/patchouli_books/rs_book/en_us/categories/multiblock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Multiblock Crafter", 3 | "description": "An overview of the Multiblock crafter", 4 | "icon": "rebornstorage:multiblock_cpu" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/patchouli_books/rs_book/en_us/entries/advanced_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Advanced Wireless Transmitter", 3 | "sortnum": 1, 4 | "category": "rebornstorage:blocks", 5 | "icon": "rebornstorage:advanced_wireless_transmitter", 6 | "pages": [ 7 | { 8 | "type": "patchouli:text", 9 | "text": "Wireless that goes real far (Warning can cause COVID)" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/patchouli_books/rs_book/en_us/entries/multiblock_crafter_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rebornstorage.entry.multiblock_crafter_template", 3 | "category": "rebornstorage:multiblock", 4 | "icon": "rebornstorage:multiblock_cpu", 5 | "pages": [ 6 | { 7 | "type": "multiblock", 8 | "name": "multiblock_crafter", 9 | "multiblock": { 10 | "pattern": [ 11 | ["FFFFF", "FTTTF", "FTTTF", "FTTTF", "FFFFF"], 12 | ["FTTTF", "TRRRT", "TRRRT", "TRRRT", "FTTTF"], 13 | ["FTTTF", "TRRRT", "TRRRT", "TRRRT", "FTTTF"], 14 | ["FTTTF", "TCCCT", "TCCCT", "TCCCT", "FTTTF"], 15 | ["FFFFF", "FTTTF", "FT0TF", "FTTTF", "FFFFF"] 16 | ], 17 | "mapping": { 18 | "0": "rebornstorage:multiblock_frame", 19 | "F": "rebornstorage:multiblock_frame", 20 | "T": "rebornstorage:multiblock_heat", 21 | "R": "#rebornstorage:multiblock_inner_base", 22 | "C": "#rebornstorage:multiblock_inner_base" 23 | }, 24 | "symmetrical": true 25 | } 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/advanced_wireless_transmitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "EPE", 5 | "EME", 6 | "EAE" 7 | ], 8 | "key": { 9 | "E": { 10 | "item": "refinedstorage:quartz_enriched_iron" 11 | }, 12 | "A": { 13 | "item": "rebornstorage:super_advanced_processor" 14 | }, 15 | "M": { 16 | "item": "refinedstorage:wireless_transmitter" 17 | }, 18 | "P": { 19 | "tag": "forge:ender_pearls" 20 | } 21 | }, 22 | "result": { 23 | "item": "rebornstorage:advanced_wireless_transmitter" 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/large_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/fluids/262144k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:large_fluid_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/large_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/items/4096k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:large_item_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/larger_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/fluids/1048576k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:larger_fluid_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/larger_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/items/16384k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:larger_item_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/medium_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/fluids/65536k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:medium_fluid_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/medium_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/items/1024k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:medium_item_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/small_fluid_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/fluids/16384k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:small_fluid_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/disks/small_item_disk.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "GRG", 5 | "RPR", 6 | "III" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "forge:glass" 12 | } 13 | ], 14 | "R": [ 15 | { 16 | "item": "minecraft:redstone" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "P": [ 25 | { 26 | "tag": "refinedstorage:parts/items/256k" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:small_item_disk" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/multiblock_cpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "FAF", 5 | "SCS", 6 | "FAF" 7 | ], 8 | "key": { 9 | "F": [ 10 | { 11 | "item": "rebornstorage:multiblock_frame" 12 | } 13 | ], 14 | "A": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "C": [ 20 | { 21 | "item": "minecraft:crafting_table" 22 | } 23 | ], 24 | "S": [ 25 | { 26 | "item": "refinedstorage:crafting_upgrade" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:multiblock_cpu" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/multiblock_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "MBM", 5 | "BSB", 6 | "MBM" 7 | ], 8 | "key": { 9 | "M": [ 10 | { 11 | "item": "refinedstorage:machine_casing" 12 | } 13 | ], 14 | "S": [ 15 | { 16 | "tag": "forge:silicon" 17 | } 18 | ], 19 | "B": [ 20 | { 21 | "item": "refinedstorage:improved_processor" 22 | } 23 | ] 24 | }, 25 | "result": { 26 | "item": "rebornstorage:multiblock_frame", 27 | "count": 6 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/multiblock_heat.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "FIF", 5 | "ISI", 6 | "FIF" 7 | ], 8 | "key": { 9 | "F": [ 10 | { 11 | "item": "rebornstorage:multiblock_frame" 12 | } 13 | ], 14 | "I": [ 15 | { 16 | "item": "refinedstorage:quartz_enriched_iron" 17 | } 18 | ], 19 | "S": [ 20 | { 21 | "tag": "forge:silicon" 22 | } 23 | ] 24 | }, 25 | "result": { 26 | "item": "rebornstorage:multiblock_heat" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/multiblock_storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "FCF", 5 | "SAS", 6 | "FSF" 7 | ], 8 | "key": { 9 | "F": [ 10 | { 11 | "item": "rebornstorage:multiblock_frame" 12 | } 13 | ], 14 | "C": [ 15 | { 16 | "item": "minecraft:chest" 17 | } 18 | ], 19 | "S": [ 20 | { 21 | "item": "refinedstorage:1k_storage_part" 22 | } 23 | ], 24 | "A": [ 25 | { 26 | "item": "refinedstorage:advanced_processor" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:multiblock_storage" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/large_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/fluids/65536k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:bucket" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:large_fluid_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/large_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/items/1024k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:redstone" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:large_item_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/larger_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/fluids/262144k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:bucket" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:larger_fluid_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/larger_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/items/4096k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:redstone" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:larger_item_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/medium_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/fluids/16384k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:bucket" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:medium_fluid_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/medium_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "tag": "refinedstorage:parts/items/256k" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:redstone" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:medium_item_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/raw_super_advanced_processor.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "ingredients": [ 4 | { 5 | "item": "refinedstorage:processor_binding" 6 | }, 7 | { 8 | "item": "minecraft:netherite_ingot" 9 | }, 10 | { 11 | "tag": "forge:silicon" 12 | }, 13 | { 14 | "item": "minecraft:redstone" 15 | } 16 | ], 17 | "result": { 18 | "item": "rebornstorage:raw_super_advanced_processor" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/small_fluid_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "item": "refinedstorage:4096k_fluid_storage_part" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:bucket" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:small_fluid_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/small_item_disk_part.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "DID", 5 | "GRG", 6 | "DGD" 7 | ], 8 | "key": { 9 | "G": [ 10 | { 11 | "item": "refinedstorage:64k_storage_part" 12 | } 13 | ], 14 | "D": [ 15 | { 16 | "item": "refinedstorage:advanced_processor" 17 | } 18 | ], 19 | "I": [ 20 | { 21 | "item": "refinedstorage:quartz_enriched_iron" 22 | } 23 | ], 24 | "R": [ 25 | { 26 | "item": "minecraft:redstone" 27 | } 28 | ] 29 | }, 30 | "result": { 31 | "item": "rebornstorage:small_item_disk_part" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/super_advanced_processor.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smelting", 3 | "ingredient": { 4 | "item": "rebornstorage:raw_super_advanced_processor" 5 | }, 6 | "result": "rebornstorage:super_advanced_processor", 7 | "experience": 0.5 8 | } -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/recipes/parts/super_wireless_crafting_grid.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "pattern": [ 4 | "EPE", 5 | "EGE", 6 | "EAE" 7 | ], 8 | "key": { 9 | "E": { 10 | "item": "refinedstorage:quartz_enriched_iron" 11 | }, 12 | "P": { 13 | "tag": "forge:ender_pearls" 14 | }, 15 | "G": { 16 | "item": "refinedstorage:wireless_grid" 17 | }, 18 | "A": { 19 | "item": "rebornstorage:super_advanced_processor" 20 | } 21 | }, 22 | "result": { 23 | "item": "rebornstorage:super_wireless_crafting_grid" 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/resources/data/rebornstorage/tags/blocks/multiblock_inner_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:multiblock_storage", 5 | "rebornstorage:multiblock_cpu" 6 | ] 7 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:disks/items", 5 | "#refinedstorage:disks/fluids" 6 | ] 7 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/fluids.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:disks/fluids/16384k", 5 | "#refinedstorage:disks/fluids/65536k", 6 | "#refinedstorage:disks/fluids/262144k", 7 | "#refinedstorage:disks/fluids/1048576k" 8 | ] 9 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/fluids/1048576k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:larger_fluid_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/fluids/16384k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:small_fluid_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/fluids/262144k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:large_fluid_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/fluids/65536k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:medium_fluid_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/items.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:disks/items/256k", 5 | "#refinedstorage:disks/items/1024k", 6 | "#refinedstorage:disks/items/4096k", 7 | "#refinedstorage:disks/items/16384k", 8 | "#refinedstorage:disks/items/65536k", 9 | "#refinedstorage:disks/items/262144k", 10 | "#refinedstorage:disks/items/1048576k" 11 | ] 12 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/items/1024k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:medium_item_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/items/16384k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:larger_item_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/items/256k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:small_item_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/disks/items/4096k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:large_item_disk" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:parts/items", 5 | "#refinedstorage:parts/fluids" 6 | ] 7 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/fluids.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:parts/fluids/16384k", 5 | "#refinedstorage:parts/fluids/65536k", 6 | "#refinedstorage:parts/fluids/262144k", 7 | "#refinedstorage:parts/fluids/1048576k" 8 | ] 9 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/fluids/1048576k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:larger_fluid_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/fluids/16384k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:small_fluid_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/fluids/262144k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:large_fluid_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/fluids/65536k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:medium_fluid_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/items.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "#refinedstorage:parts/items/256k", 5 | "#refinedstorage:parts/items/1024k", 6 | "#refinedstorage:parts/items/4096k", 7 | "#refinedstorage:parts/items/16384k", 8 | "#refinedstorage:parts/items/65536k", 9 | "#refinedstorage:parts/items/262144k", 10 | "#refinedstorage:parts/items/1048576k" 11 | ] 12 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/items/1024k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:medium_item_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/items/16384k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:larger_item_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/items/256k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:small_item_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/data/refinedstorage/tags/items/parts/items/4096k.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "rebornstorage:large_item_disk_part" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "rebornstorage resources", 4 | "pack_format": 9, 5 | "_comment": "rebornstorage's Resource pack" 6 | } 7 | } 8 | --------------------------------------------------------------------------------