diff --git a/build.gradle b/build.gradle index 47d67fca..0a36e096 100644 --- a/build.gradle +++ b/build.gradle @@ -24,9 +24,9 @@ libsDirName = "../output" distsDirName = "../output" def version_minor='4' -def version_revision='8' +def version_revision='9' def minecraft_version='1.18.2' -def version_build='11' +def version_build='0' def version_major='0' version = minecraft_version+'-'+version_major+'.'+version_minor+'.'+version_revision+'-'+version_build @@ -79,7 +79,7 @@ minecraft { // Recommended logging level for the console property 'forge.logging.console.level', 'debug' - args '--mod', 'nuclearscience', '--all', '--output', file('src/generated/resources/') + args '--mod', 'nuclearscience', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') mods { nuclearscience { @@ -90,18 +90,19 @@ minecraft { } } +sourceSets.main.resources { srcDir 'src/generated/resources' } + dependencies { - def Folder = new File("C:/AmpzLibz") - if(Folder.exists()) { - implementation fileTree(Folder) - } + def Folder2 = new File("libs") if(Folder2.exists()) { implementation fileTree(Folder2) } - minecraft 'net.minecraftforge:forge:1.18.2-40.1.73' - compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.1.232:api") - runtimeOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.1.232") + + minecraft 'net.minecraftforge:forge:1.18.2-40.2.14' + compileOnly fg.deobf("mezz.jei:jei-1.18.2-common-api:10.2.1.283") + compileOnly fg.deobf("mezz.jei:jei-1.18.2-forge-api:10.2.1.283") + runtimeOnly fg.deobf("mezz.jei:jei-1.18.2-forge:10.2.1.283") annotationProcessor 'org.spongepowered:mixin:0.8.4:processor' } @@ -153,15 +154,15 @@ publishing { This needs to stay. It's the Maven repository for JEI along with a fallback! */ repositories{ - mavenCentral() - maven { - name = "Progwml6 maven" - url = "https://dvs1.progwml6.com/files/maven/" - } - maven { - name = "ModMaven" - url = "https://modmaven.k-4u.nl" - } + mavenCentral() + maven { + name = "Progwml6 maven" + url = "https://dvs1.progwml6.com/files/maven/" + } + maven { + name = "ModMaven" + url = "https://modmaven.k-4u.nl" + } } tasks.curseforge.dependsOn jar diff --git a/gen_run_files.bat b/gen_run_files.bat new file mode 100644 index 00000000..ec074b5d --- /dev/null +++ b/gen_run_files.bat @@ -0,0 +1 @@ +gradlew genEclipse \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/atomicassembler.json b/src/generated/resources/assets/nuclearscience/blockstates/atomicassembler.json new file mode 100644 index 00000000..bdc03d94 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/atomicassembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/atomicassembler", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/atomicassembler", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/atomicassembler", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/atomicassembler" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/blocklead.json b/src/generated/resources/assets/nuclearscience/blockstates/blocklead.json similarity index 97% rename from src/main/resources/assets/nuclearscience/blockstates/blocklead.json rename to src/generated/resources/assets/nuclearscience/blockstates/blocklead.json index f68bb706..f6ceae38 100644 --- a/src/main/resources/assets/nuclearscience/blockstates/blocklead.json +++ b/src/generated/resources/assets/nuclearscience/blockstates/blocklead.json @@ -4,4 +4,4 @@ "model": "nuclearscience:block/blocklead" } } -} +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/chemicalextractor.json b/src/generated/resources/assets/nuclearscience/blockstates/chemicalextractor.json new file mode 100644 index 00000000..bcd3b5fc --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/chemicalextractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/chemicalextractor", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/chemicalextractor", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/chemicalextractor", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/chemicalextractor" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/controlrodassembly.json b/src/generated/resources/assets/nuclearscience/blockstates/controlrodassembly.json new file mode 100644 index 00000000..16a4e8db --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/controlrodassembly.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/controlrodassembly", + "y": 90 + }, + "facing=south": { + "model": "nuclearscience:block/controlrodassembly", + "y": 270 + }, + "facing=west": { + "model": "nuclearscience:block/controlrodassembly" + }, + "facing=east": { + "model": "nuclearscience:block/controlrodassembly", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/electromagnet.json b/src/generated/resources/assets/nuclearscience/blockstates/electromagnet.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/electromagnet.json rename to src/generated/resources/assets/nuclearscience/blockstates/electromagnet.json diff --git a/src/generated/resources/assets/nuclearscience/blockstates/electromagneticbooster.json b/src/generated/resources/assets/nuclearscience/blockstates/electromagneticbooster.json new file mode 100644 index 00000000..e9e4f63b --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/electromagneticbooster.json @@ -0,0 +1,49 @@ +{ + "variants": { + "facing=north,side=none": { + "model": "nuclearscience:block/electromagneticbooster" + }, + "facing=south,side=none": { + "model": "nuclearscience:block/electromagneticbooster", + "y": 180 + }, + "facing=west,side=none": { + "model": "nuclearscience:block/electromagneticbooster", + "y": 270 + }, + "facing=east,side=none": { + "model": "nuclearscience:block/electromagneticbooster", + "y": 90 + }, + "facing=north,side=left": { + "model": "nuclearscience:block/electromagneticboosterleft" + }, + "facing=south,side=left": { + "model": "nuclearscience:block/electromagneticboosterleft", + "y": 180 + }, + "facing=west,side=left": { + "model": "nuclearscience:block/electromagneticboosterleft", + "y": 270 + }, + "facing=east,side=left": { + "model": "nuclearscience:block/electromagneticboosterleft", + "y": 90 + }, + "facing=north,side=right": { + "model": "nuclearscience:block/electromagneticboosterright" + }, + "facing=south,side=right": { + "model": "nuclearscience:block/electromagneticboosterright", + "y": 180 + }, + "facing=west,side=right": { + "model": "nuclearscience:block/electromagneticboosterright", + "y": 270 + }, + "facing=east,side=right": { + "model": "nuclearscience:block/electromagneticboosterright", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/electromagneticglass.json b/src/generated/resources/assets/nuclearscience/blockstates/electromagneticglass.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/electromagneticglass.json rename to src/generated/resources/assets/nuclearscience/blockstates/electromagneticglass.json diff --git a/src/main/resources/assets/nuclearscience/blockstates/electromagneticswitch.json b/src/generated/resources/assets/nuclearscience/blockstates/electromagneticswitch.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/electromagneticswitch.json rename to src/generated/resources/assets/nuclearscience/blockstates/electromagneticswitch.json diff --git a/src/generated/resources/assets/nuclearscience/blockstates/freezeplug.json b/src/generated/resources/assets/nuclearscience/blockstates/freezeplug.json new file mode 100644 index 00000000..3d8fdfc0 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/freezeplug.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nuclearscience:block/freezeplug" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/fuelreprocessor.json b/src/generated/resources/assets/nuclearscience/blockstates/fuelreprocessor.json new file mode 100644 index 00000000..8b38c7d8 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/fuelreprocessor.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,lit=false": { + "model": "nuclearscience:block/fuelreprocessor", + "y": 270 + }, + "facing=south,lit=false": { + "model": "nuclearscience:block/fuelreprocessor", + "y": 90 + }, + "facing=west,lit=false": { + "model": "nuclearscience:block/fuelreprocessor", + "y": 180 + }, + "facing=east,lit=false": { + "model": "nuclearscience:block/fuelreprocessor" + }, + "facing=north,lit=true": { + "model": "nuclearscience:block/fuelreprocessoron", + "y": 270 + }, + "facing=south,lit=true": { + "model": "nuclearscience:block/fuelreprocessoron", + "y": 90 + }, + "facing=west,lit=true": { + "model": "nuclearscience:block/fuelreprocessoron", + "y": 180 + }, + "facing=east,lit=true": { + "model": "nuclearscience:block/fuelreprocessoron" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/fusionreactorcore.json b/src/generated/resources/assets/nuclearscience/blockstates/fusionreactorcore.json new file mode 100644 index 00000000..e0c20986 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/fusionreactorcore.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/fusionreactorcore", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/fusionreactorcore", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/fusionreactorcore", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/fusionreactorcore" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/gascentrifuge.json b/src/generated/resources/assets/nuclearscience/blockstates/gascentrifuge.json new file mode 100644 index 00000000..1f0e02bf --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/gascentrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/gascentrifugeoutline", + "y": 90 + }, + "facing=south": { + "model": "nuclearscience:block/gascentrifugeoutline", + "y": 270 + }, + "facing=west": { + "model": "nuclearscience:block/gascentrifugeoutline" + }, + "facing=east": { + "model": "nuclearscience:block/gascentrifugeoutline", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/heatexchanger.json b/src/generated/resources/assets/nuclearscience/blockstates/heatexchanger.json new file mode 100644 index 00000000..5899284b --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/heatexchanger.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/heatexchanger", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/heatexchanger", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/heatexchanger", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/heatexchanger" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/meltedreactor.json b/src/generated/resources/assets/nuclearscience/blockstates/meltedreactor.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/meltedreactor.json rename to src/generated/resources/assets/nuclearscience/blockstates/meltedreactor.json diff --git a/src/generated/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json b/src/generated/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json new file mode 100644 index 00000000..c36fc189 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json @@ -0,0 +1,108 @@ +{ + "multipart": [ + { + "when": { + "OR": [ + { + "up": "none" + }, + { + "down": "none" + }, + { + "north": "none" + }, + { + "east": "none" + }, + { + "south": "none" + }, + { + "west": "none" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_none" + } + }, + { + "when": { + "OR": [ + { + "up": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side", + "x": 270 + } + }, + { + "when": { + "OR": [ + { + "down": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side", + "x": 90 + } + }, + { + "when": { + "OR": [ + { + "north": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side" + } + }, + { + "when": { + "OR": [ + { + "east": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side", + "y": 90 + } + }, + { + "when": { + "OR": [ + { + "south": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side", + "y": 180 + } + }, + { + "when": { + "OR": [ + { + "west": "wire|inventory" + } + ] + }, + "apply": { + "model": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_side", + "y": 270 + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json b/src/generated/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json new file mode 100644 index 00000000..4725b64d --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,lit=false": { + "model": "nuclearscience:block/moltensaltsupplier", + "y": 270 + }, + "facing=south,lit=false": { + "model": "nuclearscience:block/moltensaltsupplier", + "y": 90 + }, + "facing=west,lit=false": { + "model": "nuclearscience:block/moltensaltsupplier", + "y": 180 + }, + "facing=east,lit=false": { + "model": "nuclearscience:block/moltensaltsupplier" + }, + "facing=north,lit=true": { + "model": "nuclearscience:block/moltensaltsupplieron", + "y": 270 + }, + "facing=south,lit=true": { + "model": "nuclearscience:block/moltensaltsupplieron", + "y": 90 + }, + "facing=west,lit=true": { + "model": "nuclearscience:block/moltensaltsupplieron", + "y": 180 + }, + "facing=east,lit=true": { + "model": "nuclearscience:block/moltensaltsupplieron" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json b/src/generated/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json new file mode 100644 index 00000000..dacf8d69 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/msrfuelpreprocessor", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/msrfuelpreprocessor", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/msrfuelpreprocessor", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/msrfuelpreprocessor" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/msrreactorcore.json b/src/generated/resources/assets/nuclearscience/blockstates/msrreactorcore.json new file mode 100644 index 00000000..b90ff343 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/msrreactorcore.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/msrreactorcore", + "y": 90 + }, + "facing=south": { + "model": "nuclearscience:block/msrreactorcore", + "y": 270 + }, + "facing=west": { + "model": "nuclearscience:block/msrreactorcore" + }, + "facing=east": { + "model": "nuclearscience:block/msrreactorcore", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/nuclearboiler.json b/src/generated/resources/assets/nuclearscience/blockstates/nuclearboiler.json new file mode 100644 index 00000000..fdaae71d --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/nuclearboiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/nuclearboiler", + "y": 90 + }, + "facing=south": { + "model": "nuclearscience:block/nuclearboiler", + "y": 270 + }, + "facing=west": { + "model": "nuclearscience:block/nuclearboiler" + }, + "facing=east": { + "model": "nuclearscience:block/nuclearboiler", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/particleinjector.json b/src/generated/resources/assets/nuclearscience/blockstates/particleinjector.json new file mode 100644 index 00000000..a7602f7c --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/particleinjector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/particleinjector", + "y": 90 + }, + "facing=south": { + "model": "nuclearscience:block/particleinjector", + "y": 270 + }, + "facing=west": { + "model": "nuclearscience:block/particleinjector" + }, + "facing=east": { + "model": "nuclearscience:block/particleinjector", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/plasma.json b/src/generated/resources/assets/nuclearscience/blockstates/plasma.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/plasma.json rename to src/generated/resources/assets/nuclearscience/blockstates/plasma.json diff --git a/src/generated/resources/assets/nuclearscience/blockstates/quantumcapacitor.json b/src/generated/resources/assets/nuclearscience/blockstates/quantumcapacitor.json new file mode 100644 index 00000000..3138e2a9 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/quantumcapacitor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/quantumcapacitor", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/quantumcapacitor", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/quantumcapacitor", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/quantumcapacitor" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/radioactiveair.json b/src/generated/resources/assets/nuclearscience/blockstates/radioactiveair.json new file mode 100644 index 00000000..8e942361 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/radioactiveair.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nuclearscience:block/radioactiveair" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json b/src/generated/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json new file mode 100644 index 00000000..5f5667b1 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,lit=false": { + "model": "nuclearscience:block/radioactiveprocessor", + "y": 270 + }, + "facing=south,lit=false": { + "model": "nuclearscience:block/radioactiveprocessor", + "y": 90 + }, + "facing=west,lit=false": { + "model": "nuclearscience:block/radioactiveprocessor", + "y": 180 + }, + "facing=east,lit=false": { + "model": "nuclearscience:block/radioactiveprocessor" + }, + "facing=north,lit=true": { + "model": "nuclearscience:block/radioactiveprocessoron", + "y": 270 + }, + "facing=south,lit=true": { + "model": "nuclearscience:block/radioactiveprocessoron", + "y": 90 + }, + "facing=west,lit=true": { + "model": "nuclearscience:block/radioactiveprocessoron", + "y": 180 + }, + "facing=east,lit=true": { + "model": "nuclearscience:block/radioactiveprocessoron" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/radioactivesoil.json b/src/generated/resources/assets/nuclearscience/blockstates/radioactivesoil.json new file mode 100644 index 00000000..08eae43a --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/radioactivesoil.json @@ -0,0 +1,10 @@ +{ + "variants": { + "snowy=false": { + "model": "nuclearscience:block/radioactivesoil" + }, + "snowy=true": { + "model": "minecraft:block/grass_block_snow" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json b/src/generated/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json new file mode 100644 index 00000000..32ed94d1 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nuclearscience:block/radioisotopegenerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/reactorcore.json b/src/generated/resources/assets/nuclearscience/blockstates/reactorcore.json new file mode 100644 index 00000000..ad487425 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/reactorcore.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nuclearscience:block/reactorcore", + "y": 270 + }, + "facing=south": { + "model": "nuclearscience:block/reactorcore", + "y": 90 + }, + "facing=west": { + "model": "nuclearscience:block/reactorcore", + "y": 180 + }, + "facing=east": { + "model": "nuclearscience:block/reactorcore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/siren.json b/src/generated/resources/assets/nuclearscience/blockstates/siren.json similarity index 100% rename from src/main/resources/assets/nuclearscience/blockstates/siren.json rename to src/generated/resources/assets/nuclearscience/blockstates/siren.json diff --git a/src/generated/resources/assets/nuclearscience/blockstates/teleporter.json b/src/generated/resources/assets/nuclearscience/blockstates/teleporter.json new file mode 100644 index 00000000..535392bf --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/teleporter.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,lit=false": { + "model": "nuclearscience:block/teleporter", + "y": 270 + }, + "facing=south,lit=false": { + "model": "nuclearscience:block/teleporter", + "y": 90 + }, + "facing=west,lit=false": { + "model": "nuclearscience:block/teleporter", + "y": 180 + }, + "facing=east,lit=false": { + "model": "nuclearscience:block/teleporter" + }, + "facing=north,lit=true": { + "model": "nuclearscience:block/teleporteron", + "y": 270 + }, + "facing=south,lit=true": { + "model": "nuclearscience:block/teleporteron", + "y": 90 + }, + "facing=west,lit=true": { + "model": "nuclearscience:block/teleporteron", + "y": 180 + }, + "facing=east,lit=true": { + "model": "nuclearscience:block/teleporteron" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/blockstates/turbine.json b/src/generated/resources/assets/nuclearscience/blockstates/turbine.json new file mode 100644 index 00000000..b011994e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/blockstates/turbine.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nuclearscience:block/turbinecasing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/lang/en_us.json b/src/generated/resources/assets/nuclearscience/lang/en_us.json new file mode 100644 index 00000000..a103c899 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/lang/en_us.json @@ -0,0 +1,213 @@ +{ + "block.nuclearscience.atomicassembler": "Atomic Assembler", + "block.nuclearscience.blocklead": "Radiation Shielding", + "block.nuclearscience.chemicalextractor": "Chemical Extractor", + "block.nuclearscience.controlrodassembly": "Control Rod", + "block.nuclearscience.electromagnet": "Electromagnet", + "block.nuclearscience.electromagneticbooster": "Electromagnetic Booster", + "block.nuclearscience.electromagneticglass": "Electromagnetic Glass", + "block.nuclearscience.electromagneticswitch": "Electromagnetic Switch", + "block.nuclearscience.freezeplug": "MSR Freeze Plug", + "block.nuclearscience.fuelreprocessor": "Fuel Reprocessor", + "block.nuclearscience.fusionreactorcore": "Fusion Reactor Core", + "block.nuclearscience.gascentrifuge": "Gas Centrifuge", + "block.nuclearscience.heatexchanger": "Heat Exchanger", + "block.nuclearscience.meltedreactor": "Melted Reactor Core", + "block.nuclearscience.moltensaltpipevanadiumsteelceramic": "VS-Ceramic Pipe", + "block.nuclearscience.moltensaltsupplier": "Molten Salt Supplier", + "block.nuclearscience.msrfuelpreprocessor": "MSR Fuel Pre-Processor", + "block.nuclearscience.msrreactorcore": "MS Reactor Core", + "block.nuclearscience.nuclearboiler": "Nuclear Boiler", + "block.nuclearscience.particleinjector": "Particle Injector", + "block.nuclearscience.plasma": "Plasma", + "block.nuclearscience.quantumcapacitor": "Quantum Capacitor", + "block.nuclearscience.radioactiveair": "Radioactive Air", + "block.nuclearscience.radioactiveprocessor": "Radioactive Processor", + "block.nuclearscience.radioactivesoil": "Radioactive Soil", + "block.nuclearscience.radioisotopegenerator": "Radioisotope Generator", + "block.nuclearscience.reactorcore": "Fission Reactor Core", + "block.nuclearscience.siren": "Siren", + "block.nuclearscience.teleporter": "Teleporter", + "block.nuclearscience.turbine": "Steam Turbine", + "chat.nuclearscience.geigercounter.text": "%s Rads/hour", + "container.atomicassembler": "Atomic Assembler", + "container.chemicalextractor": "Chemical Extractor", + "container.freezeplug": "MSR Freeze Plug", + "container.fuelreprocessor": "Fuel Reprocessor", + "container.gascentrifuge": "Gas Centrifuge", + "container.moltensaltsupplier": "Molten Salt Supplier", + "container.msrfuelpreprocessor": "MSR Fuel Pre-Processor", + "container.msrreactorcore": "MSR Reactor Core", + "container.nuclearboiler": "Nuclear Boiler", + "container.particleinjector": "Particle Injector", + "container.quantumcapacitor": "Quantum Capacitor", + "container.radioactiveprocessor": "Radioactive Processor", + "container.radioisotopegenerator": "Radioisotope Generator", + "container.reactorcore": "Fission Reactor Core", + "death.attack.plasma": "%s was ionized!", + "death.attack.radiation": "%s just did a speedrun of evolution!", + "effect.nuclearscience.radiation": "Radiation", + "fluid.nuclearscience.fluidammonia": "Ammonia", + "fluid.nuclearscience.fluiduraniumhexafluoride": "Uranium Hexafluoride", + "gui.nuclearscience.fissionreactor.deuterium": "Deuterium", + "gui.nuclearscience.fissionreactor.temperature": "Temp: %s", + "gui.nuclearscience.fissionreactor.warning": "OVERHEATING!", + "gui.nuclearscience.freezeplug.frozen": "FROZEN", + "gui.nuclearscience.freezeplug.off": "OFF", + "gui.nuclearscience.freezeplug.saltbonus": "Thermal Bonus: %s", + "gui.nuclearscience.freezeplug.status": "Status: %s", + "gui.nuclearscience.machine.current": "Current: %s", + "gui.nuclearscience.machine.output": "Output: %s", + "gui.nuclearscience.machine.stored": "Stored: %s", + "gui.nuclearscience.machine.transfer": "Output: %s", + "gui.nuclearscience.machine.usage": "Usage: %s", + "gui.nuclearscience.machine.voltage": "Voltage: %s", + "gui.nuclearscience.msreactor.status": "Status:", + "gui.nuclearscience.msreactor.status.good": "Good", + "gui.nuclearscience.msreactor.status.nofreezeplug": "Freeze Plug Missing", + "gui.nuclearscience.msreactor.status.wastefull": "Waste Full", + "gui.nuclearscience.msreactor.warning": "Warning:", + "gui.nuclearscience.msreactor.warning.freezeoff": "Freeze Plug Off", + "gui.nuclearscience.msreactor.warning.none": "None", + "gui.nuclearscience.msreactor.warning.overheat": "OVERHEATING", + "gui.nuclearscience.particleinjector.cells": "Cells", + "gui.nuclearscience.particleinjector.charge": "Charge: %s", + "gui.nuclearscience.particleinjector.matter": "Matter", + "gui.nuclearscience.quantumcapacitor.frequency": "Frequency", + "gui.nuclearscience.quantumcapacitor.joulesinput": "Joules", + "gui.nuclearscience.saltsupplier.waste": "Waste", + "gui.nuclearscience.saltsupplier.wastecont": "Waste: %s", + "guidebook.nuclearscience.chapter.centrifuge": "Gas Centrifuge", + "guidebook.nuclearscience.chapter.centrifuge.l1": "The Gas Centrifuge splits Uranium Hexafluoride into its isotopes of U235 and U238. There is a split of 17.5% to 82.5% respectively for each mB of Hexafluoride processed. The Centrifuge runs continuously as long as it has at least 42 mB of Uranium Hexafluoride in its input tank. 10% of each cycle is also converted into waste. Note this is not subtracted from the aforementioned split, and is added on top of it.", + "guidebook.nuclearscience.chapter.centrifuge.l2": "Once the Centrifuge has collected 2500 mB of a material, it will produce an item of the respective material. This corrosponds to the percentage counter for a category in the Centrifuge's GUI reaching 100%. While this is not 100% realistic, it is a legacy feature to pay tribute to the respective block from Atomic Science. The waste material generated from each cycle will produce Fissile Dust, which can then be processed into other useful materials. Uranium Hexaflouride can either be piped into the back of the Gas Centrifuge, or the Nuclear Boiler can output directly into it.", + "guidebook.nuclearscience.chapter.fissionreactor": "Fission Reactor", + "guidebook.nuclearscience.chapter.fissionreactor.controlrod": "Control Rod", + "guidebook.nuclearscience.chapter.fissionreactor.cycles": "Cycles: %s", + "guidebook.nuclearscience.chapter.fissionreactor.l1": "The Fission Reactor is the first nuclear power source that you will be able to access as you progress in Nuclear Science. Crude and simple, the block heats the water surrounding it and converts it to steam, which is used to spin turbines. To construct the Fission Reactor, you will first need to craft a Fission Reactor Core. Place the Core in the center of a 5x5 cube filled with water like so:", + "guidebook.nuclearscience.chapter.fissionreactor.l2": " Next, cover the top of the water with Turbines. You can either have single turbines, or turn a group of 9 into a large 3x3 turbine using a wrench. The area around the Reactor can be larger than 5x5, but only the 5x5 section will make power.", + "guidebook.nuclearscience.chapter.fissionreactor.l3": "To make steam, you will need a source of heat. This is where the Fission part of the name comes into play. The following fuel rods can be used to heat the reactor:", + "guidebook.nuclearscience.chapter.fissionreactor.l4": "The temperature associated with each fuel type is the temperature the reactor core will reach when 4 rods of that type are used. The Core has a temperature limit of 1417 C, at which point it going above said temperature will begin overheating the core and placing it at risk of melting down. The longer it runs in an overheated state, the greater the risk of meltdown becomes. Also, the hotter a reactor runs, the quicker the fuel source degrades! When a fuel rod is expended, it will leave behind a Spent Fuel Rod which can be processed into other valuable materials.", + "guidebook.nuclearscience.chapter.fissionreactor.l5": "As you can see, some fuel types will actually cause the reactor to melt down if a set of 4 is used in their entirety. You have two methods of dealing with this. This first is to mix and match certain fuel types. However, this method is mostly a trial-by-error approach, and does not leave a large ammount of room for error.", + "guidebook.nuclearscience.chapter.fissionreactor.l6": "The second and more reliable approach is to use a ", + "guidebook.nuclearscience.chapter.fissionreactor.l7": " to decrease the rate of the fission reaction. Place a Control Rod under the Reactor Core and Right-Click to extend it. The futher extended the rod is, the slower the reaction and thus cooler the reactor will run. Shift + Right-Click to retract the rod.", + "guidebook.nuclearscience.chapter.fissionreactor.l8": "One final item of note is that by placing a Dueterium Cell in the reactor while running, it has a chance to be enriched and transformed into a Tritium Cell. Tritium is required in order to run a Fusion Reactor. The conversion process will occur when the temperature of the core is above 800 C.", + "guidebook.nuclearscience.chapter.fissionreactor.maxtemp": "Max Temp: %s C", + "guidebook.nuclearscience.chapter.fusionreactor": "Fusion Reactor", + "guidebook.nuclearscience.chapter.fusionreactor.l1": "The Fusion Reactor is the ultimate source of power that Nuclear Science has to offer, and is able to produce over 6 MW of energy. However, harvesting this energy is very expensive. First, you will to construct 13x13 diamond of Electromagnets. They can be either glass or opaque. We will be using both. Place the Fusion Reactor Core in the center of the diamond and remove the block below it.", + "guidebook.nuclearscience.chapter.fusionreactor.l2": "Next, surround the side of the 13x13 diamond with a ring of Electromagnets.", + "guidebook.nuclearscience.chapter.fusionreactor.l3": "Next, build another 13x13 diamond to act as the roof. Leave a hole in the middle for the Reactor Core like before.", + "guidebook.nuclearscience.chapter.fusionreactor.l4": "Next, you will need to cover the top of the Electromagnets with water. The plasma of the reactor will heat the water generating steam, which can in turn be used for spinning turbines. Note the turbines will operate at 480V.", + "guidebook.nuclearscience.chapter.fusionreactor.l5": "The core requires 50 kJ/t at 480V to operate. While the initial energy must come from somewhere else, you can use the outuput of the turbines to feed back into the reaction. The wire can be connected to the top or the bottom of the reactor. In this case, we will be using the top.", + "guidebook.nuclearscience.chapter.fusionreactor.l6": "The Reactor uses Deuterium and Tritium Cells to fuel the reaction. To add fuel to the core, right-click a cell on it. This can be done through the convenient hole left in the bottom.", + "guidebook.nuclearscience.chapter.misc": "Misc", + "guidebook.nuclearscience.chapter.misc.l1": "Futurum Usui.", + "guidebook.nuclearscience.chapter.msreactor": "MS Reactor", + "guidebook.nuclearscience.chapter.msreactor.l1": "The Molton Salt Reactor is a far more refined version of the crude Fission Reactor, but is also far more expensive. Instead of being directly cooled by water, the reactor core is cooled by molten salt, which is then ran through a water-cooled heat sink network to itself be cooled. This has the added benefit of not needing to have the reactor core submersed in water and allowiong you to be flexable with turbine placement.", + "guidebook.nuclearscience.chapter.msreactor.l2": "To build a Molten Salt Reactor, you will need 3 components:", + "guidebook.nuclearscience.chapter.msreactor.l3": "Place a Freeze Plug, and then place a Reactor Core on top of it. Facing the green port on the core, place a Molten Salt Supplier so that its green port faces the Core's.", + "guidebook.nuclearscience.chapter.msreactor.l4": "The MS Reactor isn't cooled by water and is instead cooled by FLiNaK salt, which the Freeze Plug supplies. Simply make the salt and place it in the Plug. The salt is not consumed by the reactor, but the more salt you add, the more heat it will be able to remove.", + "guidebook.nuclearscience.chapter.msreactor.l5": "Unlike the Fission Reactor which uses solid fuel rods to produce heat, the Molten Salt Reactor uses a specially prepared radioactive salt, LiF-ThF4-UF4 Salt. However, as the name of the reactor implies, this salt must be molten in order to be used. Place the salt pellet in the Molten Salt Supplier to melt it. Each salt pellet melts to %s mB, and the core has an internal capacity of 1000 mB. The salt is slowly consumed over time and produces waste which is also collected by the supplier. Just like the Fission Reactor, the hotter the reactor, the faster the fuel is consumed.", + "guidebook.nuclearscience.chapter.msreactor.l6": "Now that the reactor is hot, you need to disperse the heat from the coolant. The MS Reactor has a melt-down temperature of 1000 C. To do this, you will need:", + "guidebook.nuclearscience.chapter.msreactor.l7": "The VS Pipe is connected to the top of the Reactor Core and fed into the bottom of the Heat Exchanger. The Heat Exchanger is incredibally efficient, and very few are needed to keep the reactor cool. In fact, a single Heat Exchanger can almost keep a MS Reactor cool by itself! To effectively do this, it must be placed in a 5x5x2 pool of water, and must be water-logged to function. The easiest way to do this is to fill the pool and then place the Exchanger. It should be noted that while the exchanger doesn't have to be directly above the reactor core, the longer the VS Pipe is, the more heat it will lose before it reaches the Exchanger!", + "guidebook.nuclearscience.chapter.msreactor.l8": "The Control Rod, like with the Fission Reactor, can also be used to slow the fuel use of the Core. Attach it to the side of the MS Reactor Core, and control it as with the Fission Reactor.", + "guidebook.nuclearscience.chapter.othermachines": "Other Machines", + "guidebook.nuclearscience.chapter.othermachines.atomicassembler1": "The Atomic Assembler makes use of the strange properties of Dark Matter, and is able to duplicate items (we have made sure you can't dupe items with inventories, so no dupe bugs this time (: ). It requires 72 kW at 480 V to run. If it loses power, all progress is lost!", + "guidebook.nuclearscience.chapter.othermachines.atomicassembler2": "To use it, take an item of your desire and place it in the Assembler. Surround the item with Dark Matter Cells like shown:", + "guidebook.nuclearscience.chapter.othermachines.atomicassembler3": "Each duplication takes 3600 ticks, and will take one use of the Dark Matter Cells. Cells have 64 uses in total.", + "guidebook.nuclearscience.chapter.othermachines.quantumcapacitor1": "The Quantum Capacitor is the ultimate energy storage device. It has an unlimited energy storage capacity and the storage is shared across capacitors. The GUI has two programmable fields. The first is for the joules/tick output of the capacitor. Note, the capacitor outputs at 1.92 kV! The second is for the frequency. The frequency of two capacitors must match for them to link. Every capacitor network is tied to a specific player, so don't worry about other players stealing your energy!", + "guidebook.nuclearscience.chapter.othermachines.teleporter1": "The Teleporter requires 5 MJ to teleport a player. Two teleporters are needed: one to send the player, and one to recieve them. Only the sending end needs to be powered. To link two teleporters, Right-Click the recieving end with a Frequency Card. Then Right-Click the sending end with the same card to link the two teleporters.", + "guidebook.nuclearscience.chapter.othermachines.teleporter2": "After each teleport, there is 4 second cooldown applied to the sending end. Note, it is possible to link a teleporter to itself, so be careful! To wipe a Frequency Card, simply craft it in your inventory.", + "guidebook.nuclearscience.chapter.particleaccelerator": "Particle Accelerator", + "guidebook.nuclearscience.chapter.particleaccelerator.formula": "((s1 + s2) / 4) ^ 2", + "guidebook.nuclearscience.chapter.particleaccelerator.l1": "The Particle Accelerator is used to make Anti-Matter and Dark Matter. Both are generated when two Particles collide at great speeds. The result of a particle collision is determined by the following formula:", + "guidebook.nuclearscience.chapter.particleaccelerator.l10": "Now, fill in the sides and top of the ring to create an enclosed structure for the Particles. Note either Electromagnets or Electromagnetic Glass can be used.", + "guidebook.nuclearscience.chapter.particleaccelerator.l2": "where s1 and s2 are the speeds of the two particles. Dark Matter is created when the resulting value is greater than 0.999, and has a 100% chance of being created. Otherwise, Anti-Matter is created from the collision. However, the chance of Anti-Matter being generated is not guaranteed, and its chance of being created increases the closer the resulting value gets to 0.999.", + "guidebook.nuclearscience.chapter.particleaccelerator.l3": "In order to collide particles, you will first need to create particles. For this, you will need a Particle Injector. The Injector uses matter to make a particle. Any block or item can be used to supply the matter. Place the matter in its respective slot in the Injector. To catch the result of the collision, you will need to craft an Electromagnetic Cell and place it in its respective slot in the Injector as well. The Injector uses 200 MJ per particle at 960 V. This means you will need 400 MJ for each collision.", + "guidebook.nuclearscience.chapter.particleaccelerator.l4": "While the Injector creates particles, it spawns them at very low speeds. In order to facilitate a collision, both particles will need to be moving at very high speeds. This can be accomplished by passing a Particle through an Electromagnetic Booster. If the Particle and Booster are facing the same direction, the Booster will increase the Particle's speed by 0.33% for every tick the Particle is inside the Booster. If the Booster is a corner, it will increase the Particle's speed by 0.17% for every tick the Particle is inside the Booster. This means that the faster a Particle moves, the less effective each successive Booster becomes. It is important to note that moving particles emit radiation.", + "guidebook.nuclearscience.chapter.particleaccelerator.l5": "To reach 100% speed, it will take 200 Boosters in a straight line. However, this would require a very large amount of room. Fortunately, Boosters can be set up in a snake pattern to help compact them by converting a placed Booster to a corner variant. To make one a corner variant, stand on top of Booster segment you wish to turn, and place a Booster to start the next segment after the corner. Looking at the outter bottom corner of the next segment's Booster, place the corner Booster. If you did it properly, you will not be able to directly see the inside of Booster.", + "guidebook.nuclearscience.chapter.particleaccelerator.l6": "The Particle Accelerator setup pictured here with 60 Boosters has a roughly 1 in 5 chance of creating Anti Matter from a collision:", + "guidebook.nuclearscience.chapter.particleaccelerator.l7": "But how do we get two particles to actually collide? This is where regular Electromagnets come in. You will need to construct a ring of Electromagnets to allow the Particles to circle and collide. It is incredibally important to note that particles will begin to lose speed the moment they exit the Booster chain, so it is desirable to make the Electromagnet ring as small as possible. In this case, we will be using a 3x3 ring.", + "guidebook.nuclearscience.chapter.particleaccelerator.l8": "Start by laying out the bottom of the ring at the end of the Booster chain like so:", + "guidebook.nuclearscience.chapter.particleaccelerator.l9": "To ensure the particles actually collide, you will need to switch the direction of one. This is what the Electromagnetic Switch is for. The switch flips the direction of every other particle that crosses it. Place an Electromagnetic switch in front of the output of the Booster chain like so:", + "guidebook.nuclearscience.chapter.radiation": "Radiation", + "guidebook.nuclearscience.chapter.radiation.hazmatsuit": "Hazmat Suit", + "guidebook.nuclearscience.chapter.radiation.l1": "Radiation is one of the key mechanics of Nuclear Science. Many items are radioactive and will harm you if not handled with the proper equipment. The following items are radioactive:", + "guidebook.nuclearscience.chapter.radiation.l2": "You will need to wear a ", + "guidebook.nuclearscience.chapter.radiation.l3": " to avoid getting radiation poisoning. You must be wearing a full suit in order to benifit from its protection. Radiation will slowly damage the suit over time, and it has limited durability, so do not hang around in a radioactive zone for long! The suit can be repaired in an Anvil with a ", + "guidebook.nuclearscience.chapter.radiation.l4": ". If the longevity of your suit is a real concern, a reinforced variant of the suit is available which sports more durability. It too can be repaired with a Lead Plate.", + "guidebook.nuclearscience.chapter.radiation.l5": "Radiation is also emitted from machines that process radioactive materials. The radiation spills out in a radius from the machine, becoming weaker the further you are away from the source. The more radioactive a material is, the bigger the area that will be affected.", + "guidebook.nuclearscience.chapter.radiation.l6": "However, what if you forget your Hazmat suit and become ill with Radiation Poisoning? No fear, for there is a solution to that! If you are suffering from Radiation Poisoning, you can take some ", + "guidebook.nuclearscience.chapter.radiation.l7": " and it will remove the effect. Antidote is extracted from fish, so you will probably want to get good at fishing.", + "guidebook.nuclearscience.chapter.radiation.radrating": "Rads: %s", + "guidebook.nuclearscience.chapter.radiogen": "Radioisotropic Generator", + "guidebook.nuclearscience.chapter.radiogen.l1": "The Radioisotropic Generator presents an alternative to the fission reaction. It instead uses the natural heat produced from the radioactive decay of items to directly generate electricity. Simply place a radioactive item in it, and it will begin to generate power. The more radioactive an item is, and the more of said item there is, the more power will be produced!", + "guidebook.nuclearscience.chapter.turbines": "Steam Turbines", + "guidebook.nuclearscience.chapter.turbines.l1": "Steam Turbines are what actually produce power in Nuclear Science. Turbines will produce at different voltages depending on what temperature of steam is venting through them. Turbines produce the following voltages under the following temperatures: ", + "guidebook.nuclearscience.chapter.turbines.l2": "This relationship is important, as Turbines produce more power the faster they spin. However, the only way to spin a turbine faster is to vent more steam through it. This means that as a turbine spins faster, it will produce more power, but also at an ever-increasing voltage. This can become a major problem, especially in situations like a melting-down reactor, as not only will the reactor explode, but also any machinery that is connected downstream!", + "guidebook.nuclearscience.chapter.turbines.l3": "To get power out of a turbine, connect a wire to the top of one. A 3x3 group of turbines can be upgraded into a large turbine by whacking the center one with a wrench.", + "guidebook.nuclearscience.chapter.turbines.tempvoltage": "%1$s C : %2$s V", + "guidebook.nuclearscience.nuclearscience": "Nuclear Science", + "item.nuclearscience.actinium225": "Actinium-225", + "item.nuclearscience.actiniumoxide": "Actinium Trioxide", + "item.nuclearscience.antidote": "Antidote", + "item.nuclearscience.canisterlead": "Lead-Lined Canister", + "item.nuclearscience.cellantimatterlarge": "Anti-Matter Cell (4 g)", + "item.nuclearscience.cellantimattersmall": "Anti-Matter Cell (500 mg)", + "item.nuclearscience.cellantimatterverylarge": "Anti-Matter Cell (12 g)", + "item.nuclearscience.celldarkmatter": "Dark Matter Cell", + "item.nuclearscience.celldeuterium": "Deuterium Cell", + "item.nuclearscience.cellelectromagnetic": "Electromagnetic Cell", + "item.nuclearscience.cellempty": "Empty Cell", + "item.nuclearscience.cellheavywater": "Heavy Water Cell", + "item.nuclearscience.celltritium": "Tritium Cell", + "item.nuclearscience.fissiledust": "Fissile Dust", + "item.nuclearscience.fissilesalt": "Fissile Salt", + "item.nuclearscience.flinak": "FLiNaK Salt", + "item.nuclearscience.frequencycard": "Frequency Card", + "item.nuclearscience.fuelheuo2": "Highly Enriched Fuel Rod", + "item.nuclearscience.fuelleuo2": "Enriched Fuel Rod", + "item.nuclearscience.fuelplutonium": "Plutonium Fuel Rod", + "item.nuclearscience.fuelspent": "Spent Fuel Rod", + "item.nuclearscience.geigercounter": "Geiger Counter", + "item.nuclearscience.hazmatboots": "Hazmat Boots", + "item.nuclearscience.hazmathelmet": "Hazmat Hood", + "item.nuclearscience.hazmatlegs": "Hazmat Leggings", + "item.nuclearscience.hazmatplate": "Hazmat Shroud", + "item.nuclearscience.lifthf4uf4": "LiF-ThF4-UF4 Salt", + "item.nuclearscience.plutonium239": "Plutonium-239", + "item.nuclearscience.plutoniumoxide": "Plutonium Tetroxide", + "item.nuclearscience.polonium210": "Polonium-210", + "item.nuclearscience.polonium210chunk": "Polonium-210 Chunk", + "item.nuclearscience.reinforcedhazmatboots": "Reinforced Hazmat Boots", + "item.nuclearscience.reinforcedhazmathelmet": "Reinforced Hazmat Hood", + "item.nuclearscience.reinforcedhazmatlegs": "Reinforced Hazmat Leggings", + "item.nuclearscience.reinforcedhazmatplate": "Reinforced Hazmat Shroud", + "item.nuclearscience.thorianitedust": "Thorianite Dust", + "item.nuclearscience.uranium235": "Uranium-235", + "item.nuclearscience.uranium238": "Uranium-238", + "item.nuclearscience.yellowcake": "Yellowcake", + "itemGroup.itemgroupnuclearscience": "Nuclear Science", + "jei.chemical_extractor_recipe": "Chemical Extractor", + "jei.fission_reactor_recipe": "Fission Reactor", + "jei.fuel_reprocessor_recipe": "Fuel Reprocessor", + "jei.gascentrifuge": "Gas Centrifuge", + "jei.gascentrifuge.info.power_usage": "240V 30kW", + "jei.gui.reactorcore.info.temp": "Range: 0 C to 1400 C", + "jei.msrfuel_preprocessor_recipe": "MSR Fuel Pre-Processor", + "jei.nuclear_boiler_recipe": "Nuclear Boiler", + "jei.particalaccelerator.antimatter.collision": "Charge:100% Speed<100%", + "jei.particalaccelerator.darkmatter.collision": "Charge:100% Speed:100%", + "jei.particalacceleratorantimatter": "Particle Collision", + "jei.particalacceleratordarkmatter": "Particle Collision", + "jei.radioactive_processor_recipe": "Radioactive Processor", + "subtitles.nuclearscience.gascentrifuge": "Gas Centrifuge spins", + "subtitles.nuclearscience.geiger": "Geiger Counter ticks!", + "subtitles.nuclearscience.nuclearboiler": "Nuclear Boiler boils", + "subtitles.nuclearscience.siren": "Siren blares!", + "subtitles.nuclearscience.turbine": "Steam Turbine spins", + "tooltip.nuclearscience.deuteriumlevel": "Deuterium: %s", + "tooltip.nuclearscience.frequencycard.linked": "Linked to %s", + "tooltip.nuclearscience.frequencycard.notag": "No Link", + "tooltip.nuclearscience.steamfunneluse": "Collects and emits steam", + "tooltip.nuclearscience.tritiumlevel": "Tritium: %s" +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/blocklead.json b/src/generated/resources/assets/nuclearscience/models/block/blocklead.json similarity index 98% rename from src/main/resources/assets/nuclearscience/models/block/blocklead.json rename to src/generated/resources/assets/nuclearscience/models/block/blocklead.json index 1f7835de..c5e2d3dc 100644 --- a/src/main/resources/assets/nuclearscience/models/block/blocklead.json +++ b/src/generated/resources/assets/nuclearscience/models/block/blocklead.json @@ -3,4 +3,4 @@ "textures": { "all": "nuclearscience:block/blocklead" } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/electromagnet.json b/src/generated/resources/assets/nuclearscience/models/block/electromagnet.json new file mode 100644 index 00000000..fbf96aa4 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/electromagnet.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "side": "nuclearscience:block/electromagnet", + "end": "nuclearscience:block/electromagnettop" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/electromagneticglass.json b/src/generated/resources/assets/nuclearscience/models/block/electromagneticglass.json new file mode 100644 index 00000000..a10f8a26 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/electromagneticglass.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "nuclearscience:block/electromagneticglass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_none.json b/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_none.json new file mode 100644 index 00000000..e138eb06 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_none.json @@ -0,0 +1,7 @@ +{ + "parent": "nuclearscience:parent/pipe_none", + "textures": { + "texture": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic", + "particle": "#texture" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_side.json b/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_side.json new file mode 100644 index 00000000..ed6a6939 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/pipe/moltensaltpipevanadiumsteelceramic_side.json @@ -0,0 +1,7 @@ +{ + "parent": "nuclearscience:parent/pipe_side", + "textures": { + "texture": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic", + "particle": "#texture" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/plasma.json b/src/generated/resources/assets/nuclearscience/models/block/plasma.json new file mode 100644 index 00000000..97636c07 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/plasma.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "nuclearscience:block/plasma" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/block/radioactiveair.json b/src/generated/resources/assets/nuclearscience/models/block/radioactiveair.json new file mode 100644 index 00000000..60c2fe79 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/block/radioactiveair.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "nuclearscience:block/plasma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/radioactivesoil.json b/src/generated/resources/assets/nuclearscience/models/block/radioactivesoil.json similarity index 98% rename from src/main/resources/assets/nuclearscience/models/block/radioactivesoil.json rename to src/generated/resources/assets/nuclearscience/models/block/radioactivesoil.json index e2175b01..39b4ce36 100644 --- a/src/main/resources/assets/nuclearscience/models/block/radioactivesoil.json +++ b/src/generated/resources/assets/nuclearscience/models/block/radioactivesoil.json @@ -3,4 +3,4 @@ "textures": { "all": "nuclearscience:block/radioactivesoil" } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/siren.json b/src/generated/resources/assets/nuclearscience/models/block/siren.json similarity index 98% rename from src/main/resources/assets/nuclearscience/models/block/siren.json rename to src/generated/resources/assets/nuclearscience/models/block/siren.json index d3893f27..31e65a04 100644 --- a/src/main/resources/assets/nuclearscience/models/block/siren.json +++ b/src/generated/resources/assets/nuclearscience/models/block/siren.json @@ -3,4 +3,4 @@ "textures": { "all": "nuclearscience:block/siren" } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/actinium225.json b/src/generated/resources/assets/nuclearscience/models/item/actinium225.json new file mode 100644 index 00000000..876ad207 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/actinium225.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/actinium225" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/actiniumoxide.json b/src/generated/resources/assets/nuclearscience/models/item/actiniumoxide.json new file mode 100644 index 00000000..a710a1d8 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/actiniumoxide.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/actiniumoxide" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/antidote.json b/src/generated/resources/assets/nuclearscience/models/item/antidote.json new file mode 100644 index 00000000..3a4c6886 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/antidote.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/antidote" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/atomicassembler.json b/src/generated/resources/assets/nuclearscience/models/item/atomicassembler.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/atomicassembler.json rename to src/generated/resources/assets/nuclearscience/models/item/atomicassembler.json diff --git a/src/main/resources/assets/nuclearscience/models/item/blocklead.json b/src/generated/resources/assets/nuclearscience/models/item/blocklead.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/blocklead.json rename to src/generated/resources/assets/nuclearscience/models/item/blocklead.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/canisterlead.json b/src/generated/resources/assets/nuclearscience/models/item/canisterlead.json new file mode 100644 index 00000000..8fb942f4 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/canisterlead.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/canisterlead" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellantimatterlarge.json b/src/generated/resources/assets/nuclearscience/models/item/cellantimatterlarge.json new file mode 100644 index 00000000..2c13896e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellantimatterlarge.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellantimatterlarge" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellantimattersmall.json b/src/generated/resources/assets/nuclearscience/models/item/cellantimattersmall.json new file mode 100644 index 00000000..9d5613d8 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellantimattersmall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellantimattersmall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json b/src/generated/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json new file mode 100644 index 00000000..b3859907 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellantimatterverylarge" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/celldarkmatter.json b/src/generated/resources/assets/nuclearscience/models/item/celldarkmatter.json new file mode 100644 index 00000000..44314187 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/celldarkmatter.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/celldarkmatter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/celldeuterium.json b/src/generated/resources/assets/nuclearscience/models/item/celldeuterium.json new file mode 100644 index 00000000..494c59ed --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/celldeuterium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/celldeuterium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellelectromagnetic.json b/src/generated/resources/assets/nuclearscience/models/item/cellelectromagnetic.json new file mode 100644 index 00000000..feaf6144 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellelectromagnetic.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellelectromagnetic" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellempty.json b/src/generated/resources/assets/nuclearscience/models/item/cellempty.json new file mode 100644 index 00000000..b1ea4588 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellempty.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellempty" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/cellheavywater.json b/src/generated/resources/assets/nuclearscience/models/item/cellheavywater.json new file mode 100644 index 00000000..8713a3f2 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/cellheavywater.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/cellheavywater" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/celltritium.json b/src/generated/resources/assets/nuclearscience/models/item/celltritium.json new file mode 100644 index 00000000..4954eacd --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/celltritium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/celltritium" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/chemicalextractor.json b/src/generated/resources/assets/nuclearscience/models/item/chemicalextractor.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/chemicalextractor.json rename to src/generated/resources/assets/nuclearscience/models/item/chemicalextractor.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/controlrodassembly.json b/src/generated/resources/assets/nuclearscience/models/item/controlrodassembly.json new file mode 100644 index 00000000..1249dc08 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/controlrodassembly.json @@ -0,0 +1,22 @@ +{ + "parent": "nuclearscience:block/controlrodassembly", + "display": { + "gui": { + "rotation": [ + 30, + 225, + 0 + ], + "translation": [ + 0, + -0.9, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/electromagnet.json b/src/generated/resources/assets/nuclearscience/models/item/electromagnet.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/electromagnet.json rename to src/generated/resources/assets/nuclearscience/models/item/electromagnet.json diff --git a/src/main/resources/assets/nuclearscience/models/item/electromagneticbooster.json b/src/generated/resources/assets/nuclearscience/models/item/electromagneticbooster.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/electromagneticbooster.json rename to src/generated/resources/assets/nuclearscience/models/item/electromagneticbooster.json diff --git a/src/main/resources/assets/nuclearscience/models/item/electromagneticglass.json b/src/generated/resources/assets/nuclearscience/models/item/electromagneticglass.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/electromagneticglass.json rename to src/generated/resources/assets/nuclearscience/models/item/electromagneticglass.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/electromagneticswitch.json b/src/generated/resources/assets/nuclearscience/models/item/electromagneticswitch.json new file mode 100644 index 00000000..28bee5bc --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/electromagneticswitch.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/electromagneticswitch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fissiledust.json b/src/generated/resources/assets/nuclearscience/models/item/fissiledust.json new file mode 100644 index 00000000..6a254891 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fissiledust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fissiledust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fissilesalt.json b/src/generated/resources/assets/nuclearscience/models/item/fissilesalt.json new file mode 100644 index 00000000..72a3ef80 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fissilesalt.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fissilesalt" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/flinak.json b/src/generated/resources/assets/nuclearscience/models/item/flinak.json new file mode 100644 index 00000000..4ec50f46 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/flinak.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/flinak" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/freezeplug.json b/src/generated/resources/assets/nuclearscience/models/item/freezeplug.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/freezeplug.json rename to src/generated/resources/assets/nuclearscience/models/item/freezeplug.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/frequencycard.json b/src/generated/resources/assets/nuclearscience/models/item/frequencycard.json new file mode 100644 index 00000000..574b8f46 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/frequencycard.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:item/generated", + "display": { + "gui": { + "scale": [ + 0.75, + 0.75, + 0.75 + ] + } + }, + "textures": { + "layer0": "nuclearscience:item/frequencycard" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fuelheuo2.json b/src/generated/resources/assets/nuclearscience/models/item/fuelheuo2.json new file mode 100644 index 00000000..bb055273 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fuelheuo2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fuelheuo2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fuelleuo2.json b/src/generated/resources/assets/nuclearscience/models/item/fuelleuo2.json new file mode 100644 index 00000000..0d428e22 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fuelleuo2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fuelleuo2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fuelplutonium.json b/src/generated/resources/assets/nuclearscience/models/item/fuelplutonium.json new file mode 100644 index 00000000..bb02be20 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fuelplutonium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fuelplutonium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fuelreprocessor.json b/src/generated/resources/assets/nuclearscience/models/item/fuelreprocessor.json new file mode 100644 index 00000000..0c0e9cf6 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fuelreprocessor.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/fuelreprocessor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/fuelspent.json b/src/generated/resources/assets/nuclearscience/models/item/fuelspent.json new file mode 100644 index 00000000..ff4092ea --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/fuelspent.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/fuelspent" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/fusionreactorcore.json b/src/generated/resources/assets/nuclearscience/models/item/fusionreactorcore.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/fusionreactorcore.json rename to src/generated/resources/assets/nuclearscience/models/item/fusionreactorcore.json diff --git a/src/main/resources/assets/nuclearscience/models/item/gascentrifuge.json b/src/generated/resources/assets/nuclearscience/models/item/gascentrifuge.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/gascentrifuge.json rename to src/generated/resources/assets/nuclearscience/models/item/gascentrifuge.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/geigercounter.json b/src/generated/resources/assets/nuclearscience/models/item/geigercounter.json new file mode 100644 index 00000000..e7c40c1e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/geigercounter.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/geigercounter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/hazmatboots.json b/src/generated/resources/assets/nuclearscience/models/item/hazmatboots.json new file mode 100644 index 00000000..e90e45df --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/hazmatboots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/hazmatboots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/hazmathelmet.json b/src/generated/resources/assets/nuclearscience/models/item/hazmathelmet.json new file mode 100644 index 00000000..7cda80c8 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/hazmathelmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/hazmathelmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/hazmatlegs.json b/src/generated/resources/assets/nuclearscience/models/item/hazmatlegs.json new file mode 100644 index 00000000..8a566ecf --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/hazmatlegs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/hazmatlegs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/hazmatplate.json b/src/generated/resources/assets/nuclearscience/models/item/hazmatplate.json new file mode 100644 index 00000000..d6e29aa0 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/hazmatplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/hazmatplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/heatexchanger.json b/src/generated/resources/assets/nuclearscience/models/item/heatexchanger.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/heatexchanger.json rename to src/generated/resources/assets/nuclearscience/models/item/heatexchanger.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/lifthf4uf4.json b/src/generated/resources/assets/nuclearscience/models/item/lifthf4uf4.json new file mode 100644 index 00000000..b5b173fe --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/lifthf4uf4.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/lifthf4uf4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/meltedreactor.json b/src/generated/resources/assets/nuclearscience/models/item/meltedreactor.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/meltedreactor.json rename to src/generated/resources/assets/nuclearscience/models/item/meltedreactor.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json b/src/generated/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json new file mode 100644 index 00000000..bb5b0e74 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/pipe/moltensaltpipevanadiumsteelceramic" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/moltensaltsupplier.json b/src/generated/resources/assets/nuclearscience/models/item/moltensaltsupplier.json new file mode 100644 index 00000000..1f281d14 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/moltensaltsupplier.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/moltensaltsupplier" +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/msrfuelpreprocessor.json b/src/generated/resources/assets/nuclearscience/models/item/msrfuelpreprocessor.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/msrfuelpreprocessor.json rename to src/generated/resources/assets/nuclearscience/models/item/msrfuelpreprocessor.json diff --git a/src/main/resources/assets/nuclearscience/models/item/msrreactorcore.json b/src/generated/resources/assets/nuclearscience/models/item/msrreactorcore.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/msrreactorcore.json rename to src/generated/resources/assets/nuclearscience/models/item/msrreactorcore.json diff --git a/src/main/resources/assets/nuclearscience/models/item/nuclearboiler.json b/src/generated/resources/assets/nuclearscience/models/item/nuclearboiler.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/nuclearboiler.json rename to src/generated/resources/assets/nuclearscience/models/item/nuclearboiler.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/particleinjector.json b/src/generated/resources/assets/nuclearscience/models/item/particleinjector.json new file mode 100644 index 00000000..da4241ed --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/particleinjector.json @@ -0,0 +1,22 @@ +{ + "parent": "nuclearscience:block/particleinjector", + "display": { + "gui": { + "rotation": [ + 45, + 45, + 0 + ], + "translation": [ + 0, + -1, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/plasma.json b/src/generated/resources/assets/nuclearscience/models/item/plasma.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/plasma.json rename to src/generated/resources/assets/nuclearscience/models/item/plasma.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/plutonium239.json b/src/generated/resources/assets/nuclearscience/models/item/plutonium239.json new file mode 100644 index 00000000..29a0cd0c --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/plutonium239.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/plutonium239" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/plutoniumoxide.json b/src/generated/resources/assets/nuclearscience/models/item/plutoniumoxide.json new file mode 100644 index 00000000..8fb4d509 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/plutoniumoxide.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/plutoniumoxide" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/polonium210.json b/src/generated/resources/assets/nuclearscience/models/item/polonium210.json new file mode 100644 index 00000000..3cb92541 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/polonium210.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/polonium210" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/polonium210chunk.json b/src/generated/resources/assets/nuclearscience/models/item/polonium210chunk.json new file mode 100644 index 00000000..89dcd22e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/polonium210chunk.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/polonium210chunk" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/quantumcapacitor.json b/src/generated/resources/assets/nuclearscience/models/item/quantumcapacitor.json new file mode 100644 index 00000000..36912e3e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/quantumcapacitor.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/quantumcapacitor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/radioactiveair.json b/src/generated/resources/assets/nuclearscience/models/item/radioactiveair.json new file mode 100644 index 00000000..068c534e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/radioactiveair.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/radioactiveair" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/radioactiveprocessor.json b/src/generated/resources/assets/nuclearscience/models/item/radioactiveprocessor.json new file mode 100644 index 00000000..85012f76 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/radioactiveprocessor.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/radioactiveprocessor" +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/radioactivesoil.json b/src/generated/resources/assets/nuclearscience/models/item/radioactivesoil.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/radioactivesoil.json rename to src/generated/resources/assets/nuclearscience/models/item/radioactivesoil.json diff --git a/src/main/resources/assets/nuclearscience/models/item/radioisotopegenerator.json b/src/generated/resources/assets/nuclearscience/models/item/radioisotopegenerator.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/radioisotopegenerator.json rename to src/generated/resources/assets/nuclearscience/models/item/radioisotopegenerator.json diff --git a/src/main/resources/assets/nuclearscience/models/item/reactorcore.json b/src/generated/resources/assets/nuclearscience/models/item/reactorcore.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/reactorcore.json rename to src/generated/resources/assets/nuclearscience/models/item/reactorcore.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json new file mode 100644 index 00000000..c8e41051 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/reinforcedhazmatboots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json new file mode 100644 index 00000000..dd6a7726 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/reinforcedhazmathelmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json new file mode 100644 index 00000000..9469438e --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/reinforcedhazmatlegs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json new file mode 100644 index 00000000..5dd22feb --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/reinforcedhazmatplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/siren.json b/src/generated/resources/assets/nuclearscience/models/item/siren.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/siren.json rename to src/generated/resources/assets/nuclearscience/models/item/siren.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/teleporter.json b/src/generated/resources/assets/nuclearscience/models/item/teleporter.json new file mode 100644 index 00000000..c75d4ee2 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/teleporter.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearscience:block/teleporter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/thorianitedust.json b/src/generated/resources/assets/nuclearscience/models/item/thorianitedust.json new file mode 100644 index 00000000..a4f8ecac --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/thorianitedust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/thorianitedust" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/turbine.json b/src/generated/resources/assets/nuclearscience/models/item/turbine.json similarity index 100% rename from src/main/resources/assets/nuclearscience/models/item/turbine.json rename to src/generated/resources/assets/nuclearscience/models/item/turbine.json diff --git a/src/generated/resources/assets/nuclearscience/models/item/uranium235.json b/src/generated/resources/assets/nuclearscience/models/item/uranium235.json new file mode 100644 index 00000000..ba6b38cc --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/uranium235.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/uranium235" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/uranium238.json b/src/generated/resources/assets/nuclearscience/models/item/uranium238.json new file mode 100644 index 00000000..201a32c2 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/uranium238.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/uranium238" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/models/item/yellowcake.json b/src/generated/resources/assets/nuclearscience/models/item/yellowcake.json new file mode 100644 index 00000000..484c4e1a --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/models/item/yellowcake.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "nuclearscience:item/yellowcake" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearscience/sounds.json b/src/generated/resources/assets/nuclearscience/sounds.json new file mode 100644 index 00000000..cfaa06e8 --- /dev/null +++ b/src/generated/resources/assets/nuclearscience/sounds.json @@ -0,0 +1,32 @@ +{ + "gascentrifuge": { + "subtitle": "subtitles.nuclearscience.gascentrifuge", + "sounds": [ + "nuclearscience:gascentrifuge" + ] + }, + "geiger": { + "subtitle": "subtitles.nuclearscience.geiger", + "sounds": [ + "nuclearscience:geiger" + ] + }, + "nuclearboiler": { + "subtitle": "subtitles.nuclearscience.nuclearboiler", + "sounds": [ + "nuclearscience:nuclearboiler" + ] + }, + "siren": { + "subtitle": "subtitles.nuclearscience.siren", + "sounds": [ + "nuclearscience:siren" + ] + }, + "turbine": { + "subtitle": "subtitles.nuclearscience.turbine", + "sounds": [ + "nuclearscience:turbine" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/needs_wood_tool.json b/src/generated/resources/data/forge/tags/blocks/needs_wood_tool.json new file mode 100644 index 00000000..ab89314e --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/needs_wood_tool.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:radioactivesoil" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/ammonia.json b/src/generated/resources/data/forge/tags/fluids/ammonia.json new file mode 100644 index 00000000..dcd7f487 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/ammonia.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fluidammonia" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/uranium_hexafluoride.json b/src/generated/resources/data/forge/tags/fluids/uranium_hexafluoride.json new file mode 100644 index 00000000..4f9eeea8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/uranium_hexafluoride.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fluiduraniumhexafluoride" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/anti_matter_large.json b/src/generated/resources/data/forge/tags/items/cells/anti_matter_large.json new file mode 100644 index 00000000..b6b85de1 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/anti_matter_large.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:cellantimatterlarge" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/anti_matter_small.json b/src/generated/resources/data/forge/tags/items/cells/anti_matter_small.json new file mode 100644 index 00000000..3eebd922 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/anti_matter_small.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:cellantimattersmall" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/anti_matter_very_large.json b/src/generated/resources/data/forge/tags/items/cells/anti_matter_very_large.json new file mode 100644 index 00000000..66411a0f --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/anti_matter_very_large.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:cellantimatterverylarge" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/dark_matter.json b/src/generated/resources/data/forge/tags/items/cells/dark_matter.json new file mode 100644 index 00000000..d9e25f8e --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/dark_matter.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:celldarkmatter" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/deuterium.json b/src/generated/resources/data/forge/tags/items/cells/deuterium.json new file mode 100644 index 00000000..c483c33b --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/deuterium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:celldeuterium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/empty.json b/src/generated/resources/data/forge/tags/items/cells/empty.json new file mode 100644 index 00000000..ccf93b62 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/empty.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:cellempty" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/heavywater.json b/src/generated/resources/data/forge/tags/items/cells/heavywater.json new file mode 100644 index 00000000..a291cf6d --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/heavywater.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:cellheavywater" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cells/tritium.json b/src/generated/resources/data/forge/tags/items/cells/tritium.json new file mode 100644 index 00000000..d8617709 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cells/tritium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:celltritium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dusts/fissile.json b/src/generated/resources/data/forge/tags/items/dusts/fissile.json new file mode 100644 index 00000000..5e158fc8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/dusts/fissile.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fissiledust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dusts/thorium.json b/src/generated/resources/data/forge/tags/items/dusts/thorium.json new file mode 100644 index 00000000..9be63a9d --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/dusts/thorium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:thorianitedust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/fuel_rods/heuo2.json b/src/generated/resources/data/forge/tags/items/fuel_rods/heuo2.json new file mode 100644 index 00000000..2d715bc0 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/fuel_rods/heuo2.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fuelleuo2" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/fuel_rods/leuo2.json b/src/generated/resources/data/forge/tags/items/fuel_rods/leuo2.json new file mode 100644 index 00000000..2d715bc0 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/fuel_rods/leuo2.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fuelleuo2" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/fuel_rods/plutonium.json b/src/generated/resources/data/forge/tags/items/fuel_rods/plutonium.json new file mode 100644 index 00000000..af15bbf3 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/fuel_rods/plutonium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fuelplutonium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/fuel_rods/spent.json b/src/generated/resources/data/forge/tags/items/fuel_rods/spent.json new file mode 100644 index 00000000..70f8ea38 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/fuel_rods/spent.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fuelspent" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets/polonium.json b/src/generated/resources/data/forge/tags/items/nuggets/polonium.json new file mode 100644 index 00000000..76d47417 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/nuggets/polonium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:polonium210chunk" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/oxide/actinium.json b/src/generated/resources/data/forge/tags/items/oxide/actinium.json new file mode 100644 index 00000000..f24f31f8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/oxide/actinium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:actiniumoxide" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/oxide/plutonium.json b/src/generated/resources/data/forge/tags/items/oxide/plutonium.json new file mode 100644 index 00000000..1a5b08d7 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/oxide/plutonium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:plutoniumoxide" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/actinium225.json b/src/generated/resources/data/forge/tags/items/pellets/actinium225.json new file mode 100644 index 00000000..70fb4ff5 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/actinium225.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:actinium225" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/flinak.json b/src/generated/resources/data/forge/tags/items/pellets/flinak.json new file mode 100644 index 00000000..1b823ed1 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/flinak.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:flinak" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/lifht4puf3.json b/src/generated/resources/data/forge/tags/items/pellets/lifht4puf3.json new file mode 100644 index 00000000..36047190 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/lifht4puf3.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:lifthf4uf4" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/plutonium.json b/src/generated/resources/data/forge/tags/items/pellets/plutonium.json new file mode 100644 index 00000000..029ea7aa --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/plutonium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:plutonium239" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/polonium.json b/src/generated/resources/data/forge/tags/items/pellets/polonium.json new file mode 100644 index 00000000..b941c2db --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/polonium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:polonium210" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/uranium235.json b/src/generated/resources/data/forge/tags/items/pellets/uranium235.json new file mode 100644 index 00000000..08f2ea29 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/uranium235.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:uranium235" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/pellets/uranium238.json b/src/generated/resources/data/forge/tags/items/pellets/uranium238.json new file mode 100644 index 00000000..7448002a --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/pellets/uranium238.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:uranium238" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/salts/fissile.json b/src/generated/resources/data/forge/tags/items/salts/fissile.json new file mode 100644 index 00000000..54729838 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/salts/fissile.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:fissilesalt" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/yellow_cake_uranium.json b/src/generated/resources/data/forge/tags/items/yellow_cake_uranium.json new file mode 100644 index 00000000..1b7c7430 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/yellow_cake_uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:yellowcake" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 00000000..8aa83ffb --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,31 @@ +{ + "replace": false, + "values": [ + "nuclearscience:atomicassembler", + "nuclearscience:chemicalextractor", + "nuclearscience:controlrodassembly", + "nuclearscience:electromagnet", + "nuclearscience:electromagneticbooster", + "nuclearscience:electromagneticglass", + "nuclearscience:electromagneticswitch", + "nuclearscience:freezeplug", + "nuclearscience:fuelreprocessor", + "nuclearscience:fusionreactorcore", + "nuclearscience:gascentrifuge", + "nuclearscience:heatexchanger", + "nuclearscience:blocklead", + "nuclearscience:meltedreactor", + "nuclearscience:moltensaltsupplier", + "nuclearscience:msrfuelpreprocessor", + "nuclearscience:msrreactorcore", + "nuclearscience:nuclearboiler", + "nuclearscience:particleinjector", + "nuclearscience:quantumcapacitor", + "nuclearscience:radioactiveprocessor", + "nuclearscience:radioisotopegenerator", + "nuclearscience:reactorcore", + "nuclearscience:siren", + "nuclearscience:teleporter", + "nuclearscience:turbine" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/shovel.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/shovel.json new file mode 100644 index 00000000..ab89314e --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/shovel.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "nuclearscience:radioactivesoil" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json b/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json new file mode 100644 index 00000000..8aa83ffb --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json @@ -0,0 +1,31 @@ +{ + "replace": false, + "values": [ + "nuclearscience:atomicassembler", + "nuclearscience:chemicalextractor", + "nuclearscience:controlrodassembly", + "nuclearscience:electromagnet", + "nuclearscience:electromagneticbooster", + "nuclearscience:electromagneticglass", + "nuclearscience:electromagneticswitch", + "nuclearscience:freezeplug", + "nuclearscience:fuelreprocessor", + "nuclearscience:fusionreactorcore", + "nuclearscience:gascentrifuge", + "nuclearscience:heatexchanger", + "nuclearscience:blocklead", + "nuclearscience:meltedreactor", + "nuclearscience:moltensaltsupplier", + "nuclearscience:msrfuelpreprocessor", + "nuclearscience:msrreactorcore", + "nuclearscience:nuclearboiler", + "nuclearscience:particleinjector", + "nuclearscience:quantumcapacitor", + "nuclearscience:radioactiveprocessor", + "nuclearscience:radioisotopegenerator", + "nuclearscience:reactorcore", + "nuclearscience:siren", + "nuclearscience:teleporter", + "nuclearscience:turbine" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/atomicassembler.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/atomicassembler.json new file mode 100644 index 00000000..af428225 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/atomicassembler.json @@ -0,0 +1,58 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "atomicassembler", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:atomicassembler", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:atomicassembler" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/blocklead.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/blocklead.json new file mode 100644 index 00000000..0466d9ba --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/blocklead.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "blocklead", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:blocklead" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/chemicalextractor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/chemicalextractor.json new file mode 100644 index 00000000..da3e7ea6 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/chemicalextractor.json @@ -0,0 +1,63 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "chemicalextractor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "fluid", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:chemicalextractor", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:chemicalextractor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/controlrodassembly.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/controlrodassembly.json new file mode 100644 index 00000000..e8dc69ac --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/controlrodassembly.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "controlrodassembly", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:controlrodassembly" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagnet.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagnet.json new file mode 100644 index 00000000..a0ec3103 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagnet.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "electromagnet", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:electromagnet" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticbooster.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticbooster.json new file mode 100644 index 00000000..a52f9ad2 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticbooster.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "electromagneticbooster", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:electromagneticbooster" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticglass.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticglass.json new file mode 100644 index 00000000..bd4bf892 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticglass.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "electromagneticglass", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:electromagneticglass" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticswitch.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticswitch.json new file mode 100644 index 00000000..9efc96d6 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/electromagneticswitch.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "electromagneticswitch", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:electromagneticswitch" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/freezeplug.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/freezeplug.json new file mode 100644 index 00000000..7dc7f46a --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/freezeplug.json @@ -0,0 +1,58 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "freezeplug", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:freezeplug", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:freezeplug" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/fuelreprocessor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/fuelreprocessor.json new file mode 100644 index 00000000..2bb8b7ab --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/fuelreprocessor.json @@ -0,0 +1,58 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "fuelreprocessor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:fuelreprocessor", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:fuelreprocessor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/fusionreactorcore.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/fusionreactorcore.json new file mode 100644 index 00000000..3420fb11 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/fusionreactorcore.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "fusionreactorcore", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:fusionreactorcore" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/gascentrifuge.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/gascentrifuge.json new file mode 100644 index 00000000..66f1c576 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/gascentrifuge.json @@ -0,0 +1,63 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "gascentrifuge", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "fluid", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:gascentrifuge", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:gascentrifuge" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/heatexchanger.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/heatexchanger.json new file mode 100644 index 00000000..93388d45 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/heatexchanger.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "heatexchanger", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:heatexchanger" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/meltedreactor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/meltedreactor.json new file mode 100644 index 00000000..3485ee1a --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/meltedreactor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "meltedreactor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:meltedreactor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltpipevanadiumsteelceramic.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltpipevanadiumsteelceramic.json new file mode 100644 index 00000000..a366c16b --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltpipevanadiumsteelceramic.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "moltensaltpipevanadiumsteelceramic", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:moltensaltpipevanadiumsteelceramic" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltsupplier.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltsupplier.json new file mode 100644 index 00000000..813ab91b --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/moltensaltsupplier.json @@ -0,0 +1,58 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "moltensaltsupplier", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:moltensaltsupplier", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:moltensaltsupplier" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrfuelpreprocessor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrfuelpreprocessor.json new file mode 100644 index 00000000..ab6eb0cb --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrfuelpreprocessor.json @@ -0,0 +1,63 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "msrfuelpreprocessor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "fluid", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:msrfuelpreprocessor", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:msrfuelpreprocessor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrreactorcore.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrreactorcore.json new file mode 100644 index 00000000..ae47dffd --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/msrreactorcore.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "msrreactorcore", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:msrreactorcore" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/nuclearboiler.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/nuclearboiler.json new file mode 100644 index 00000000..b9a73fce --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/nuclearboiler.json @@ -0,0 +1,63 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "nuclearboiler", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "fluid", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:nuclearboiler", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:nuclearboiler" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/particleinjector.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/particleinjector.json new file mode 100644 index 00000000..61065f7f --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/particleinjector.json @@ -0,0 +1,58 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "particleinjector", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:particleinjector", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:particleinjector" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/quantumcapacitor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/quantumcapacitor.json new file mode 100644 index 00000000..897c94ef --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/quantumcapacitor.json @@ -0,0 +1,38 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "quantumcapacitor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + } + ], + "name": "nuclearscience:quantumcapacitor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactiveprocessor.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactiveprocessor.json new file mode 100644 index 00000000..fc41c0aa --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactiveprocessor.json @@ -0,0 +1,63 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "radioactiveprocessor", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "fluid", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:radioactiveprocessor", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:radioactiveprocessor" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactivesoil.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactivesoil.json new file mode 100644 index 00000000..6f712f55 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioactivesoil.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "radioactivesoil", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:radioactivesoil" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioisotopegenerator.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioisotopegenerator.json new file mode 100644 index 00000000..f668b72b --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/radioisotopegenerator.json @@ -0,0 +1,53 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "radioisotopegenerator", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:radioisotopegenerator", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:radioisotopegenerator" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/reactorcore.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/reactorcore.json new file mode 100644 index 00000000..533fba75 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/reactorcore.json @@ -0,0 +1,53 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "reactorcore", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Items", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "itemproperty_size", + "target": "BlockEntityTag", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + }, + { + "function": "minecraft:set_contents", + "type": "nuclearscience:reactorcore", + "entries": [ + { + "type": "minecraft:dynamic", + "name": "minecraft:contents" + } + ] + } + ], + "name": "nuclearscience:reactorcore" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/siren.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/siren.json new file mode 100644 index 00000000..cd2969db --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/siren.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "siren", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:siren" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/teleporter.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/teleporter.json new file mode 100644 index 00000000..af3a0381 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/teleporter.json @@ -0,0 +1,38 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "teleporter", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "joules", + "target": "BlockEntityTag.joules", + "op": "replace" + }, + { + "source": "additional", + "target": "BlockEntityTag.additional", + "op": "replace" + } + ] + } + ], + "name": "nuclearscience:teleporter" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/loot_tables/blocks/turbine.json b/src/generated/resources/data/nuclearscience/loot_tables/blocks/turbine.json new file mode 100644 index 00000000..a53a943c --- /dev/null +++ b/src/generated/resources/data/nuclearscience/loot_tables/blocks/turbine.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "turbine", + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "nuclearscience:turbine" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/radiation/radioactive_items.json b/src/generated/resources/data/nuclearscience/radiation/radioactive_items.json new file mode 100644 index 00000000..d6e28e43 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/radiation/radioactive_items.json @@ -0,0 +1,24 @@ +{ + "#forge:pellets/uranium235": 1000.0, + "#forge:pellets/uranium238": 500.0, + "#forge:pellets/plutonium": 4500.0, + "#forge:pellets/polonium": 2500.0, + "#forge:pellets/actinium225": 5000.0, + "#forge:nuggets/polonium": 1500.0, + "#forge:fuel_rods/heuo2": 3000.0, + "#forge:fuel_rods/leuo2": 2000.0, + "#forge:fuel_rods/spent": 3500.0, + "#forge:fuel_rods/plutonium": 2500.0, + "#forge:yellow_cake_uranium": 300.0, + "#forge:dusts/fissile": 2000.0, + "#forge:salts/fissile": 200.0, + "#forge:oxide/plutonium": 4000.0, + "#forge:dusts/thorium": 2000.0, + "#forge:oxide/actinium": 400.0, + "#forge:ores/thorium": 500.0, + "#forge:ores/uranium": 100.0, + "#forge:raw_materials/thorium": 150.0, + "#forge:raw_materials/uranium": 50.0, + "#forge:storage_blocks/rawthorium": 500.0, + "#forge:storage_blocks/rawuranium": 450.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/antidote.json b/src/generated/resources/data/nuclearscience/recipes/antidote.json new file mode 100644 index 00000000..08b0f06f --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/antidote.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "tag": "minecraft:fishes" + } + ], + "result": { + "item": "nuclearscience:antidote", + "count": 3 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/atomicassembler.json b/src/generated/resources/data/nuclearscience/recipes/atomicassembler.json new file mode 100644 index 00000000..4b45f292 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/atomicassembler.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CCC", + "SGS", + "SSS" + ], + "key": { + "C": { + "tag": "forge:circuits/elite" + }, + "S": { + "tag": "forge:plates/steel" + }, + "G": { + "item": "nuclearscience:gascentrifuge" + } + }, + "result": { + "item": "nuclearscience:atomicassembler" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/canisterlead.json b/src/generated/resources/data/nuclearscience/recipes/canisterlead.json new file mode 100644 index 00000000..23e64f4a --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/canisterlead.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "VLV", + "LCL", + "VLV" + ], + "key": { + "C": { + "item": "electrodynamics:canisterreinforced" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:canisterlead" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/cellantimatter_large.json b/src/generated/resources/data/nuclearscience/recipes/cellantimatter_large.json new file mode 100644 index 00000000..d8d22201 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/cellantimatter_large.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + }, + { + "tag": "forge:cells/anti_matter_small" + } + ], + "result": { + "item": "nuclearscience:cellantimatterlarge" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/cellantimatter_verylarge.json b/src/generated/resources/data/nuclearscience/recipes/cellantimatter_verylarge.json new file mode 100644 index 00000000..f6c881f4 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/cellantimatter_verylarge.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:cells/anti_matter_large" + }, + { + "tag": "forge:cells/anti_matter_large" + }, + { + "tag": "forge:cells/anti_matter_large" + } + ], + "result": { + "item": "nuclearscience:cellantimatterverylarge" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/cellelectromagnetic.json b/src/generated/resources/data/nuclearscience/recipes/cellelectromagnetic.json new file mode 100644 index 00000000..27f03045 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/cellelectromagnetic.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " C ", + "CEC", + " C " + ], + "key": { + "C": { + "item": "electrodynamics:coil" + }, + "E": { + "tag": "forge:cells/empty" + } + }, + "result": { + "item": "nuclearscience:cellelectromagnetic" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/cellempty_clearglass.json b/src/generated/resources/data/nuclearscience/recipes/cellempty_clearglass.json new file mode 100644 index 00000000..34f8c1e7 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/cellempty_clearglass.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "GTG", + "T T", + "GTG" + ], + "key": { + "T": { + "tag": "forge:ingots/tin" + }, + "G": { + "item": "electrodynamics:glassclear" + } + }, + "result": { + "item": "nuclearscience:cellempty", + "count": 6 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/cellempty_glass.json b/src/generated/resources/data/nuclearscience/recipes/cellempty_glass.json new file mode 100644 index 00000000..70fb9e4d --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/cellempty_glass.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "GTG", + "T T", + "GTG" + ], + "key": { + "T": { + "tag": "forge:ingots/tin" + }, + "G": { + "tag": "forge:glass" + } + }, + "result": { + "item": "nuclearscience:cellempty", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/chemicalextractor.json b/src/generated/resources/data/nuclearscience/recipes/chemicalextractor.json new file mode 100644 index 00000000..0dc232da --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/chemicalextractor.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SPS", + "MCM", + "SPS" + ], + "key": { + "P": { + "tag": "forge:plates/steel" + }, + "S": { + "tag": "forge:ingots/steel" + }, + "C": { + "tag": "forge:circuits/advanced" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:chemicalextractor" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/controlrod.json b/src/generated/resources/data/nuclearscience/recipes/controlrod.json new file mode 100644 index 00000000..d61f9aa4 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/controlrod.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SsS", + " P ", + "SCS" + ], + "key": { + "P": { + "item": "minecraft:piston" + }, + "S": { + "tag": "forge:plates/steel" + }, + "s": { + "tag": "forge:ingots/silver" + }, + "C": { + "tag": "forge:circuits/advanced" + } + }, + "result": { + "item": "nuclearscience:controlrodassembly" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/electromagnet_hslatitanium.json b/src/generated/resources/data/nuclearscience/recipes/electromagnet_hslatitanium.json new file mode 100644 index 00000000..5dcd8ff7 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/electromagnet_hslatitanium.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "THT", + "HMH", + "THT" + ], + "key": { + "T": { + "tag": "forge:plates/titanium" + }, + "H": { + "tag": "forge:plates/hslasteel" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:electromagnet", + "count": 15 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/electromagnet_steelbronze.json b/src/generated/resources/data/nuclearscience/recipes/electromagnet_steelbronze.json new file mode 100644 index 00000000..6c5e21c2 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/electromagnet_steelbronze.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "BSB", + "SMS", + "BSB" + ], + "key": { + "B": { + "tag": "forge:plates/bronze" + }, + "S": { + "tag": "forge:plates/steel" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:electromagnet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/electromagneticbooster.json b/src/generated/resources/data/nuclearscience/recipes/electromagneticbooster.json new file mode 100644 index 00000000..3e08a5fc --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/electromagneticbooster.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "EGE" + ], + "key": { + "E": { + "item": "nuclearscience:electromagnet" + }, + "G": { + "item": "nuclearscience:electromagneticglass" + } + }, + "result": { + "item": "nuclearscience:electromagneticbooster" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/electromagneticglass.json b/src/generated/resources/data/nuclearscience/recipes/electromagneticglass.json new file mode 100644 index 00000000..b54eb2b4 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/electromagneticglass.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "nuclearscience:electromagnet" + }, + { + "tag": "forge:glass" + } + ], + "result": { + "item": "nuclearscience:electromagneticglass" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/electromagneticswitch.json b/src/generated/resources/data/nuclearscience/recipes/electromagneticswitch.json new file mode 100644 index 00000000..eb936c1a --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/electromagneticswitch.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "nuclearscience:electromagneticbooster" + }, + { + "item": "electrodynamics:motor" + } + ], + "result": { + "item": "nuclearscience:electromagneticswitch" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fissionreactorcore.json b/src/generated/resources/data/nuclearscience/recipes/fissionreactorcore.json new file mode 100644 index 00000000..207f0286 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fissionreactorcore.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PCP", + "MEM", + "PCP" + ], + "key": { + "P": { + "tag": "forge:plates/steel" + }, + "C": { + "tag": "forge:circuits/elite" + }, + "E": { + "tag": "forge:cells/empty" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:reactorcore" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ammonia.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ammonia.json new file mode 100644 index 00000000..95994911 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ammonia.json @@ -0,0 +1,24 @@ +{ + "type": "electrodynamics:chemical_mixer_recipe", + "ticks": 200, + "usagepertick": 400.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:dusts/saltpeter", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "minecraft:water", + "amount": 1000 + } + }, + "output": { + "fluid": "nuclearscience:fluidammonia", + "amount": 1000 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ironsulfate_from_ironblock.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ironsulfate_from_ironblock.json new file mode 100644 index 00000000..2e9aea6e --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/chemical_mixer/ironsulfate_from_ironblock.json @@ -0,0 +1,24 @@ +{ + "type": "electrodynamics:chemical_mixer_recipe", + "ticks": 200, + "usagepertick": 400.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:storage_blocks/raw_iron", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:sulfuric_acid", + "amount": 1000 + } + }, + "output": { + "fluid": "electrodynamics:fluidsulfateiron", + "amount": 1000 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_uraniumpellets.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_uraniumpellets.json new file mode 100644 index 00000000..cc9807ca --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_uraniumpellets.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:nuclear_boiler_recipe", + "ticks": 800, + "usagepertick": 750.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:pellets/uranium238", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:hydrofluoric_acid", + "amount": 1600 + } + }, + "output": { + "fluid": "nuclearscience:fluiduraniumhexafluoride", + "amount": 2000 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_yellowcake.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_yellowcake.json new file mode 100644 index 00000000..7b0c3344 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclear_boiler/uraniumhexafluoride_from_yellowcake.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:nuclear_boiler_recipe", + "ticks": 800, + "usagepertick": 750.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:yellow_cake_uranium", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:hydrofluoric_acid", + "amount": 800 + } + }, + "output": { + "fluid": "nuclearscience:fluiduraniumhexafluoride", + "amount": 2500 + }, + "experience": 0.25 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_deuterium.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_deuterium.json new file mode 100644 index 00000000..5ac77249 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_deuterium.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:chemical_extractor_recipe", + "ticks": 400, + "usagepertick": 750.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:cells/heavywater", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "minecraft:water", + "amount": 4800 + } + }, + "output": { + "item": "nuclearscience:celldeuterium", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_heavywater.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_heavywater.json new file mode 100644 index 00000000..a9779a57 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/cell_heavywater.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:chemical_extractor_recipe", + "ticks": 400, + "usagepertick": 750.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:cells/empty", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "minecraft:water", + "amount": 4800 + } + }, + "output": { + "item": "nuclearscience:cellheavywater", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/yellowcake_from_rawuranium.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/yellowcake_from_rawuranium.json new file mode 100644 index 00000000..7b5cc669 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/chemical_extractor/yellowcake_from_rawuranium.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:chemical_extractor_recipe", + "ticks": 400, + "usagepertick": 750.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:raw_materials/uranium", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "minecraft:water", + "amount": 1600 + } + }, + "output": { + "item": "nuclearscience:yellowcake", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/flinak.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/flinak.json new file mode 100644 index 00000000..a85d5e75 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/flinak.json @@ -0,0 +1,32 @@ +{ + "type": "nuclearscience:msrfuel_preprocessor_recipe", + "ticks": 200, + "usagepertick": 1200.0, + "iteminputs": { + "count": 3, + "0": { + "item": "electrodynamics:crystalpotassiumchloride", + "count": 1 + }, + "1": { + "tag": "forge:dusts/salt", + "count": 1 + }, + "2": { + "tag": "forge:dusts/lithium", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:hydrofluoric_acid", + "amount": 1500 + } + }, + "output": { + "item": "nuclearscience:flinak", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/lifthf4uf4.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/lifthf4uf4.json new file mode 100644 index 00000000..f0a98b69 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/msr_fuel_preprocessor/lifthf4uf4.json @@ -0,0 +1,32 @@ +{ + "type": "nuclearscience:msrfuel_preprocessor_recipe", + "ticks": 200, + "usagepertick": 1200.0, + "iteminputs": { + "count": 3, + "0": { + "tag": "forge:dusts/lithium", + "count": 1 + }, + "1": { + "tag": "forge:dusts/thorium", + "count": 2 + }, + "2": { + "tag": "forge:yellow_cake_uranium", + "count": 2 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:hydrofluoric_acid", + "amount": 2500 + } + }, + "output": { + "item": "nuclearscience:lifthf4uf4", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/actinium225.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/actinium225.json new file mode 100644 index 00000000..9be7b3a4 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/actinium225.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:radioactive_processor_recipe", + "ticks": 300, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:oxide/actinium", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:hydrofluoric_acid", + "amount": 100 + } + }, + "output": { + "item": "nuclearscience:actinium225", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/dirt_from_radioactivesoil.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/dirt_from_radioactivesoil.json new file mode 100644 index 00000000..2ef020ef --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/dirt_from_radioactivesoil.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:radioactive_processor_recipe", + "ticks": 300, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "item": "nuclearscience:radioactivesoil", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "minecraft:water", + "amount": 100 + } + }, + "output": { + "item": "minecraft:dirt", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/plutonium_oxide.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/plutonium_oxide.json new file mode 100644 index 00000000..d55abec1 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/plutonium_oxide.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:radioactive_processor_recipe", + "ticks": 300, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:dusts/fissile", + "count": 2 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:sulfate_iron", + "amount": 3000 + } + }, + "output": { + "item": "nuclearscience:plutoniumoxide", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/thorianite_dust.json b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/thorianite_dust.json new file mode 100644 index 00000000..622302d3 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fluiditem2item/radioactive_processor/thorianite_dust.json @@ -0,0 +1,24 @@ +{ + "type": "nuclearscience:radioactive_processor_recipe", + "ticks": 300, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:raw_materials/thorium", + "count": 1 + } + }, + "fluidinputs": { + "count": 1, + "0": { + "tag": "forge:sulfuric_acid", + "amount": 1000 + } + }, + "output": { + "item": "nuclearscience:thorianitedust", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/freezeplug.json b/src/generated/resources/data/nuclearscience/recipes/freezeplug.json new file mode 100644 index 00000000..b3884ef7 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/freezeplug.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SCS", + "SCS", + "SBS" + ], + "key": { + "B": { + "tag": "forge:storage_blocks/vanadiumsteel" + }, + "S": { + "tag": "forge:plates/stainlesssteel" + }, + "C": { + "tag": "forge:storage_blocks/copper" + } + }, + "result": { + "item": "nuclearscience:freezeplug" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/frequencycard_new.json b/src/generated/resources/data/nuclearscience/recipes/frequencycard_new.json new file mode 100644 index 00000000..9e7272e0 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/frequencycard_new.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " P ", + "WCW", + " P " + ], + "key": { + "P": { + "tag": "forge:plates/iron" + }, + "C": { + "tag": "forge:circuits/basic" + }, + "W": { + "item": "electrodynamics:wirecopper" + } + }, + "result": { + "item": "nuclearscience:frequencycard" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/frequencycard_reset.json b/src/generated/resources/data/nuclearscience/recipes/frequencycard_reset.json new file mode 100644 index 00000000..2a32fd85 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/frequencycard_reset.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "nuclearscience:frequencycard" + } + ], + "result": { + "item": "nuclearscience:frequencycard" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fuelreprocessor.json b/src/generated/resources/data/nuclearscience/recipes/fuelreprocessor.json new file mode 100644 index 00000000..be22961c --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fuelreprocessor.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "VSV", + "STS", + "VSV" + ], + "key": { + "S": { + "tag": "forge:plates/stainlesssteel" + }, + "T": { + "item": "electrodynamics:titaniumheatcoil" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + } + }, + "result": { + "item": "nuclearscience:fuelreprocessor" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fuelrod_plutonium.json b/src/generated/resources/data/nuclearscience/recipes/fuelrod_plutonium.json new file mode 100644 index 00000000..cf888036 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fuelrod_plutonium.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "GLG", + "GPG", + "GLG" + ], + "key": { + "P": { + "tag": "forge:pellets/plutonium" + }, + "G": { + "tag": "forge:glass" + }, + "L": { + "tag": "forge:pellets/uranium238" + } + }, + "result": { + "item": "nuclearscience:fuelplutonium" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_highenrich.json b/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_highenrich.json new file mode 100644 index 00000000..ea46ff10 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_highenrich.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "GLG", + "GHG", + "GLG" + ], + "key": { + "G": { + "tag": "forge:glass" + }, + "H": { + "tag": "forge:pellets/uranium235" + }, + "L": { + "tag": "forge:pellets/uranium238" + } + }, + "result": { + "item": "nuclearscience:fuelheuo2" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_lowenrich.json b/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_lowenrich.json new file mode 100644 index 00000000..e8942f10 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fuelrod_uranium_lowenrich.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "GLG", + "GLG", + "GLG" + ], + "key": { + "G": { + "tag": "forge:glass" + }, + "L": { + "tag": "forge:pellets/uranium238" + } + }, + "result": { + "item": "nuclearscience:fuelleuo2" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/fusionreactorcore.json b/src/generated/resources/data/nuclearscience/recipes/fusionreactorcore.json new file mode 100644 index 00000000..52552e9c --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/fusionreactorcore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "UEU", + "ECE", + "UEU" + ], + "key": { + "C": { + "item": "nuclearscience:msrreactorcore" + }, + "U": { + "tag": "forge:circuits/ultimate" + }, + "E": { + "item": "nuclearscience:electromagnet" + } + }, + "result": { + "item": "nuclearscience:fusionreactorcore" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/gascentrifuge.json b/src/generated/resources/data/nuclearscience/recipes/gascentrifuge.json new file mode 100644 index 00000000..32c8df40 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/gascentrifuge.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SES", + "CGC", + "BMB" + ], + "key": { + "B": { + "tag": "forge:plates/bronze" + }, + "S": { + "tag": "forge:plates/stainlesssteel" + }, + "C": { + "tag": "forge:cells/empty" + }, + "E": { + "tag": "forge:circuits/elite" + }, + "G": { + "tag": "forge:gears/steel" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:gascentrifuge" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/geigercounter.json b/src/generated/resources/data/nuclearscience/recipes/geigercounter.json new file mode 100644 index 00000000..4d3159e4 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/geigercounter.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PPP", + "PBP", + "PCP" + ], + "key": { + "P": { + "tag": "forge:plates/steel" + }, + "B": { + "tag": "forge:circuits/basic" + }, + "C": { + "item": "electrodynamics:coil" + } + }, + "result": { + "item": "nuclearscience:geigercounter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/hazmatboots.json b/src/generated/resources/data/nuclearscience/recipes/hazmatboots.json new file mode 100644 index 00000000..91401a3f --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/hazmatboots.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LBL", + "WCW" + ], + "key": { + "B": { + "item": "minecraft:leather_boots" + }, + "C": { + "tag": "forge:circuits/basic" + }, + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:hazmatboots" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/hazmatchestplate.json b/src/generated/resources/data/nuclearscience/recipes/hazmatchestplate.json new file mode 100644 index 00000000..2a579868 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/hazmatchestplate.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LcL", + "WCW" + ], + "key": { + "c": { + "item": "minecraft:leather_chestplate" + }, + "C": { + "tag": "forge:circuits/basic" + }, + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:hazmatplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/hazmathelmet.json b/src/generated/resources/data/nuclearscience/recipes/hazmathelmet.json new file mode 100644 index 00000000..07c2a73a --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/hazmathelmet.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LHL", + "WCW" + ], + "key": { + "C": { + "tag": "forge:circuits/basic" + }, + "W": { + "tag": "minecraft:wool" + }, + "H": { + "item": "minecraft:leather_helmet" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:hazmathelmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/hazmatleggings.json b/src/generated/resources/data/nuclearscience/recipes/hazmatleggings.json new file mode 100644 index 00000000..9037101f --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/hazmatleggings.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LlL", + "WCW" + ], + "key": { + "C": { + "tag": "forge:circuits/basic" + }, + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + }, + "l": { + "item": "minecraft:leather_leggings" + } + }, + "result": { + "item": "nuclearscience:hazmatlegs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/heatexchanger.json b/src/generated/resources/data/nuclearscience/recipes/heatexchanger.json new file mode 100644 index 00000000..70725a82 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/heatexchanger.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PPP", + "PPP", + "SCS" + ], + "key": { + "P": { + "tag": "forge:plates/stainlesssteel" + }, + "S": { + "tag": "forge:ingots/silver" + }, + "C": { + "tag": "forge:storage_blocks/copper" + } + }, + "result": { + "item": "nuclearscience:heatexchanger" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/item2item/fission_reactor/cell_tritium.json b/src/generated/resources/data/nuclearscience/recipes/item2item/fission_reactor/cell_tritium.json new file mode 100644 index 00000000..027a8fe2 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/item2item/fission_reactor/cell_tritium.json @@ -0,0 +1,17 @@ +{ + "type": "nuclearscience:fission_reactor_recipe", + "ticks": 1, + "usagepertick": 1.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:cells/deuterium", + "count": 1 + } + }, + "output": { + "item": "nuclearscience:celltritium", + "count": 1 + }, + "experience": 0.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/actinium_oxide.json b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/actinium_oxide.json new file mode 100644 index 00000000..3ad0a986 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/actinium_oxide.json @@ -0,0 +1,25 @@ +{ + "type": "nuclearscience:fuel_reprocessor_recipe", + "ticks": 200, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:salts/fissile", + "count": 1 + } + }, + "output": { + "item": "nuclearscience:actiniumoxide", + "count": 1 + }, + "experience": 0.0, + "itembi": { + "count": 1, + "0": { + "item": "nuclearscience:polonium210chunk", + "count": 3, + "chance": 1.0 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/fissile_dust.json b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/fissile_dust.json new file mode 100644 index 00000000..c8ff9bee --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/fissile_dust.json @@ -0,0 +1,25 @@ +{ + "type": "nuclearscience:fuel_reprocessor_recipe", + "ticks": 200, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:fuel_rods/spent", + "count": 1 + } + }, + "output": { + "item": "nuclearscience:fissiledust", + "count": 1 + }, + "experience": 0.0, + "itembi": { + "count": 1, + "0": { + "item": "nuclearscience:polonium210chunk", + "count": 1, + "chance": 0.5 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/plutonium239.json b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/plutonium239.json new file mode 100644 index 00000000..fffd1c16 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/plutonium239.json @@ -0,0 +1,25 @@ +{ + "type": "nuclearscience:fuel_reprocessor_recipe", + "ticks": 200, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "tag": "forge:oxide/plutonium", + "count": 1 + } + }, + "output": { + "item": "nuclearscience:plutonium239", + "count": 1 + }, + "experience": 0.0, + "itembi": { + "count": 1, + "0": { + "item": "nuclearscience:polonium210chunk", + "count": 3, + "chance": 1.0 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/reactor_salvage.json b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/reactor_salvage.json new file mode 100644 index 00000000..75b9acff --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/item2item/fuel_reprocessor/reactor_salvage.json @@ -0,0 +1,25 @@ +{ + "type": "nuclearscience:fuel_reprocessor_recipe", + "ticks": 200, + "usagepertick": 480.0, + "iteminputs": { + "count": 1, + "0": { + "item": "nuclearscience:meltedreactor", + "count": 1 + } + }, + "output": { + "item": "electrodynamics:ingotsteel", + "count": 2 + }, + "experience": 0.0, + "itembi": { + "count": 1, + "0": { + "item": "nuclearscience:plutonium239", + "count": 1, + "chance": 1.0 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/leadshielding.json b/src/generated/resources/data/nuclearscience/recipes/leadshielding.json new file mode 100644 index 00000000..380e1c78 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/leadshielding.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "LLL", + "CCC", + "LLL" + ], + "key": { + "C": { + "item": "electrodynamics:ceramicplate" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:blocklead", + "count": 2 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/moltensaltpipe_ceramicvanadium.json b/src/generated/resources/data/nuclearscience/recipes/moltensaltpipe_ceramicvanadium.json new file mode 100644 index 00000000..727778c2 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/moltensaltpipe_ceramicvanadium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CCC", + "VVV", + "CCC" + ], + "key": { + "C": { + "item": "electrodynamics:ceramicplate" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + } + }, + "result": { + "item": "nuclearscience:moltensaltpipevanadiumsteelceramic", + "count": 2 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/moltensaltsupplier.json b/src/generated/resources/data/nuclearscience/recipes/moltensaltsupplier.json new file mode 100644 index 00000000..2ed061ff --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/moltensaltsupplier.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SVS", + "TTT", + "SVS" + ], + "key": { + "S": { + "tag": "forge:plates/stainlesssteel" + }, + "T": { + "item": "electrodynamics:titaniumheatcoil" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + } + }, + "result": { + "item": "nuclearscience:moltensaltsupplier" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json b/src/generated/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json new file mode 100644 index 00000000..3f45856e --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "VLV", + "LCL", + "VEV" + ], + "key": { + "C": { + "item": "electrodynamics:chemicalmixer" + }, + "E": { + "tag": "forge:circuits/elite" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:msrfuelpreprocessor" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/msrreactorcore.json b/src/generated/resources/data/nuclearscience/recipes/msrreactorcore.json new file mode 100644 index 00000000..fb8e229c --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/msrreactorcore.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SVS", + "VRV", + "SPS" + ], + "key": { + "P": { + "tag": "forge:pellets/plutonium" + }, + "R": { + "item": "nuclearscience:reactorcore" + }, + "S": { + "tag": "forge:plates/stainlesssteel" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + } + }, + "result": { + "item": "nuclearscience:msrreactorcore" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/nuclearboiler.json b/src/generated/resources/data/nuclearscience/recipes/nuclearboiler.json new file mode 100644 index 00000000..0cf03ec3 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/nuclearboiler.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PCP", + "EFE", + "PMP" + ], + "key": { + "P": { + "tag": "forge:plates/steel" + }, + "C": { + "tag": "forge:circuits/elite" + }, + "E": { + "tag": "forge:cells/empty" + }, + "F": { + "item": "electrodynamics:electricarcfurnace" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:nuclearboiler" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/particleinjector.json b/src/generated/resources/data/nuclearscience/recipes/particleinjector.json new file mode 100644 index 00000000..58f3cb88 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/particleinjector.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "MTM", + "UDU", + "MTM" + ], + "key": { + "T": { + "item": "electrodynamics:upgradetransformer" + }, + "D": { + "item": "minecraft:dispenser" + }, + "U": { + "tag": "forge:circuits/ultimate" + }, + "M": { + "item": "nuclearscience:electromagnet" + } + }, + "result": { + "item": "nuclearscience:particleinjector" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/poloniumpellet_from_nuggets.json b/src/generated/resources/data/nuclearscience/recipes/poloniumpellet_from_nuggets.json new file mode 100644 index 00000000..1a5b10d6 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/poloniumpellet_from_nuggets.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "PP", + "PP" + ], + "key": { + "P": { + "tag": "forge:nuggets/polonium" + } + }, + "result": { + "item": "nuclearscience:polonium210" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/quantumcapacitor.json b/src/generated/resources/data/nuclearscience/recipes/quantumcapacitor.json new file mode 100644 index 00000000..edd88792 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/quantumcapacitor.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "DCD", + "RDR", + "DCD" + ], + "key": { + "R": { + "item": "nuclearscience:fusionreactorcore" + }, + "C": { + "tag": "forge:circuits/ultimate" + }, + "D": { + "tag": "forge:cells/dark_matter" + } + }, + "result": { + "item": "nuclearscience:quantumcapacitor" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/radioactiveprocessor.json b/src/generated/resources/data/nuclearscience/recipes/radioactiveprocessor.json new file mode 100644 index 00000000..1288f9f8 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/radioactiveprocessor.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "VTV", + "VMV", + "VCV" + ], + "key": { + "C": { + "tag": "forge:circuits/elite" + }, + "T": { + "item": "electrodynamics:titaniumheatcoil" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + }, + "M": { + "item": "electrodynamics:chemicalmixer" + } + }, + "result": { + "item": "nuclearscience:radioactiveprocessor" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/radioisotopegenerator.json b/src/generated/resources/data/nuclearscience/recipes/radioisotopegenerator.json new file mode 100644 index 00000000..c830b882 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/radioisotopegenerator.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "VCV", + "LEL", + "VCV" + ], + "key": { + "C": { + "tag": "forge:circuits/advanced" + }, + "E": { + "tag": "forge:cells/empty" + }, + "V": { + "tag": "forge:plates/vanadiumsteel" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:radioisotopegenerator" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json new file mode 100644 index 00000000..b5af91d1 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LBL", + "WLW" + ], + "key": { + "B": { + "item": "nuclearscience:hazmatboots" + }, + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:reinforcedhazmatboots" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatchestplate.json b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatchestplate.json new file mode 100644 index 00000000..8cfec0a7 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatchestplate.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LcL", + "WLW" + ], + "key": { + "c": { + "item": "nuclearscience:hazmatplate" + }, + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:reinforcedhazmatplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json new file mode 100644 index 00000000..e63dcadc --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LHL", + "WLW" + ], + "key": { + "W": { + "tag": "minecraft:wool" + }, + "H": { + "item": "nuclearscience:hazmathelmet" + }, + "L": { + "tag": "forge:plates/lead" + } + }, + "result": { + "item": "nuclearscience:reinforcedhazmathelmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatleggings.json b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatleggings.json new file mode 100644 index 00000000..5dd522a0 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/reinforcedhazmatleggings.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "LlL", + "WLW" + ], + "key": { + "W": { + "tag": "minecraft:wool" + }, + "L": { + "tag": "forge:plates/lead" + }, + "l": { + "item": "nuclearscience:hazmatlegs" + } + }, + "result": { + "item": "nuclearscience:reinforcedhazmatlegs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/siren.json b/src/generated/resources/data/nuclearscience/recipes/siren.json new file mode 100644 index 00000000..b47ccb90 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/siren.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "NPN" + ], + "key": { + "P": { + "tag": "forge:plates/bronze" + }, + "N": { + "item": "minecraft:note_block" + } + }, + "result": { + "item": "nuclearscience:siren" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/teleporter.json b/src/generated/resources/data/nuclearscience/recipes/teleporter.json new file mode 100644 index 00000000..46f6f41f --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/teleporter.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "TCT", + "HEH", + "PDP" + ], + "key": { + "P": { + "item": "minecraft:ender_pearl" + }, + "C": { + "item": "electrodynamics:ceramicfuse" + }, + "T": { + "tag": "forge:plates/titaniumcarbide" + }, + "D": { + "tag": "forge:cells/dark_matter" + }, + "E": { + "tag": "forge:circuits/elite" + }, + "H": { + "tag": "forge:plates/hslasteel" + } + }, + "result": { + "item": "nuclearscience:teleporter" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/nuclearscience/recipes/turbine.json b/src/generated/resources/data/nuclearscience/recipes/turbine.json new file mode 100644 index 00000000..860c3f92 --- /dev/null +++ b/src/generated/resources/data/nuclearscience/recipes/turbine.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " W ", + "PMP", + " P " + ], + "key": { + "P": { + "tag": "forge:plates/steel" + }, + "W": { + "item": "electrodynamics:wiregold" + }, + "M": { + "item": "electrodynamics:motor" + } + }, + "result": { + "item": "nuclearscience:turbine" + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/DeferredRegisters.java b/src/main/java/nuclearscience/DeferredRegisters.java index 07fa6b3b..f03c17a4 100644 --- a/src/main/java/nuclearscience/DeferredRegisters.java +++ b/src/main/java/nuclearscience/DeferredRegisters.java @@ -1,323 +1,323 @@ package nuclearscience; -import java.util.HashMap; -import java.util.function.Supplier; - -import com.google.common.collect.Sets; - -import electrodynamics.api.ISubtype; -import electrodynamics.common.blockitem.BlockItemDescriptable; -import electrodynamics.prefab.block.GenericMachineBlock; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockBehaviour.Properties; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.ForgeRegistryEntry; -import net.minecraftforge.registries.RegistryObject; -import nuclearscience.common.block.BlockControlRodAssembly; -import nuclearscience.common.block.BlockElectromagnet; -import nuclearscience.common.block.BlockElectromagneticBooster; -import nuclearscience.common.block.BlockElectromagneticSwitch; -import nuclearscience.common.block.BlockFuelReprocessor; -import nuclearscience.common.block.BlockFusionReactorCore; -import nuclearscience.common.block.BlockMeltedReactor; -import nuclearscience.common.block.BlockMoltenSaltSupplier; -import nuclearscience.common.block.BlockPlasma; -import nuclearscience.common.block.BlockQuantumCapacitor; -import nuclearscience.common.block.BlockRadioactiveAir; -import nuclearscience.common.block.BlockRadioactiveProcessor; -import nuclearscience.common.block.BlockRadioactiveSoil; -import nuclearscience.common.block.BlockReactorCore; -import nuclearscience.common.block.BlockTeleporter; -import nuclearscience.common.block.BlockTurbine; -import nuclearscience.common.block.connect.BlockMoltenSaltPipe; -import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; -import nuclearscience.common.entity.EntityParticle; -import nuclearscience.common.fluid.types.FluidAmmonia; -import nuclearscience.common.fluid.types.FluidUraniumHexafluoride; -import nuclearscience.common.inventory.container.ContainerAtomicAssembler; -import nuclearscience.common.inventory.container.ContainerChemicalExtractor; -import nuclearscience.common.inventory.container.ContainerFreezePlug; -import nuclearscience.common.inventory.container.ContainerGasCentrifuge; -import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; -import nuclearscience.common.inventory.container.ContainerMSRReactorCore; -import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; -import nuclearscience.common.inventory.container.ContainerNuclearBoiler; -import nuclearscience.common.inventory.container.ContainerParticleInjector; -import nuclearscience.common.inventory.container.ContainerQuantumCapacitor; -import nuclearscience.common.inventory.container.ContainerRadioactiveProcessor; -import nuclearscience.common.inventory.container.ContainerRadioisotopeGenerator; -import nuclearscience.common.inventory.container.ContainerReactorCore; -import nuclearscience.common.item.ItemAntidote; -import nuclearscience.common.item.ItemCanisterLead; -import nuclearscience.common.item.ItemFrequencyCard; -import nuclearscience.common.item.ItemGeigerCounter; -import nuclearscience.common.item.ItemHazmatArmor; -import nuclearscience.common.item.ItemHazmatArmor.ArmorMaterialHazmat; -import nuclearscience.common.item.ItemRadioactive; -import nuclearscience.common.tile.TileAtomicAssembler; -import nuclearscience.common.tile.TileChemicalExtractor; -import nuclearscience.common.tile.TileControlRodAssembly; -import nuclearscience.common.tile.TileElectromagneticSwitch; -import nuclearscience.common.tile.TileFreezePlug; -import nuclearscience.common.tile.TileFuelReprocessor; -import nuclearscience.common.tile.TileFusionReactorCore; -import nuclearscience.common.tile.TileGasCentrifuge; -import nuclearscience.common.tile.TileHeatExchanger; -import nuclearscience.common.tile.TileMSRFuelPreProcessor; -import nuclearscience.common.tile.TileMSRReactorCore; -import nuclearscience.common.tile.TileMeltedReactor; -import nuclearscience.common.tile.TileMoltenSaltSupplier; -import nuclearscience.common.tile.TileNuclearBoiler; -import nuclearscience.common.tile.TileParticleInjector; -import nuclearscience.common.tile.TilePlasma; -import nuclearscience.common.tile.TileQuantumCapacitor; -import nuclearscience.common.tile.TileRadioactiveProcessor; -import nuclearscience.common.tile.TileRadioisotopeGenerator; -import nuclearscience.common.tile.TileReactorCore; -import nuclearscience.common.tile.TileSiren; -import nuclearscience.common.tile.TileTeleporter; -import nuclearscience.common.tile.TileTurbine; -import nuclearscience.common.tile.network.TileMoltenSaltPipe; +//import java.util.HashMap; +//import java.util.function.Supplier; +// +//import com.google.common.collect.Sets; +// +//import electrodynamics.api.ISubtype; +//import electrodynamics.common.blockitem.BlockItemDescriptable; +//import electrodynamics.prefab.block.GenericMachineBlock; +//import net.minecraft.world.entity.EntityType; +//import net.minecraft.world.entity.EquipmentSlot; +//import net.minecraft.world.entity.MobCategory; +//import net.minecraft.world.inventory.MenuType; +//import net.minecraft.world.item.BlockItem; +//import net.minecraft.world.item.Item; +//import net.minecraft.world.level.block.Block; +//import net.minecraft.world.level.block.SoundType; +//import net.minecraft.world.level.block.entity.BlockEntityType; +//import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +//import net.minecraft.world.level.material.Fluid; +//import net.minecraft.world.level.material.Material; +//import net.minecraft.world.level.material.MaterialColor; +//import net.minecraftforge.registries.DeferredRegister; +//import net.minecraftforge.registries.ForgeRegistries; +//import net.minecraftforge.registries.ForgeRegistryEntry; +//import net.minecraftforge.registries.RegistryObject; +//import nuclearscience.common.block.BlockControlRodAssembly; +//import nuclearscience.common.block.BlockElectromagnet; +//import nuclearscience.common.block.BlockElectromagneticBooster; +//import nuclearscience.common.block.BlockElectromagneticSwitch; +//import nuclearscience.common.block.BlockFuelReprocessor; +//import nuclearscience.common.block.BlockFusionReactorCore; +//import nuclearscience.common.block.BlockMeltedReactor; +//import nuclearscience.common.block.BlockMoltenSaltSupplier; +//import nuclearscience.common.block.BlockPlasma; +//import nuclearscience.common.block.BlockQuantumCapacitor; +//import nuclearscience.common.block.BlockRadioactiveAir; +//import nuclearscience.common.block.BlockRadioactiveProcessor; +//import nuclearscience.common.block.BlockRadioactiveSoil; +//import nuclearscience.common.block.BlockFissionReactorCore; +//import nuclearscience.common.block.BlockTeleporter; +//import nuclearscience.common.block.BlockTurbine; +//import nuclearscience.common.block.connect.BlockMoltenSaltPipe; +//import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +//import nuclearscience.common.entity.EntityParticle; +//import nuclearscience.common.fluid.types.FluidAmmonia; +//import nuclearscience.common.fluid.types.FluidUraniumHexafluoride; +//import nuclearscience.common.inventory.container.ContainerAtomicAssembler; +//import nuclearscience.common.inventory.container.ContainerChemicalExtractor; +//import nuclearscience.common.inventory.container.ContainerFreezePlug; +//import nuclearscience.common.inventory.container.ContainerGasCentrifuge; +//import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; +//import nuclearscience.common.inventory.container.ContainerMSRReactorCore; +//import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; +//import nuclearscience.common.inventory.container.ContainerNuclearBoiler; +//import nuclearscience.common.inventory.container.ContainerParticleInjector; +//import nuclearscience.common.inventory.container.ContainerQuantumCapacitor; +//import nuclearscience.common.inventory.container.ContainerRadioactiveProcessor; +//import nuclearscience.common.inventory.container.ContainerRadioisotopeGenerator; +//import nuclearscience.common.inventory.container.ContainerReactorCore; +//import nuclearscience.common.item.ItemAntidote; +//import nuclearscience.common.item.ItemCanisterLead; +//import nuclearscience.common.item.ItemFrequencyCard; +//import nuclearscience.common.item.ItemGeigerCounter; +//import nuclearscience.common.item.ItemHazmatArmor; +//import nuclearscience.common.item.ItemHazmatArmor.ArmorMaterialHazmat; +//import nuclearscience.common.item.ItemRadioactive; +//import nuclearscience.common.tile.TileAtomicAssembler; +//import nuclearscience.common.tile.TileChemicalExtractor; +//import nuclearscience.common.tile.TileControlRodAssembly; +//import nuclearscience.common.tile.TileElectromagneticSwitch; +//import nuclearscience.common.tile.TileFuelReprocessor; +//import nuclearscience.common.tile.TileGasCentrifuge; +//import nuclearscience.common.tile.TileNuclearBoiler; +//import nuclearscience.common.tile.TileParticleInjector; +//import nuclearscience.common.tile.TileQuantumCapacitor; +//import nuclearscience.common.tile.TileRadioactiveProcessor; +//import nuclearscience.common.tile.TileRadioisotopeGenerator; +//import nuclearscience.common.tile.TileSiren; +//import nuclearscience.common.tile.TileTeleporter; +//import nuclearscience.common.tile.TileTurbine; +//import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; +//import nuclearscience.common.tile.fissionreactor.TileMeltedReactor; +//import nuclearscience.common.tile.fusionreactor.TileFusionReactorCore; +//import nuclearscience.common.tile.fusionreactor.TilePlasma; +//import nuclearscience.common.tile.msreactor.TileFreezePlug; +//import nuclearscience.common.tile.msreactor.TileHeatExchanger; +//import nuclearscience.common.tile.msreactor.TileMSRFuelPreProcessor; +//import nuclearscience.common.tile.msreactor.TileMSReactorCore; +//import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; +//import nuclearscience.common.tile.saltpipe.TileMoltenSaltPipe; public class DeferredRegisters { - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, References.ID); - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, References.ID); - public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, References.ID); - public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, References.ID); - public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, References.ID); - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, References.ID); - public static final HashMap> SUBTYPEITEMREGISTER_MAPPINGS = new HashMap<>(); - public static final HashMap> SUBTYPEBLOCKREGISTER_MAPPINGS = new HashMap<>(); - - public static FluidUraniumHexafluoride fluidUraniumHexafluoride; - public static FluidAmmonia fluidAmmonia; - - public static GenericMachineBlock blockGasCentrifuge; - public static GenericMachineBlock blockNuclearBoiler; - public static GenericMachineBlock blockChemicalExtractor; - public static GenericMachineBlock blockRadioisotopeGenerator; - public static BlockTurbine blockTurbine; - public static BlockReactorCore blockReactorCore; - public static BlockElectromagnet blockElectromagnet; - public static BlockElectromagnet blockElectromagneticGlass; - public static BlockElectromagneticBooster blockElectromagneticBooster; - public static BlockElectromagneticSwitch blockElectromagneticSwitch; - public static BlockFusionReactorCore blockFusionReactorCore; - public static BlockPlasma blockPlasma; - public static BlockMeltedReactor blockMeltedReactor; - public static GenericMachineBlock blockParticleInjector; - public static BlockQuantumCapacitor blockQuantumCapacitor; - public static BlockTeleporter blockTeleporter; - public static BlockControlRodAssembly blockControlRodAssembly; - public static BlockFuelReprocessor blockFuelReprocessor; - public static BlockRadioactiveProcessor blockRadioactiveProcessor; - public static GenericMachineBlock blockMSRFuelPreProcessor; - public static GenericMachineBlock blockFreezePlug; - public static GenericMachineBlock blockMsrReactorCore; - public static GenericMachineBlock blockHeatExchanger; - public static GenericMachineBlock blockSiren; - public static GenericMachineBlock blockAtomicAssembler; - public static BlockMoltenSaltSupplier blockMoltenSaltSupplier; - public static BlockRadioactiveSoil blockRadioactiveSoil; - public static BlockRadioactiveAir blockRadioactiveAir; - - public static Block blocklead; - - static { - BLOCKS.register("gascentrifuge", supplier(() -> blockGasCentrifuge = new GenericMachineBlock(TileGasCentrifuge::new))); - BLOCKS.register("nuclearboiler", supplier(() -> blockNuclearBoiler = new GenericMachineBlock(TileNuclearBoiler::new))); - BLOCKS.register("chemicalextractor", supplier(() -> blockChemicalExtractor = new GenericMachineBlock(TileChemicalExtractor::new))); - BLOCKS.register("radioisotopegenerator", supplier(() -> blockRadioisotopeGenerator = new GenericMachineBlock(TileRadioisotopeGenerator::new))); - BLOCKS.register("freezeplug", supplier(() -> blockFreezePlug = new GenericMachineBlock(TileFreezePlug::new))); - BLOCKS.register("turbine", supplier(() -> blockTurbine = new BlockTurbine())); - BLOCKS.register("reactorcore", supplier(() -> blockReactorCore = new BlockReactorCore())); - BLOCKS.register("electromagnet", supplier(() -> blockElectromagnet = new BlockElectromagnet(false))); - BLOCKS.register("electromagneticglass", supplier(() -> blockElectromagneticGlass = new BlockElectromagnet(true))); - BLOCKS.register("electromagneticbooster", supplier(() -> blockElectromagneticBooster = new BlockElectromagneticBooster())); - BLOCKS.register("electromagneticswitch", supplier(() -> blockElectromagneticSwitch = new BlockElectromagneticSwitch())); - BLOCKS.register("fusionreactorcore", supplier(() -> blockFusionReactorCore = new BlockFusionReactorCore())); - BLOCKS.register("plasma", supplier(() -> blockPlasma = new BlockPlasma())); - BLOCKS.register("particleinjector", supplier(() -> blockParticleInjector = new GenericMachineBlock(TileParticleInjector::new))); - BLOCKS.register("quantumcapacitor", supplier(() -> blockQuantumCapacitor = new BlockQuantumCapacitor())); - BLOCKS.register("teleporter", supplier(() -> blockTeleporter = new BlockTeleporter())); - BLOCKS.register("controlrodassembly", supplier(() -> blockControlRodAssembly = new BlockControlRodAssembly())); - BLOCKS.register("fuelreprocessor", supplier(() -> blockFuelReprocessor = new BlockFuelReprocessor())); - BLOCKS.register("radioactiveprocessor", supplier(() -> blockRadioactiveProcessor = new BlockRadioactiveProcessor())); - BLOCKS.register("msrfuelpreprocessor", supplier(() -> blockMSRFuelPreProcessor = new GenericMachineBlock(TileMSRFuelPreProcessor::new))); - BLOCKS.register("blocklead", supplier(() -> blocklead = new Block(Properties.of(Material.METAL, MaterialColor.COLOR_BLACK).strength(5.0f, 3.0f).sound(SoundType.METAL).requiresCorrectToolForDrops()))); - BLOCKS.register("msrreactorcore", supplier(() -> blockMsrReactorCore = new GenericMachineBlock(TileMSRReactorCore::new))); - BLOCKS.register("heatexchanger", supplier(() -> blockHeatExchanger = new GenericMachineBlock(TileHeatExchanger::new))); - BLOCKS.register("siren", supplier(() -> blockSiren = new GenericMachineBlock(TileSiren::new))); - BLOCKS.register("atomicassembler", supplier(() -> blockAtomicAssembler = new GenericMachineBlock(TileAtomicAssembler::new))); - BLOCKS.register("moltensaltsupplier", supplier(() -> blockMoltenSaltSupplier = new BlockMoltenSaltSupplier())); - for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { - SUBTYPEBLOCKREGISTER_MAPPINGS.put(subtype, BLOCKS.register(subtype.tag(), supplier(() -> new BlockMoltenSaltPipe(subtype), subtype))); - } - BLOCKS.register("meltedreactor", supplier(() -> blockMeltedReactor = new BlockMeltedReactor())); - BLOCKS.register("radioactiveair", supplier(() -> blockRadioactiveAir = new BlockRadioactiveAir())); - BLOCKS.register("radioactivesoil", supplier(() -> blockRadioactiveSoil = new BlockRadioactiveSoil())); - ITEMS.register("gascentrifuge", supplier(() -> new BlockItemDescriptable(() -> blockGasCentrifuge, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("nuclearboiler", supplier(() -> new BlockItemDescriptable(() -> blockNuclearBoiler, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("chemicalextractor", supplier(() -> new BlockItemDescriptable(() -> blockChemicalExtractor, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("radioisotopegenerator", supplier(() -> new BlockItemDescriptable(() -> blockRadioisotopeGenerator, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("freezeplug", supplier(() -> new BlockItemDescriptable(() -> blockFreezePlug, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("turbine", supplier(() -> new BlockItemDescriptable(() -> blockTurbine, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("reactorcore", supplier(() -> new BlockItemDescriptable(() -> blockReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("fuelreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockFuelReprocessor, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("radioactiveprocessor", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("msrfuelpreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockMSRFuelPreProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("blocklead", supplier(() -> new BlockItemDescriptable(() -> blocklead, new BlockItem.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("electromagnet", supplier(() -> new BlockItemDescriptable(() -> blockElectromagnet, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("electromagneticglass", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticGlass, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("electromagneticbooster", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticBooster, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("electromagneticswitch", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticSwitch, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("fusionreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockFusionReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("plasma", supplier(() -> new BlockItemDescriptable(() -> blockPlasma, new Item.Properties()))); - ITEMS.register("particleinjector", supplier(() -> new BlockItemDescriptable(() -> blockParticleInjector, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("quantumcapacitor", supplier(() -> new BlockItemDescriptable(() -> blockQuantumCapacitor, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("teleporter", supplier(() -> new BlockItemDescriptable(() -> blockTeleporter, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("controlrodassembly", supplier(() -> new BlockItemDescriptable(() -> blockControlRodAssembly, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("msrreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockMsrReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("heatexchanger", supplier(() -> new BlockItemDescriptable(() -> blockHeatExchanger, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("moltensaltsupplier", supplier(() -> new BlockItemDescriptable(() -> blockMoltenSaltSupplier, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("siren", supplier(() -> new BlockItemDescriptable(() -> blockSiren, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("atomicassembler", supplier(() -> new BlockItemDescriptable(() -> blockAtomicAssembler, new Item.Properties().tab(References.NUCLEARTAB)))); - for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { - ITEMS.register(subtype.tag(), supplier(() -> new BlockItemDescriptable(() -> getSafeBlock(subtype), new Item.Properties().tab(References.NUCLEARTAB)), subtype)); - } - ITEMS.register("radioactivesoil", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveSoil, new Item.Properties().tab(References.NUCLEARTAB)))); - ITEMS.register("meltedreactor", supplier(() -> new BlockItemDescriptable(() -> blockMeltedReactor, new Item.Properties().tab(References.NUCLEARTAB)))); - FLUIDS.register("fluiduraniumhexafluoride", supplier(() -> fluidUraniumHexafluoride = new FluidUraniumHexafluoride())); - - FLUIDS.register("fluidammonia", supplier(() -> fluidAmmonia = new FluidAmmonia())); - - // Machines - BlockItemDescriptable.addDescription(() -> blockGasCentrifuge, "|translate|tooltip.voltage.240"); - BlockItemDescriptable.addDescription(() -> blockNuclearBoiler, "|translate|tooltip.voltage.240"); - BlockItemDescriptable.addDescription(() -> blockChemicalExtractor, "|translate|tooltip.voltage.240"); - BlockItemDescriptable.addDescription(() -> blockParticleInjector, "|translate|tooltip.voltage.960"); - BlockItemDescriptable.addDescription(() -> blockTeleporter, "|translate|tooltip.voltage.480"); - BlockItemDescriptable.addDescription(() -> blockFuelReprocessor, "|translate|tooltip.voltage.480"); - BlockItemDescriptable.addDescription(() -> blockRadioactiveProcessor, "|translate|tooltip.voltage.480"); - BlockItemDescriptable.addDescription(() -> blockMSRFuelPreProcessor, "|translate|tooltip.voltage.240"); - BlockItemDescriptable.addDescription(() -> blockMoltenSaltSupplier, "|translate|tooltip.voltage.120"); - BlockItemDescriptable.addDescription(() -> blockFusionReactorCore, "|translate|tooltip.voltage.480"); - BlockItemDescriptable.addDescription(() -> blockFreezePlug, "|translate|tooltip.voltage.120"); - BlockItemDescriptable.addDescription(() -> blockAtomicAssembler, "|translate|tooltip.voltage.480"); - - // Generators - BlockItemDescriptable.addDescription(() -> blockRadioisotopeGenerator, "|translate|tooltip.voltage.120"); - - // Misc - BlockItemDescriptable.addDescription(() -> blockQuantumCapacitor, "|translate|tooltip.voltage.1920"); - } - - public static final RegistryObject ITEM_URANIUM235 = ITEMS.register("uranium235", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_URANIUM238 = ITEMS.register("uranium238", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_PLUTONIUM239 = ITEMS.register("plutonium239", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_POLONIUM210 = ITEMS.register("polonium210", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_POLONIUM210_CHUNK = ITEMS.register("polonium210chunk", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_LIFHT4PUF3 = ITEMS.register("lifthf4uf4", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_FLINAK = ITEMS.register("flinak", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_YELLOWCAKE = ITEMS.register("yellowcake", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_FISSILEDUST = ITEMS.register("fissiledust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_PLUTONIUMOXIDE = ITEMS.register("plutoniumoxide", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_THORIANITEDUST = ITEMS.register("thorianitedust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); - - public static final RegistryObject ITEM_CELLEMPTY = ITEMS.register("cellempty", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLDEUTERIUM = ITEMS.register("celldeuterium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLTRITIUM = ITEMS.register("celltritium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLHEAVYWATER = ITEMS.register("cellheavywater", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLELECTROMAGNETIC = ITEMS.register("cellelectromagnetic", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLANTIMATTERSMALL = ITEMS.register("cellantimattersmall", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLANTIMATTERLARGE = ITEMS.register("cellantimatterlarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLANTIMATTERVERYLARGE = ITEMS.register("cellantimatterverylarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CELLDARKMATTER = ITEMS.register("celldarkmatter", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB).defaultDurability(4)))); - public static final RegistryObject ITEM_FUELHEUO2 = ITEMS.register("fuelheuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(24000)))); - public static final RegistryObject ITEM_FUELLEUO2 = ITEMS.register("fuelleuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_FUELSPENT = ITEMS.register("fuelspent", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1)))); - // Incredibly long life-span, but hard to get - public static final RegistryObject ITEM_FUELPLUTONIUM = ITEMS.register("fuelplutonium", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(120000)))); - - public static final RegistryObject ITEM_GEIGERCOUNTER = ITEMS.register("geigercounter", supplier(() -> new ItemGeigerCounter(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_HAZMATBOOTS = ITEMS.register("hazmatboots", supplier(() -> new ItemHazmatArmor(EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_HAZMATHELMET = ITEMS.register("hazmathelmet", supplier(() -> new ItemHazmatArmor(EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_HAZMATLEGS = ITEMS.register("hazmatlegs", supplier(() -> new ItemHazmatArmor(EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_HAZMATPLATE = ITEMS.register("hazmatplate", supplier(() -> new ItemHazmatArmor(EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); - public static final RegistryObject ITEM_REINFORCEDHAZMATBOOTS = ITEMS.register("reinforcedhazmatboots", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); - public static final RegistryObject ITEM_REINFORCEDHAZMATHELMET = ITEMS.register("reinforcedhazmathelmet", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); - public static final RegistryObject ITEM_REINFORCEDHAZMATLEGS = ITEMS.register("reinforcedhazmatlegs", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); - public static final RegistryObject ITEM_REINFORCEDHAZMATPLATE = ITEMS.register("reinforcedhazmatplate", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); - public static final RegistryObject ITEM_ANTIDOTE = ITEMS.register("antidote", supplier(() -> new ItemAntidote(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_FREQUENCYCARD = ITEMS.register("frequencycard", supplier(() -> new ItemFrequencyCard(new Item.Properties().tab(References.NUCLEARTAB)))); - public static final RegistryObject ITEM_CANISTERLEAD = ITEMS.register("canisterlead", supplier(() -> new ItemCanisterLead(new Item.Properties().stacksTo(1).tab(References.NUCLEARTAB)))); - - public static final RegistryObject> TILE_GASCENTRIFUGE = TILES.register("gascentrifuge", () -> new BlockEntityType<>(TileGasCentrifuge::new, Sets.newHashSet(blockGasCentrifuge), null)); - public static final RegistryObject> TILE_CHEMICALBOILER = TILES.register("nuclearboiler", () -> new BlockEntityType<>(TileNuclearBoiler::new, Sets.newHashSet(blockNuclearBoiler), null)); - public static final RegistryObject> TILE_CHEMICALEXTRACTOR = TILES.register("chemicalextractor", () -> new BlockEntityType<>(TileChemicalExtractor::new, Sets.newHashSet(blockChemicalExtractor), null)); - public static final RegistryObject> TILE_RADIOISOTOPEGENERATOR = TILES.register("radioisotopegenerator", () -> new BlockEntityType<>(TileRadioisotopeGenerator::new, Sets.newHashSet(blockRadioisotopeGenerator), null)); - public static final RegistryObject> TILE_MOLTENSALTSUPPLIER = TILES.register("moltensaltsupplier", () -> new BlockEntityType<>(TileMoltenSaltSupplier::new, Sets.newHashSet(blockMoltenSaltSupplier), null)); - public static final RegistryObject> TILE_FREEZEPLUG = TILES.register("freezeplug", () -> new BlockEntityType<>(TileFreezePlug::new, Sets.newHashSet(blockFreezePlug), null)); - public static final RegistryObject> TILE_TURBINE = TILES.register("turbine", () -> new BlockEntityType<>(TileTurbine::new, Sets.newHashSet(blockTurbine), null)); - public static final RegistryObject> TILE_REACTORCORE = TILES.register("reactorcore", () -> new BlockEntityType<>(TileReactorCore::new, Sets.newHashSet(blockReactorCore), null)); - public static final RegistryObject> TILE_FUSIONREACTORCORE = TILES.register("fusionreactorcore", () -> new BlockEntityType<>(TileFusionReactorCore::new, Sets.newHashSet(blockFusionReactorCore), null)); - public static final RegistryObject> TILE_PARTICLEINJECTOR = TILES.register("particleinjector", () -> new BlockEntityType<>(TileParticleInjector::new, Sets.newHashSet(blockParticleInjector), null)); - public static final RegistryObject> TILE_ELECTROMAGNETICSWITCH = TILES.register("electromagneticswitch", () -> new BlockEntityType<>(TileElectromagneticSwitch::new, Sets.newHashSet(blockElectromagneticSwitch), null)); - public static final RegistryObject> TILE_PLASMA = TILES.register("plasma", () -> new BlockEntityType<>(TilePlasma::new, Sets.newHashSet(blockPlasma), null)); - public static final RegistryObject> TILE_MELTEDREACTOR = TILES.register("meltedreactor", () -> new BlockEntityType<>(TileMeltedReactor::new, Sets.newHashSet(blockMeltedReactor), null)); - public static final RegistryObject> TILE_QUANTUMCAPACITOR = TILES.register("quantumcapacitor", () -> new BlockEntityType<>(TileQuantumCapacitor::new, Sets.newHashSet(blockQuantumCapacitor), null)); - - public static final RegistryObject> TILE_FUELREPROCESSOR = TILES.register("fuelreprocessor", () -> new BlockEntityType<>(TileFuelReprocessor::new, Sets.newHashSet(blockFuelReprocessor), null)); - public static final RegistryObject> TILE_RADIOACTIVEPROCESSOR = TILES.register("radioactiveprocessor", () -> new BlockEntityType<>(TileRadioactiveProcessor::new, Sets.newHashSet(blockRadioactiveProcessor), null)); - public static final RegistryObject> TILE_MSRFUELPREPROCESSOR = TILES.register("msrfuelpreprocessor", () -> new BlockEntityType<>(TileMSRFuelPreProcessor::new, Sets.newHashSet(blockMSRFuelPreProcessor), null)); - public static final RegistryObject> TILE_MSRREACTORCORE = TILES.register("msrreactorcore", () -> new BlockEntityType<>(TileMSRReactorCore::new, Sets.newHashSet(blockMsrReactorCore), null)); - public static final RegistryObject> TILE_HEATEXCHANGER = TILES.register("heatexchanger", () -> new BlockEntityType<>(TileHeatExchanger::new, Sets.newHashSet(blockHeatExchanger), null)); - - public static final RegistryObject> TILE_TELEPORTER = TILES.register("teleporter", () -> new BlockEntityType<>(TileTeleporter::new, Sets.newHashSet(blockTeleporter), null)); - - public static final RegistryObject> TILE_CONTROLRODASSEMBLY = TILES.register("controlrodassembly", () -> new BlockEntityType<>(TileControlRodAssembly::new, Sets.newHashSet(blockControlRodAssembly), null)); - - public static final RegistryObject> TILE_MOLTENSALTPIPE = TILES.register("moltensaltpipegenerictile", () -> new BlockEntityType<>(TileMoltenSaltPipe::new, BlockMoltenSaltPipe.PIPESET, null)); - public static final RegistryObject> TILE_SIREN = TILES.register("siren", () -> new BlockEntityType<>(TileSiren::new, Sets.newHashSet(blockSiren), null)); - public static final RegistryObject> TILE_ATOMICASSEMBLER = TILES.register("atomicassembler", () -> new BlockEntityType<>(TileAtomicAssembler::new, Sets.newHashSet(blockAtomicAssembler), null)); - - public static final RegistryObject> CONTAINER_GASCENTRIFUGE = CONTAINERS.register("gascentrifuge", () -> new MenuType<>(ContainerGasCentrifuge::new)); - public static final RegistryObject> CONTAINER_NUCLEARBOILER = CONTAINERS.register("nuclearboiler", () -> new MenuType<>(ContainerNuclearBoiler::new)); - public static final RegistryObject> CONTAINER_CHEMICALEXTRACTOR = CONTAINERS.register("chemicalextractor", () -> new MenuType<>(ContainerChemicalExtractor::new)); - public static final RegistryObject> CONTAINER_RADIOISOTOPEGENERATOR = CONTAINERS.register("radioisotopegenerator", () -> new MenuType<>(ContainerRadioisotopeGenerator::new)); - public static final RegistryObject> CONTAINER_FREEZEPLUG = CONTAINERS.register("freezeplug", () -> new MenuType<>(ContainerFreezePlug::new)); - public static final RegistryObject> CONTAINER_REACTORCORE = CONTAINERS.register("reactorcore", () -> new MenuType<>(ContainerReactorCore::new)); - public static final RegistryObject> CONTAINER_PARTICLEINJECTOR = CONTAINERS.register("particleinjetor", () -> new MenuType<>(ContainerParticleInjector::new)); - public static final RegistryObject> CONTAINER_QUANTUMCAPACITOR = CONTAINERS.register("quantumcapacitor", () -> new MenuType<>(ContainerQuantumCapacitor::new)); - public static final RegistryObject> CONTAINER_RADIOACTIVEPROCESSOR = CONTAINERS.register("radioactiveprocessor", () -> new MenuType<>(ContainerRadioactiveProcessor::new)); - public static final RegistryObject> CONTAINER_MSRFUELPREPROCESSOR = CONTAINERS.register("msrfuelpreprocessor", () -> new MenuType<>(ContainerMSRFuelPreProcessor::new)); - public static final RegistryObject> CONTAINER_MSRREACTORCORE = CONTAINERS.register("msrreactorcore", () -> new MenuType<>(ContainerMSRReactorCore::new)); - public static final RegistryObject> CONTAINER_MOLTENSALTSUPPLIER = CONTAINERS.register("moltensaltsupplier", () -> new MenuType<>(ContainerMoltenSaltSupplier::new)); - public static final RegistryObject> CONTAINER_ATOMICASSEMBLER = CONTAINERS.register("atomicassembler", () -> new MenuType<>(ContainerAtomicAssembler::new)); - - public static final RegistryObject> ENTITY_PARTICLE = ENTITIES.register("particle", () -> EntityType.Builder.of(EntityParticle::new, MobCategory.MISC).clientTrackingRange(8).build(References.ID + ".particle")); - - private static > Supplier supplier(Supplier entry) { - return entry; - } - - private static > Supplier supplier(Supplier entry, ISubtype en) { - return entry; - } - - public static Block getSafeBlock(ISubtype type) { - return SUBTYPEBLOCKREGISTER_MAPPINGS.get(type).get(); - } +// public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, References.ID); +// public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, References.ID); +// public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, References.ID); +// public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, References.ID); +// public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, References.ID); +// public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, References.ID); +// public static final HashMap> SUBTYPEITEMREGISTER_MAPPINGS = new HashMap<>(); +// public static final HashMap> SUBTYPEBLOCKREGISTER_MAPPINGS = new HashMap<>(); +// +// public static FluidUraniumHexafluoride fluidUraniumHexafluoride; +// public static FluidAmmonia fluidAmmonia; +// +// public static GenericMachineBlock blockGasCentrifuge; +// public static GenericMachineBlock blockNuclearBoiler; +// public static GenericMachineBlock blockChemicalExtractor; +// public static GenericMachineBlock blockRadioisotopeGenerator; +// public static BlockTurbine blockTurbine; +// public static BlockFissionReactorCore blockReactorCore; +// public static BlockElectromagnet blockElectromagnet; +// public static BlockElectromagnet blockElectromagneticGlass; +// public static BlockElectromagneticBooster blockElectromagneticBooster; +// public static BlockElectromagneticSwitch blockElectromagneticSwitch; +// public static BlockFusionReactorCore blockFusionReactorCore; +// public static BlockPlasma blockPlasma; +// public static BlockMeltedReactor blockMeltedReactor; +// public static GenericMachineBlock blockParticleInjector; +// public static BlockQuantumCapacitor blockQuantumCapacitor; +// public static BlockTeleporter blockTeleporter; +// public static BlockControlRodAssembly blockControlRodAssembly; +// public static BlockFuelReprocessor blockFuelReprocessor; +// public static BlockRadioactiveProcessor blockRadioactiveProcessor; +// public static GenericMachineBlock blockMSRFuelPreProcessor; +// public static GenericMachineBlock blockFreezePlug; +// public static GenericMachineBlock blockMsrReactorCore; +// public static GenericMachineBlock blockHeatExchanger; +// public static GenericMachineBlock blockSiren; +// public static GenericMachineBlock blockAtomicAssembler; +// public static BlockMoltenSaltSupplier blockMoltenSaltSupplier; +// public static BlockRadioactiveSoil blockRadioactiveSoil; +// public static BlockRadioactiveAir blockRadioactiveAir; +// +// public static Block blocklead; +// +// static { +// BLOCKS.register("gascentrifuge", supplier(() -> blockGasCentrifuge = new GenericMachineBlock(TileGasCentrifuge::new))); +// BLOCKS.register("nuclearboiler", supplier(() -> blockNuclearBoiler = new GenericMachineBlock(TileNuclearBoiler::new))); +// BLOCKS.register("chemicalextractor", supplier(() -> blockChemicalExtractor = new GenericMachineBlock(TileChemicalExtractor::new))); +// BLOCKS.register("radioisotopegenerator", supplier(() -> blockRadioisotopeGenerator = new GenericMachineBlock(TileRadioisotopeGenerator::new))); +// BLOCKS.register("freezeplug", supplier(() -> blockFreezePlug = new GenericMachineBlock(TileFreezePlug::new))); +// BLOCKS.register("turbine", supplier(() -> blockTurbine = new BlockTurbine())); +// BLOCKS.register("reactorcore", supplier(() -> blockReactorCore = new BlockFissionReactorCore())); +// BLOCKS.register("electromagnet", supplier(() -> blockElectromagnet = new BlockElectromagnet(false))); +// BLOCKS.register("electromagneticglass", supplier(() -> blockElectromagneticGlass = new BlockElectromagnet(true))); +// BLOCKS.register("electromagneticbooster", supplier(() -> blockElectromagneticBooster = new BlockElectromagneticBooster())); +// BLOCKS.register("electromagneticswitch", supplier(() -> blockElectromagneticSwitch = new BlockElectromagneticSwitch())); +// BLOCKS.register("fusionreactorcore", supplier(() -> blockFusionReactorCore = new BlockFusionReactorCore())); +// BLOCKS.register("plasma", supplier(() -> blockPlasma = new BlockPlasma())); +// BLOCKS.register("particleinjector", supplier(() -> blockParticleInjector = new GenericMachineBlock(TileParticleInjector::new))); +// BLOCKS.register("quantumcapacitor", supplier(() -> blockQuantumCapacitor = new BlockQuantumCapacitor())); +// BLOCKS.register("teleporter", supplier(() -> blockTeleporter = new BlockTeleporter())); +// BLOCKS.register("controlrodassembly", supplier(() -> blockControlRodAssembly = new BlockControlRodAssembly())); +// BLOCKS.register("fuelreprocessor", supplier(() -> blockFuelReprocessor = new BlockFuelReprocessor())); +// BLOCKS.register("radioactiveprocessor", supplier(() -> blockRadioactiveProcessor = new BlockRadioactiveProcessor())); +// BLOCKS.register("msrfuelpreprocessor", supplier(() -> blockMSRFuelPreProcessor = new GenericMachineBlock(TileMSRFuelPreProcessor::new))); +// BLOCKS.register("blocklead", supplier(() -> blocklead = new Block(Properties.of(Material.METAL, MaterialColor.COLOR_BLACK).strength(5.0f, 3.0f).sound(SoundType.METAL).requiresCorrectToolForDrops()))); +// BLOCKS.register("msrreactorcore", supplier(() -> blockMsrReactorCore = new GenericMachineBlock(TileMSReactorCore::new))); +// BLOCKS.register("heatexchanger", supplier(() -> blockHeatExchanger = new GenericMachineBlock(TileHeatExchanger::new))); +// BLOCKS.register("siren", supplier(() -> blockSiren = new GenericMachineBlock(TileSiren::new))); +// BLOCKS.register("atomicassembler", supplier(() -> blockAtomicAssembler = new GenericMachineBlock(TileAtomicAssembler::new))); +// BLOCKS.register("moltensaltsupplier", supplier(() -> blockMoltenSaltSupplier = new BlockMoltenSaltSupplier())); +// for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { +// SUBTYPEBLOCKREGISTER_MAPPINGS.put(subtype, BLOCKS.register(subtype.tag(), supplier(() -> new BlockMoltenSaltPipe(subtype), subtype))); +// } +// BLOCKS.register("meltedreactor", supplier(() -> blockMeltedReactor = new BlockMeltedReactor())); +// BLOCKS.register("radioactiveair", supplier(() -> blockRadioactiveAir = new BlockRadioactiveAir())); +// BLOCKS.register("radioactivesoil", supplier(() -> blockRadioactiveSoil = new BlockRadioactiveSoil())); +// ITEMS.register("gascentrifuge", supplier(() -> new BlockItemDescriptable(() -> blockGasCentrifuge, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("nuclearboiler", supplier(() -> new BlockItemDescriptable(() -> blockNuclearBoiler, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("chemicalextractor", supplier(() -> new BlockItemDescriptable(() -> blockChemicalExtractor, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("radioisotopegenerator", supplier(() -> new BlockItemDescriptable(() -> blockRadioisotopeGenerator, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("freezeplug", supplier(() -> new BlockItemDescriptable(() -> blockFreezePlug, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("turbine", supplier(() -> new BlockItemDescriptable(() -> blockTurbine, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("reactorcore", supplier(() -> new BlockItemDescriptable(() -> blockReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("fuelreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockFuelReprocessor, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("radioactiveprocessor", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("msrfuelpreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockMSRFuelPreProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("blocklead", supplier(() -> new BlockItemDescriptable(() -> blocklead, new BlockItem.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("electromagnet", supplier(() -> new BlockItemDescriptable(() -> blockElectromagnet, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("electromagneticglass", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticGlass, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("electromagneticbooster", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticBooster, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("electromagneticswitch", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticSwitch, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("fusionreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockFusionReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("plasma", supplier(() -> new BlockItemDescriptable(() -> blockPlasma, new Item.Properties()))); +// ITEMS.register("particleinjector", supplier(() -> new BlockItemDescriptable(() -> blockParticleInjector, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("quantumcapacitor", supplier(() -> new BlockItemDescriptable(() -> blockQuantumCapacitor, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("teleporter", supplier(() -> new BlockItemDescriptable(() -> blockTeleporter, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("controlrodassembly", supplier(() -> new BlockItemDescriptable(() -> blockControlRodAssembly, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("msrreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockMsrReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("heatexchanger", supplier(() -> new BlockItemDescriptable(() -> blockHeatExchanger, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("moltensaltsupplier", supplier(() -> new BlockItemDescriptable(() -> blockMoltenSaltSupplier, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("siren", supplier(() -> new BlockItemDescriptable(() -> blockSiren, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("atomicassembler", supplier(() -> new BlockItemDescriptable(() -> blockAtomicAssembler, new Item.Properties().tab(References.NUCLEARTAB)))); +// for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { +// ITEMS.register(subtype.tag(), supplier(() -> new BlockItemDescriptable(() -> getSafeBlock(subtype), new Item.Properties().tab(References.NUCLEARTAB)), subtype)); +// } +// ITEMS.register("radioactivesoil", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveSoil, new Item.Properties().tab(References.NUCLEARTAB)))); +// ITEMS.register("meltedreactor", supplier(() -> new BlockItemDescriptable(() -> blockMeltedReactor, new Item.Properties().tab(References.NUCLEARTAB)))); +// FLUIDS.register("fluiduraniumhexafluoride", supplier(() -> fluidUraniumHexafluoride = new FluidUraniumHexafluoride())); +// +// FLUIDS.register("fluidammonia", supplier(() -> fluidAmmonia = new FluidAmmonia())); +// +// // Machines +// BlockItemDescriptable.addDescription(() -> blockGasCentrifuge, "|translate|tooltip.voltage.240"); +// BlockItemDescriptable.addDescription(() -> blockNuclearBoiler, "|translate|tooltip.voltage.240"); +// BlockItemDescriptable.addDescription(() -> blockChemicalExtractor, "|translate|tooltip.voltage.240"); +// BlockItemDescriptable.addDescription(() -> blockParticleInjector, "|translate|tooltip.voltage.960"); +// BlockItemDescriptable.addDescription(() -> blockTeleporter, "|translate|tooltip.voltage.480"); +// BlockItemDescriptable.addDescription(() -> blockFuelReprocessor, "|translate|tooltip.voltage.480"); +// BlockItemDescriptable.addDescription(() -> blockRadioactiveProcessor, "|translate|tooltip.voltage.480"); +// BlockItemDescriptable.addDescription(() -> blockMSRFuelPreProcessor, "|translate|tooltip.voltage.240"); +// BlockItemDescriptable.addDescription(() -> blockMoltenSaltSupplier, "|translate|tooltip.voltage.120"); +// BlockItemDescriptable.addDescription(() -> blockFusionReactorCore, "|translate|tooltip.voltage.480"); +// BlockItemDescriptable.addDescription(() -> blockFreezePlug, "|translate|tooltip.voltage.120"); +// BlockItemDescriptable.addDescription(() -> blockAtomicAssembler, "|translate|tooltip.voltage.480"); +// +// // Generators +// BlockItemDescriptable.addDescription(() -> blockRadioisotopeGenerator, "|translate|tooltip.voltage.120"); +// +// // Misc +// BlockItemDescriptable.addDescription(() -> blockQuantumCapacitor, "|translate|tooltip.voltage.1920"); +// } +// +// public static final RegistryObject ITEM_URANIUM235 = ITEMS.register("uranium235", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_URANIUM238 = ITEMS.register("uranium238", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_PLUTONIUM239 = ITEMS.register("plutonium239", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_POLONIUM210 = ITEMS.register("polonium210", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_POLONIUM210_CHUNK = ITEMS.register("polonium210chunk", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_LIFHT4PUF3 = ITEMS.register("lifthf4uf4", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_FLINAK = ITEMS.register("flinak", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_YELLOWCAKE = ITEMS.register("yellowcake", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_FISSILEDUST = ITEMS.register("fissiledust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_PLUTONIUMOXIDE = ITEMS.register("plutoniumoxide", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_THORIANITEDUST = ITEMS.register("thorianitedust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); +// +// public static final RegistryObject ITEM_CELLEMPTY = ITEMS.register("cellempty", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLDEUTERIUM = ITEMS.register("celldeuterium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLTRITIUM = ITEMS.register("celltritium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLHEAVYWATER = ITEMS.register("cellheavywater", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLELECTROMAGNETIC = ITEMS.register("cellelectromagnetic", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLANTIMATTERSMALL = ITEMS.register("cellantimattersmall", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLANTIMATTERLARGE = ITEMS.register("cellantimatterlarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLANTIMATTERVERYLARGE = ITEMS.register("cellantimatterverylarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CELLDARKMATTER = ITEMS.register("celldarkmatter", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB).defaultDurability(4)))); +// public static final RegistryObject ITEM_FUELHEUO2 = ITEMS.register("fuelheuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(24000)))); +// public static final RegistryObject ITEM_FUELLEUO2 = ITEMS.register("fuelleuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_FUELSPENT = ITEMS.register("fuelspent", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1)))); +// // Incredibly long life-span, but hard to get +// public static final RegistryObject ITEM_FUELPLUTONIUM = ITEMS.register("fuelplutonium", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(120000)))); +// +// public static final RegistryObject ITEM_GEIGERCOUNTER = ITEMS.register("geigercounter", supplier(() -> new ItemGeigerCounter(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_HAZMATBOOTS = ITEMS.register("hazmatboots", supplier(() -> new ItemHazmatArmor(EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_HAZMATHELMET = ITEMS.register("hazmathelmet", supplier(() -> new ItemHazmatArmor(EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_HAZMATLEGS = ITEMS.register("hazmatlegs", supplier(() -> new ItemHazmatArmor(EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_HAZMATPLATE = ITEMS.register("hazmatplate", supplier(() -> new ItemHazmatArmor(EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); +// public static final RegistryObject ITEM_REINFORCEDHAZMATBOOTS = ITEMS.register("reinforcedhazmatboots", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); +// public static final RegistryObject ITEM_REINFORCEDHAZMATHELMET = ITEMS.register("reinforcedhazmathelmet", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); +// public static final RegistryObject ITEM_REINFORCEDHAZMATLEGS = ITEMS.register("reinforcedhazmatlegs", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); +// public static final RegistryObject ITEM_REINFORCEDHAZMATPLATE = ITEMS.register("reinforcedhazmatplate", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); +// public static final RegistryObject ITEM_ANTIDOTE = ITEMS.register("antidote", supplier(() -> new ItemAntidote(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_FREQUENCYCARD = ITEMS.register("frequencycard", supplier(() -> new ItemFrequencyCard(new Item.Properties().tab(References.NUCLEARTAB)))); +// public static final RegistryObject ITEM_CANISTERLEAD = ITEMS.register("canisterlead", supplier(() -> new ItemCanisterLead(new Item.Properties().stacksTo(1).tab(References.NUCLEARTAB)))); +// +// public static final RegistryObject> TILE_GASCENTRIFUGE = TILES.register("gascentrifuge", () -> new BlockEntityType<>(TileGasCentrifuge::new, Sets.newHashSet(blockGasCentrifuge), null)); +// public static final RegistryObject> TILE_CHEMICALBOILER = TILES.register("nuclearboiler", () -> new BlockEntityType<>(TileNuclearBoiler::new, Sets.newHashSet(blockNuclearBoiler), null)); +// public static final RegistryObject> TILE_CHEMICALEXTRACTOR = TILES.register("chemicalextractor", () -> new BlockEntityType<>(TileChemicalExtractor::new, Sets.newHashSet(blockChemicalExtractor), null)); +// public static final RegistryObject> TILE_RADIOISOTOPEGENERATOR = TILES.register("radioisotopegenerator", () -> new BlockEntityType<>(TileRadioisotopeGenerator::new, Sets.newHashSet(blockRadioisotopeGenerator), null)); +// public static final RegistryObject> TILE_MOLTENSALTSUPPLIER = TILES.register("moltensaltsupplier", () -> new BlockEntityType<>(TileMoltenSaltSupplier::new, Sets.newHashSet(blockMoltenSaltSupplier), null)); +// public static final RegistryObject> TILE_FREEZEPLUG = TILES.register("freezeplug", () -> new BlockEntityType<>(TileFreezePlug::new, Sets.newHashSet(blockFreezePlug), null)); +// public static final RegistryObject> TILE_TURBINE = TILES.register("turbine", () -> new BlockEntityType<>(TileTurbine::new, Sets.newHashSet(blockTurbine), null)); +// public static final RegistryObject> TILE_REACTORCORE = TILES.register("reactorcore", () -> new BlockEntityType<>(TileFissionReactorCore::new, Sets.newHashSet(blockReactorCore), null)); +// public static final RegistryObject> TILE_FUSIONREACTORCORE = TILES.register("fusionreactorcore", () -> new BlockEntityType<>(TileFusionReactorCore::new, Sets.newHashSet(blockFusionReactorCore), null)); +// public static final RegistryObject> TILE_PARTICLEINJECTOR = TILES.register("particleinjector", () -> new BlockEntityType<>(TileParticleInjector::new, Sets.newHashSet(blockParticleInjector), null)); +// public static final RegistryObject> TILE_ELECTROMAGNETICSWITCH = TILES.register("electromagneticswitch", () -> new BlockEntityType<>(TileElectromagneticSwitch::new, Sets.newHashSet(blockElectromagneticSwitch), null)); +// public static final RegistryObject> TILE_PLASMA = TILES.register("plasma", () -> new BlockEntityType<>(TilePlasma::new, Sets.newHashSet(blockPlasma), null)); +// public static final RegistryObject> TILE_MELTEDREACTOR = TILES.register("meltedreactor", () -> new BlockEntityType<>(TileMeltedReactor::new, Sets.newHashSet(blockMeltedReactor), null)); +// public static final RegistryObject> TILE_QUANTUMCAPACITOR = TILES.register("quantumcapacitor", () -> new BlockEntityType<>(TileQuantumCapacitor::new, Sets.newHashSet(blockQuantumCapacitor), null)); +// +// public static final RegistryObject> TILE_FUELREPROCESSOR = TILES.register("fuelreprocessor", () -> new BlockEntityType<>(TileFuelReprocessor::new, Sets.newHashSet(blockFuelReprocessor), null)); +// public static final RegistryObject> TILE_RADIOACTIVEPROCESSOR = TILES.register("radioactiveprocessor", () -> new BlockEntityType<>(TileRadioactiveProcessor::new, Sets.newHashSet(blockRadioactiveProcessor), null)); +// public static final RegistryObject> TILE_MSRFUELPREPROCESSOR = TILES.register("msrfuelpreprocessor", () -> new BlockEntityType<>(TileMSRFuelPreProcessor::new, Sets.newHashSet(blockMSRFuelPreProcessor), null)); +// public static final RegistryObject> TILE_MSRREACTORCORE = TILES.register("msrreactorcore", () -> new BlockEntityType<>(TileMSReactorCore::new, Sets.newHashSet(blockMsrReactorCore), null)); +// public static final RegistryObject> TILE_HEATEXCHANGER = TILES.register("heatexchanger", () -> new BlockEntityType<>(TileHeatExchanger::new, Sets.newHashSet(blockHeatExchanger), null)); +// +// public static final RegistryObject> TILE_TELEPORTER = TILES.register("teleporter", () -> new BlockEntityType<>(TileTeleporter::new, Sets.newHashSet(blockTeleporter), null)); +// +// public static final RegistryObject> TILE_CONTROLRODASSEMBLY = TILES.register("controlrodassembly", () -> new BlockEntityType<>(TileControlRodAssembly::new, Sets.newHashSet(blockControlRodAssembly), null)); +// +// public static final RegistryObject> TILE_MOLTENSALTPIPE = TILES.register("moltensaltpipegenerictile", () -> new BlockEntityType<>(TileMoltenSaltPipe::new, BlockMoltenSaltPipe.PIPESET, null)); +// public static final RegistryObject> TILE_SIREN = TILES.register("siren", () -> new BlockEntityType<>(TileSiren::new, Sets.newHashSet(blockSiren), null)); +// public static final RegistryObject> TILE_ATOMICASSEMBLER = TILES.register("atomicassembler", () -> new BlockEntityType<>(TileAtomicAssembler::new, Sets.newHashSet(blockAtomicAssembler), null)); +// +// public static final RegistryObject> CONTAINER_GASCENTRIFUGE = CONTAINERS.register("gascentrifuge", () -> new MenuType<>(ContainerGasCentrifuge::new)); +// public static final RegistryObject> CONTAINER_NUCLEARBOILER = CONTAINERS.register("nuclearboiler", () -> new MenuType<>(ContainerNuclearBoiler::new)); +// public static final RegistryObject> CONTAINER_CHEMICALEXTRACTOR = CONTAINERS.register("chemicalextractor", () -> new MenuType<>(ContainerChemicalExtractor::new)); +// public static final RegistryObject> CONTAINER_RADIOISOTOPEGENERATOR = CONTAINERS.register("radioisotopegenerator", () -> new MenuType<>(ContainerRadioisotopeGenerator::new)); +// public static final RegistryObject> CONTAINER_FREEZEPLUG = CONTAINERS.register("freezeplug", () -> new MenuType<>(ContainerFreezePlug::new)); +// public static final RegistryObject> CONTAINER_REACTORCORE = CONTAINERS.register("reactorcore", () -> new MenuType<>(ContainerReactorCore::new)); +// public static final RegistryObject> CONTAINER_PARTICLEINJECTOR = CONTAINERS.register("particleinjetor", () -> new MenuType<>(ContainerParticleInjector::new)); +// public static final RegistryObject> CONTAINER_QUANTUMCAPACITOR = CONTAINERS.register("quantumcapacitor", () -> new MenuType<>(ContainerQuantumCapacitor::new)); +// public static final RegistryObject> CONTAINER_RADIOACTIVEPROCESSOR = CONTAINERS.register("radioactiveprocessor", () -> new MenuType<>(ContainerRadioactiveProcessor::new)); +// public static final RegistryObject> CONTAINER_MSRFUELPREPROCESSOR = CONTAINERS.register("msrfuelpreprocessor", () -> new MenuType<>(ContainerMSRFuelPreProcessor::new)); +// public static final RegistryObject> CONTAINER_MSRREACTORCORE = CONTAINERS.register("msrreactorcore", () -> new MenuType<>(ContainerMSRReactorCore::new)); +// public static final RegistryObject> CONTAINER_MOLTENSALTSUPPLIER = CONTAINERS.register("moltensaltsupplier", () -> new MenuType<>(ContainerMoltenSaltSupplier::new)); +// public static final RegistryObject> CONTAINER_ATOMICASSEMBLER = CONTAINERS.register("atomicassembler", () -> new MenuType<>(ContainerAtomicAssembler::new)); +// +// public static final RegistryObject> ENTITY_PARTICLE = ENTITIES.register("particle", () -> EntityType.Builder.of(EntityParticle::new, MobCategory.MISC).clientTrackingRange(8).build(References.ID + ".particle")); +// +// private static > Supplier supplier(Supplier entry) { +// return entry; +// } +// +// private static > Supplier supplier(Supplier entry, ISubtype en) { +// return entry; +// } +// +// public static Block getSafeBlock(ISubtype type) { +// return SUBTYPEBLOCKREGISTER_MAPPINGS.get(type).get(); +// } } diff --git a/src/main/java/nuclearscience/NuclearScience.java b/src/main/java/nuclearscience/NuclearScience.java index a3d36acc..24a5affd 100644 --- a/src/main/java/nuclearscience/NuclearScience.java +++ b/src/main/java/nuclearscience/NuclearScience.java @@ -15,13 +15,16 @@ import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import nuclearscience.api.radiation.EffectRadiation; -import nuclearscience.api.radiation.FieldRadioactiveObject; import nuclearscience.api.radiation.RadiationRegister; import nuclearscience.client.ClientRegister; +import nuclearscience.common.block.voxelshapes.NuclearScienceVoxelShapeRegistry; import nuclearscience.common.packet.NetworkHandler; import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.reloadlistener.AtomicAssemblerBlacklistRegister; +import nuclearscience.common.reloadlistener.RadioactiveItemLoader; import nuclearscience.common.settings.Constants; import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.UnifiedNuclearScienceRegister; @Mod(References.ID) @EventBusSubscriber(modid = References.ID, bus = Bus.MOD) @@ -30,44 +33,32 @@ public class NuclearScience { public NuclearScience() { ConfigurationHandler.registerConfig(Constants.class); IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); - DeferredRegisters.BLOCKS.register(bus); - DeferredRegisters.ITEMS.register(bus); - DeferredRegisters.TILES.register(bus); - DeferredRegisters.CONTAINERS.register(bus); - DeferredRegisters.FLUIDS.register(bus); - DeferredRegisters.ENTITIES.register(bus); + UnifiedNuclearScienceRegister.register(bus); NuclearScienceRecipeInit.RECIPE_TYPES.register(bus); NuclearScienceRecipeInit.RECIPE_SERIALIZER.register(bus); - SoundRegister.SOUNDS.register(bus); + RadiationRegister.init(); } @SubscribeEvent @OnlyIn(Dist.CLIENT) public static void onClientSetup(FMLClientSetupEvent event) { - ClientRegister.setup(); + event.enqueueWork(() -> { + ClientRegister.setup(); + }); } @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent event) { NetworkHandler.init(); NuclearScienceTags.init(); + RadioactiveItemLoader.INSTANCE = new RadioactiveItemLoader().subscribeAsSyncable(NetworkHandler.CHANNEL); + AtomicAssemblerBlacklistRegister.INSTANCE = new AtomicAssemblerBlacklistRegister().subscribeAsSyncable(NetworkHandler.CHANNEL); + NuclearScienceVoxelShapeRegistry.init(); } @SubscribeEvent public static void onLoadEvent(FMLLoadCompleteEvent event) { - RadiationRegister.register(DeferredRegisters.ITEM_URANIUM235.get(), new FieldRadioactiveObject(1000)); - RadiationRegister.register(DeferredRegisters.ITEM_URANIUM238.get(), new FieldRadioactiveObject(500)); - RadiationRegister.register(DeferredRegisters.ITEM_YELLOWCAKE.get(), new FieldRadioactiveObject(300)); - RadiationRegister.register(DeferredRegisters.ITEM_FUELHEUO2.get(), new FieldRadioactiveObject(3000)); - RadiationRegister.register(DeferredRegisters.ITEM_FUELLEUO2.get(), new FieldRadioactiveObject(2000)); - RadiationRegister.register(DeferredRegisters.ITEM_FUELSPENT.get(), new FieldRadioactiveObject(3500)); - RadiationRegister.register(DeferredRegisters.ITEM_FUELPLUTONIUM.get(), new FieldRadioactiveObject(2500)); - RadiationRegister.register(DeferredRegisters.ITEM_FISSILEDUST.get(), new FieldRadioactiveObject(2000)); - RadiationRegister.register(DeferredRegisters.ITEM_PLUTONIUMOXIDE.get(), new FieldRadioactiveObject(4000)); - RadiationRegister.register(DeferredRegisters.ITEM_PLUTONIUM239.get(), new FieldRadioactiveObject(4500)); - RadiationRegister.register(DeferredRegisters.ITEM_THORIANITEDUST.get(), new FieldRadioactiveObject(2000)); - RadiationRegister.register(DeferredRegisters.ITEM_POLONIUM210.get(), new FieldRadioactiveObject(2500)); - RadiationRegister.register(DeferredRegisters.ITEM_POLONIUM210_CHUNK.get(), new FieldRadioactiveObject(1500)); + } @SubscribeEvent diff --git a/src/main/java/nuclearscience/SoundRegister.java b/src/main/java/nuclearscience/SoundRegister.java deleted file mode 100644 index 935e2851..00000000 --- a/src/main/java/nuclearscience/SoundRegister.java +++ /dev/null @@ -1,16 +0,0 @@ -package nuclearscience; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -public class SoundRegister { - public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, References.ID); - public static final RegistryObject SOUND_TURBINE = SOUNDS.register("turbine", () -> new SoundEvent(new ResourceLocation(References.ID + ":turbine"))); - public static final RegistryObject SOUND_NUCLEARBOILER = SOUNDS.register("nuclearboiler", () -> new SoundEvent(new ResourceLocation(References.ID + ":nuclearboiler"))); - public static final RegistryObject SOUND_GASCENTRIFUGE = SOUNDS.register("gascentrifuge", () -> new SoundEvent(new ResourceLocation(References.ID + ":gascentrifuge"))); - public static final RegistryObject SOUND_SIREN = SOUNDS.register("siren", () -> new SoundEvent(new ResourceLocation(References.ID + ":siren"))); - public static final RegistryObject SOUND_GEIGER = SOUNDS.register("geiger", () -> new SoundEvent(new ResourceLocation(References.ID + ":geiger"))); -} diff --git a/src/main/java/nuclearscience/api/fusion/IElectromagnet.java b/src/main/java/nuclearscience/api/fusion/IElectromagnet.java index 7a16d2a2..bb668933 100644 --- a/src/main/java/nuclearscience/api/fusion/IElectromagnet.java +++ b/src/main/java/nuclearscience/api/fusion/IElectromagnet.java @@ -1,4 +1,4 @@ package nuclearscience.api.fusion; public interface IElectromagnet { -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/network/moltensalt/IMoltenSaltPipe.java b/src/main/java/nuclearscience/api/network/moltensalt/IMoltenSaltPipe.java index c40a759d..75ccda43 100644 --- a/src/main/java/nuclearscience/api/network/moltensalt/IMoltenSaltPipe.java +++ b/src/main/java/nuclearscience/api/network/moltensalt/IMoltenSaltPipe.java @@ -1,29 +1,12 @@ package nuclearscience.api.network.moltensalt; -import electrodynamics.api.network.IAbstractConductor; -import electrodynamics.api.network.INetwork; -import electrodynamics.prefab.network.AbstractNetwork; +import electrodynamics.api.network.cable.IRefreshableCable; import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; -public interface IMoltenSaltPipe extends IAbstractConductor { - INetwork getNetwork(); - - INetwork getNetwork(boolean createIfNull); - - void refreshNetwork(); - - void refreshNetworkIfChange(); - - @Override - void removeFromNetwork(); - - void destroyViolently(); +public interface IMoltenSaltPipe extends IRefreshableCable { SubtypeMoltenSaltPipe getPipeType(); - @Override - void setNetwork(AbstractNetwork aValueNetwork); - @Override default Object getConductorType() { return getPipeType(); diff --git a/src/main/java/nuclearscience/api/plasma/DamageSourcePlasma.java b/src/main/java/nuclearscience/api/plasma/DamageSourcePlasma.java index 5f615a0d..593fe69f 100644 --- a/src/main/java/nuclearscience/api/plasma/DamageSourcePlasma.java +++ b/src/main/java/nuclearscience/api/plasma/DamageSourcePlasma.java @@ -4,4 +4,4 @@ public class DamageSourcePlasma { public static DamageSource INSTANCE = new DamageSource("plasma").bypassArmor().bypassMagic(); -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/DamageSourceRadiation.java b/src/main/java/nuclearscience/api/radiation/DamageSourceRadiation.java index 10f7c338..d4397665 100644 --- a/src/main/java/nuclearscience/api/radiation/DamageSourceRadiation.java +++ b/src/main/java/nuclearscience/api/radiation/DamageSourceRadiation.java @@ -4,4 +4,4 @@ public class DamageSourceRadiation { public static DamageSource INSTANCE = new DamageSource("radiation").bypassArmor().bypassMagic(); -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/EffectRadiation.java b/src/main/java/nuclearscience/api/radiation/EffectRadiation.java index a02e59ae..a4964b27 100644 --- a/src/main/java/nuclearscience/api/radiation/EffectRadiation.java +++ b/src/main/java/nuclearscience/api/radiation/EffectRadiation.java @@ -8,8 +8,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; import nuclearscience.References; +import nuclearscience.registers.NuclearScienceItems; public class EffectRadiation extends MobEffect { @@ -36,7 +36,7 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { @Override public List getCurativeItems() { ArrayList ret = new ArrayList<>(); - ret.add(new ItemStack(DeferredRegisters.ITEM_ANTIDOTE.get())); + ret.add(new ItemStack(NuclearScienceItems.ITEM_ANTIDOTE.get())); return ret; } @@ -44,4 +44,4 @@ public List getCurativeItems() { public boolean isDurationEffectTick(int duration, int amplifier) { return true; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/FieldRadioactiveObject.java b/src/main/java/nuclearscience/api/radiation/FieldRadioactiveObject.java index 8bb21c30..11ed1c48 100644 --- a/src/main/java/nuclearscience/api/radiation/FieldRadioactiveObject.java +++ b/src/main/java/nuclearscience/api/radiation/FieldRadioactiveObject.java @@ -12,4 +12,4 @@ public double getRadiationStrength() { return strength; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/IRadioactiveObject.java b/src/main/java/nuclearscience/api/radiation/IRadioactiveObject.java index b48eff79..7cfc55c4 100644 --- a/src/main/java/nuclearscience/api/radiation/IRadioactiveObject.java +++ b/src/main/java/nuclearscience/api/radiation/IRadioactiveObject.java @@ -1,5 +1,18 @@ package nuclearscience.api.radiation; public interface IRadioactiveObject { + + public static final IRadioactiveObject NULL = new IRadioactiveObject() { + + @Override + public double getRadiationStrength() { + return 0; + } + }; + double getRadiationStrength(); -} + + default boolean isNull() { + return this == NULL; + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/RadiationRegister.java b/src/main/java/nuclearscience/api/radiation/RadiationRegister.java index cc25f75d..8ca714cb 100644 --- a/src/main/java/nuclearscience/api/radiation/RadiationRegister.java +++ b/src/main/java/nuclearscience/api/radiation/RadiationRegister.java @@ -1,20 +1,98 @@ package nuclearscience.api.radiation; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.function.Predicate; + +import javax.annotation.Nonnull; + +import electrodynamics.Electrodynamics; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; public class RadiationRegister { - private static final HashMap map = new HashMap<>(); - public static final IRadioactiveObject NULL = new FieldRadioactiveObject(0); + + /* + * This allows us to better categorize what is radioactive in case we need to reference all types of an object, and also makes way + * for things like datapack support for radioactive items and what not + */ + private static final HashMap> MASTER_REGISTER = new HashMap<>(); + + public static void init() { + + for (RadioactiveSource source : RadioactiveSource.values()) { + + MASTER_REGISTER.put(source, MASTER_REGISTER.getOrDefault(source, new HashMap<>())); + + } + + } public static IRadioactiveObject get(Object object) { - IRadioactiveObject ret = map.get(object); - if (ret == null) { - return NULL; + + for (RadioactiveSource source : RadioactiveSource.values()) { + + if (source.test(object)) { + + return MASTER_REGISTER.get(source).getOrDefault(object, IRadioactiveObject.NULL); + + } + } - return ret; + + return IRadioactiveObject.NULL; + } public static IRadioactiveObject register(Object key, IRadioactiveObject value) { - return map.put(key, value); + + for (RadioactiveSource source : RadioactiveSource.values()) { + + if (source.test(key)) { + + return MASTER_REGISTER.getOrDefault(source, new HashMap<>()).put(key, value); + + } + + } + + Electrodynamics.LOGGER.atFatal().log("Somehow you have managed to pass in an radiation source that is not an instance of Object"); + + return IRadioactiveObject.NULL; } -} + + public static HashMap getMapForType(@Nonnull RadioactiveSource source) { + return MASTER_REGISTER.getOrDefault(source, new HashMap<>()); + } + + public static List getRadioactiveItems() { + ArrayList items = new ArrayList<>(); + getMapForType(RadioactiveSource.ITEM).keySet().forEach(item -> { + items.add((Item) item); + }); + return items; + } + + /* + * Simple category enum allowing for easy expansion of categories + */ + public static enum RadioactiveSource { + + ITEM(obj -> obj instanceof Item), BLOCK(obj -> obj instanceof Block), ENTITY(obj -> obj instanceof Entity), TILE(obj -> obj instanceof BlockEntity), MISC(obj -> true); + + private final Predicate isClass; + + private RadioactiveSource(Predicate isClass) { + this.isClass = isClass; + } + + public boolean test(Object obj) { + return isClass.test(obj); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/radiation/RadiationSystem.java b/src/main/java/nuclearscience/api/radiation/RadiationSystem.java index edcc68ad..903ef9eb 100644 --- a/src/main/java/nuclearscience/api/radiation/RadiationSystem.java +++ b/src/main/java/nuclearscience/api/radiation/RadiationSystem.java @@ -23,10 +23,10 @@ import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import nuclearscience.DeferredRegisters; import nuclearscience.References; import nuclearscience.common.item.ItemGeigerCounter; import nuclearscience.common.item.ItemHazmatArmor; +import nuclearscience.registers.NuclearScienceBlocks; @EventBusSubscriber(modid = References.ID, bus = Bus.FORGE) public class RadiationSystem { @@ -48,7 +48,7 @@ private static double getRadiationModifier(Level world, Location source, Locatio if (!curr.equals(next)) { curr = next; BlockState state = world.getBlockState(curr); - lastHard = hard = (state.getBlock() == DeferredRegisters.blocklead ? 20000 : state.getDestroySpeed(world, curr)) / (world.getFluidState(curr).isEmpty() ? 1 : 50.0); + lastHard = hard = (state.getBlock() == NuclearScienceBlocks.blocklead ? 20000 : state.getDestroySpeed(world, curr)) / (world.getFluidState(curr).isEmpty() ? 1 : 50.0); } modifier += hard / 4.5f; checks--; @@ -74,7 +74,7 @@ public static void applyRadiation(LivingEntity entity, Location source, double s float damage = (float) (strength * 2.15f) / 2169.9975f; if (Math.random() < damage) { int integerDamage = Math.round(damage); - if (next.getDamageValue() > next.getMaxDamage() || next.hurt(integerDamage, entity.level.random, player instanceof ServerPlayer s ? s : null)) { + if (next.getDamageValue() > next.getMaxDamage() || next.hurt(integerDamage, entity.getLevel().random, player instanceof ServerPlayer s ? s : null)) { player.getInventory().armor.set(i, ItemStack.EMPTY); } } @@ -82,16 +82,16 @@ public static void applyRadiation(LivingEntity entity, Location source, double s } } } - Location end = new Location(entity.position()); + Location end = new Location(entity.position().add(0, entity.getEyeHeight() / 2.0, 0)); double radiation = 0; if (entity instanceof Player pl && (pl.getItemBySlot(EquipmentSlot.MAINHAND).getItem() instanceof ItemGeigerCounter || pl.getItemBySlot(EquipmentSlot.OFFHAND).getItem() instanceof ItemGeigerCounter)) { double already = radiationMap.get().containsKey(entity) ? radiationMap.get().get(entity) : 0; - radiation = getRadiation(entity.level, source, end, strength); + radiation = getRadiation(entity.getLevel(), source, end, strength); radiationMap.get().put((Player) entity, already + radiation); } if (!(entity instanceof Player pl && pl.isCreative()) && protection < 5 && radiationMap.get().getOrDefault(entity, 11.0) > 4) { if (radiation == 0) { - radiation = getRadiation(entity.level, source, end, strength); + radiation = getRadiation(entity.getLevel(), source, end, strength); } double distance = 1 + source.distance(end); double modifier = strength / (radiation * distance * distance); @@ -133,4 +133,4 @@ public static void onTickC(ClientTickEvent event) { } } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/api/turbine/ISteamReceiver.java b/src/main/java/nuclearscience/api/turbine/ISteamReceiver.java new file mode 100644 index 00000000..822ba031 --- /dev/null +++ b/src/main/java/nuclearscience/api/turbine/ISteamReceiver.java @@ -0,0 +1,22 @@ +package nuclearscience.api.turbine; + +/** + * + * A simple wrapper interface that allows different blocks to receive steam generated by reactors + * + * @author skip999 + * + */ +public interface ISteamReceiver { + + /** + * + * @param temperature: The temperature of the steam + * @param amount: The amount of steam + * @return How much steam was accepted + */ + public double receiveSteam(double temperature, double amount); + + public boolean isStillValid(); + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/ClientRegister.java b/src/main/java/nuclearscience/client/ClientRegister.java index c687bc71..849d1a06 100644 --- a/src/main/java/nuclearscience/client/ClientRegister.java +++ b/src/main/java/nuclearscience/client/ClientRegister.java @@ -1,32 +1,35 @@ package nuclearscience.client; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + import electrodynamics.client.guidebook.ScreenGuidebook; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.model.ForgeModelBakery; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import nuclearscience.DeferredRegisters; import nuclearscience.References; import nuclearscience.client.guidebook.ModuleNuclearScience; import nuclearscience.client.render.entity.RenderParticle; import nuclearscience.client.render.tile.RenderAtomicAssembler; import nuclearscience.client.render.tile.RenderChemicalExtractor; -import nuclearscience.client.render.tile.RenderFuelReprocessor; import nuclearscience.client.render.tile.RenderFusionReactorCore; import nuclearscience.client.render.tile.RenderGasCentrifuge; -import nuclearscience.client.render.tile.RenderMoltenSaltSupplier; import nuclearscience.client.render.tile.RenderNuclearBoiler; import nuclearscience.client.render.tile.RenderQuantumCapacitor; -import nuclearscience.client.render.tile.RenderRadioactiveProcessor; -import nuclearscience.client.render.tile.RenderReactorCore; +import nuclearscience.client.render.tile.RenderFissionReactorCore; import nuclearscience.client.render.tile.RenderRodAssembly; import nuclearscience.client.render.tile.RenderTeleporter; import nuclearscience.client.render.tile.RenderTurbine; @@ -35,116 +38,116 @@ import nuclearscience.client.screen.ScreenFreezePlug; import nuclearscience.client.screen.ScreenGasCentrifuge; import nuclearscience.client.screen.ScreenMSRFuelPreProcessor; -import nuclearscience.client.screen.ScreenMSRReactorCore; +import nuclearscience.client.screen.ScreenMSReactorCore; import nuclearscience.client.screen.ScreenMoltenSaltSupplier; import nuclearscience.client.screen.ScreenNuclearBoiler; import nuclearscience.client.screen.ScreenParticleInjector; import nuclearscience.client.screen.ScreenQuantumCapacitor; import nuclearscience.client.screen.ScreenRadioactiveProcessor; import nuclearscience.client.screen.ScreenRadioisotopeGenerator; -import nuclearscience.client.screen.ScreenReactorCore; +import nuclearscience.client.screen.ScreenFissionReactorCore; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceEntities; +import nuclearscience.registers.NuclearScienceMenuTypes; @OnlyIn(Dist.CLIENT) @EventBusSubscriber(modid = References.ID, bus = Bus.MOD, value = { Dist.CLIENT }) public class ClientRegister { @SubscribeEvent public static void onModelEvent(ModelRegistryEvent event) { - ForgeModelBakery.addSpecialModel(MODEL_GASCENTRIFUGEFULL); - ForgeModelBakery.addSpecialModel(MODEL_GASCENTRIFUGEOUTLINE); ForgeModelBakery.addSpecialModel(MODEL_GASCENTRIFUGECENTER); - ForgeModelBakery.addSpecialModel(MODEL_CHEMICALEXTRACTORWATER); - ForgeModelBakery.addSpecialModel(MODEL_CHEMICALBOILERWATER); - ForgeModelBakery.addSpecialModel(MODEL_CHEMICALBOILERHEXAFLUORIDE); - ForgeModelBakery.addSpecialModel(MODEL_TURBINEFULL); ForgeModelBakery.addSpecialModel(MODEL_TURBINECASING); ForgeModelBakery.addSpecialModel(MODEL_TURBINEROTORLAYER); - ForgeModelBakery.addSpecialModel(MODEL_REACTORCORE); - ForgeModelBakery.addSpecialModel(MODEL_REACTORFUELROD); - ForgeModelBakery.addSpecialModel(MODEL_REACTORDEUTERIUM); - ForgeModelBakery.addSpecialModel(MODEL_TELEPORTERON); - ForgeModelBakery.addSpecialModel(MODEL_TELEPORTER); + ForgeModelBakery.addSpecialModel(MODEL_FISSIONREACTORCORE); + ForgeModelBakery.addSpecialModel(MODEL_FISSIONREACTORFUELROD); + ForgeModelBakery.addSpecialModel(MODEL_FISSIONREACTORDEUTERIUM); ForgeModelBakery.addSpecialModel(MODEL_CONTROLRODASSEMBLYSTRUCTURE); ForgeModelBakery.addSpecialModel(MODEL_CONTROLRODASSEMBLYSROD); - ForgeModelBakery.addSpecialModel(MODEL_FUELREPROCESSOR); - ForgeModelBakery.addSpecialModel(MODEL_FUELREPROCESSOR_ON); - ForgeModelBakery.addSpecialModel(MODEL_RADIOACTIVEPROCESSOR); - ForgeModelBakery.addSpecialModel(MODEL_RADIOACTIVEPROCESSOR_ON); - ForgeModelBakery.addSpecialModel(MODEL_MOLTENSALTSUPPLIER); - ForgeModelBakery.addSpecialModel(MODEL_MOLTENSALTSUPPLIER_ON); } - public static final ResourceLocation MODEL_GASCENTRIFUGEFULL = new ResourceLocation(References.ID + ":block/gascentrifuge"); - public static final ResourceLocation MODEL_GASCENTRIFUGEOUTLINE = new ResourceLocation(References.ID + ":block/gascentrifugeoutline"); public static final ResourceLocation MODEL_GASCENTRIFUGECENTER = new ResourceLocation(References.ID + ":block/gascentrifugecenter"); - public static final ResourceLocation MODEL_CHEMICALEXTRACTORWATER = new ResourceLocation(References.ID + ":block/chemicalextractorwater"); - public static final ResourceLocation MODEL_CHEMICALBOILERWATER = new ResourceLocation(References.ID + ":block/chemicalboilerwater"); - public static final ResourceLocation MODEL_CHEMICALBOILERHEXAFLUORIDE = new ResourceLocation(References.ID + ":block/chemicalboilerhexafluoride"); - public static final ResourceLocation MODEL_TURBINEFULL = new ResourceLocation(References.ID + ":block/turbine"); public static final ResourceLocation MODEL_TURBINECASING = new ResourceLocation(References.ID + ":block/turbinecasing"); public static final ResourceLocation MODEL_TURBINEROTORLAYER = new ResourceLocation(References.ID + ":block/turbinerotorlayer"); - public static final ResourceLocation MODEL_REACTORCORE = new ResourceLocation(References.ID + ":block/reactorcore"); - public static final ResourceLocation MODEL_REACTORFUELROD = new ResourceLocation(References.ID + ":block/reactorfuelrod"); - public static final ResourceLocation MODEL_REACTORDEUTERIUM = new ResourceLocation(References.ID + ":block/reactordeuterium"); - public static final ResourceLocation TEXTURE_REACTORCOREEMPTY = new ResourceLocation(References.ID + ":textures/model/reactorcore.png"); - public static final ResourceLocation MODEL_TELEPORTERON = new ResourceLocation(References.ID + ":block/teleporteron"); - public static final ResourceLocation MODEL_TELEPORTER = new ResourceLocation(References.ID + ":block/teleporter"); + public static final ResourceLocation MODEL_FISSIONREACTORCORE = new ResourceLocation(References.ID + ":block/reactorcore"); + public static final ResourceLocation MODEL_FISSIONREACTORFUELROD = new ResourceLocation(References.ID + ":block/reactorfuelrod"); + public static final ResourceLocation MODEL_FISSIONREACTORDEUTERIUM = new ResourceLocation(References.ID + ":block/reactordeuterium"); public static final ResourceLocation MODEL_CONTROLRODASSEMBLYSTRUCTURE = new ResourceLocation(References.ID + ":block/controlrodassemblystructure"); public static final ResourceLocation MODEL_CONTROLRODASSEMBLYSROD = new ResourceLocation(References.ID + ":block/controlrodassemblyrod"); - public static final ResourceLocation MODEL_FUELREPROCESSOR = new ResourceLocation(References.ID + ":block/fuelreprocessor"); - public static final ResourceLocation MODEL_FUELREPROCESSOR_ON = new ResourceLocation(References.ID + ":block/fuelreprocessoron"); - public static final ResourceLocation MODEL_RADIOACTIVEPROCESSOR = new ResourceLocation(References.ID + ":block/radioactiveprocessor"); - public static final ResourceLocation MODEL_RADIOACTIVEPROCESSOR_ON = new ResourceLocation(References.ID + ":block/radioactiveprocessoron"); - public static final ResourceLocation MODEL_MOLTENSALTSUPPLIER = new ResourceLocation(References.ID + ":block/moltensaltsupplier"); - public static final ResourceLocation MODEL_MOLTENSALTSUPPLIER_ON = new ResourceLocation(References.ID + ":block/moltensaltsupplieron"); + public static final ResourceLocation TEXTURE_REACTORCOREEMPTY = new ResourceLocation(References.ID + ":textures/model/reactorcore.png"); + + public static final ResourceLocation TEXTURE_JEIBLACKHOLE = new ResourceLocation(References.ID, "custom/particleaccelerator_dmblackhole"); + + public static HashMap CACHED_TEXTUREATLASSPRITES = new HashMap<>(); + // for registration purposes only! + private static final List customTextures = new ArrayList<>(); public static void setup() { - MenuScreens.register(DeferredRegisters.CONTAINER_GASCENTRIFUGE.get(), ScreenGasCentrifuge::new); - MenuScreens.register(DeferredRegisters.CONTAINER_NUCLEARBOILER.get(), ScreenNuclearBoiler::new); - MenuScreens.register(DeferredRegisters.CONTAINER_CHEMICALEXTRACTOR.get(), ScreenChemicalExtractor::new); - MenuScreens.register(DeferredRegisters.CONTAINER_RADIOISOTOPEGENERATOR.get(), ScreenRadioisotopeGenerator::new); - MenuScreens.register(DeferredRegisters.CONTAINER_FREEZEPLUG.get(), ScreenFreezePlug::new); - MenuScreens.register(DeferredRegisters.CONTAINER_REACTORCORE.get(), ScreenReactorCore::new); - MenuScreens.register(DeferredRegisters.CONTAINER_PARTICLEINJECTOR.get(), ScreenParticleInjector::new); - MenuScreens.register(DeferredRegisters.CONTAINER_QUANTUMCAPACITOR.get(), ScreenQuantumCapacitor::new); - MenuScreens.register(DeferredRegisters.CONTAINER_MSRFUELPREPROCESSOR.get(), ScreenMSRFuelPreProcessor::new); - MenuScreens.register(DeferredRegisters.CONTAINER_RADIOACTIVEPROCESSOR.get(), ScreenRadioactiveProcessor::new); - MenuScreens.register(DeferredRegisters.CONTAINER_MSRREACTORCORE.get(), ScreenMSRReactorCore::new); - MenuScreens.register(DeferredRegisters.CONTAINER_MOLTENSALTSUPPLIER.get(), ScreenMoltenSaltSupplier::new); - MenuScreens.register(DeferredRegisters.CONTAINER_ATOMICASSEMBLER.get(), ScreenAtomicAssembler::new); - - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockChemicalExtractor, ClientRegister::shouldMultilayerRender); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockNuclearBoiler, ClientRegister::shouldMultilayerRender); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockReactorCore, ClientRegister::shouldMultilayerRender); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockAtomicAssembler, ClientRegister::shouldMultilayerRender); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockElectromagneticGlass, RenderType.cutout()); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockElectromagneticBooster, RenderType.translucent()); - ItemBlockRenderTypes.setRenderLayer(DeferredRegisters.blockPlasma, RenderType.translucent()); + + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockChemicalExtractor, ClientRegister::shouldMultilayerRender); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockNuclearBoiler, ClientRegister::shouldMultilayerRender); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockFissionReactorCore, ClientRegister::shouldMultilayerRender); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockAtomicAssembler, ClientRegister::shouldMultilayerRender); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockElectromagneticGlass, RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockElectromagneticBooster, RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(NuclearScienceBlocks.blockPlasma, RenderType.translucent()); + + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_GASCENTRIFUGE.get(), ScreenGasCentrifuge::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_NUCLEARBOILER.get(), ScreenNuclearBoiler::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_CHEMICALEXTRACTOR.get(), ScreenChemicalExtractor::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_RADIOISOTOPEGENERATOR.get(), ScreenRadioisotopeGenerator::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_FREEZEPLUG.get(), ScreenFreezePlug::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_REACTORCORE.get(), ScreenFissionReactorCore::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_PARTICLEINJECTOR.get(), ScreenParticleInjector::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_QUANTUMCAPACITOR.get(), ScreenQuantumCapacitor::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_MSRFUELPREPROCESSOR.get(), ScreenMSRFuelPreProcessor::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_RADIOACTIVEPROCESSOR.get(), ScreenRadioactiveProcessor::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_MSRREACTORCORE.get(), ScreenMSReactorCore::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_MOLTENSALTSUPPLIER.get(), ScreenMoltenSaltSupplier::new); + MenuScreens.register(NuclearScienceMenuTypes.CONTAINER_ATOMICASSEMBLER.get(), ScreenAtomicAssembler::new); ScreenGuidebook.addGuidebookModule(new ModuleNuclearScience()); } @SubscribeEvent public static void registerEntities(EntityRenderersEvent.RegisterRenderers event) { - event.registerBlockEntityRenderer(DeferredRegisters.TILE_GASCENTRIFUGE.get(), RenderGasCentrifuge::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_CHEMICALEXTRACTOR.get(), RenderChemicalExtractor::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_CHEMICALBOILER.get(), RenderNuclearBoiler::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_TURBINE.get(), RenderTurbine::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_REACTORCORE.get(), RenderReactorCore::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_FUSIONREACTORCORE.get(), RenderFusionReactorCore::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_QUANTUMCAPACITOR.get(), RenderQuantumCapacitor::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_TELEPORTER.get(), RenderTeleporter::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_CONTROLRODASSEMBLY.get(), RenderRodAssembly::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_FUELREPROCESSOR.get(), RenderFuelReprocessor::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_RADIOACTIVEPROCESSOR.get(), RenderRadioactiveProcessor::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_MOLTENSALTSUPPLIER.get(), RenderMoltenSaltSupplier::new); - event.registerBlockEntityRenderer(DeferredRegisters.TILE_ATOMICASSEMBLER.get(), RenderAtomicAssembler::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_GASCENTRIFUGE.get(), RenderGasCentrifuge::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_CHEMICALEXTRACTOR.get(), RenderChemicalExtractor::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_CHEMICALBOILER.get(), RenderNuclearBoiler::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_TURBINE.get(), RenderTurbine::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_REACTORCORE.get(), RenderFissionReactorCore::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_FUSIONREACTORCORE.get(), RenderFusionReactorCore::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_QUANTUMCAPACITOR.get(), RenderQuantumCapacitor::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_TELEPORTER.get(), RenderTeleporter::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_CONTROLRODASSEMBLY.get(), RenderRodAssembly::new); + event.registerBlockEntityRenderer(NuclearScienceBlockTypes.TILE_ATOMICASSEMBLER.get(), RenderAtomicAssembler::new); - event.registerEntityRenderer(DeferredRegisters.ENTITY_PARTICLE.get(), RenderParticle::new); + event.registerEntityRenderer(NuclearScienceEntities.ENTITY_PARTICLE.get(), RenderParticle::new); } public static boolean shouldMultilayerRender(RenderType type) { return type == RenderType.translucent() || type == RenderType.solid(); } + + static { + customTextures.add(ClientRegister.TEXTURE_JEIBLACKHOLE); + } + + @SubscribeEvent + public static void addCustomTextureAtlases(TextureStitchEvent.Pre event) { + if (event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) { + customTextures.forEach(event::addSprite); + } + } + + @SubscribeEvent + public static void cacheCustomTextureAtlases(TextureStitchEvent.Post event) { + if (event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) { + for (ResourceLocation loc : customTextures) { + ClientRegister.CACHED_TEXTUREATLASSPRITES.put(loc, event.getAtlas().getSprite(loc)); + } + } + } } diff --git a/src/main/java/nuclearscience/client/guidebook/ModuleNuclearScience.java b/src/main/java/nuclearscience/client/guidebook/ModuleNuclearScience.java index f5cdd6bb..e4a89e20 100644 --- a/src/main/java/nuclearscience/client/guidebook/ModuleNuclearScience.java +++ b/src/main/java/nuclearscience/client/guidebook/ModuleNuclearScience.java @@ -1,23 +1,25 @@ package nuclearscience.client.guidebook; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.components.Chapter; import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; import nuclearscience.client.guidebook.chapters.ChapterFissionReactor; import nuclearscience.client.guidebook.chapters.ChapterFusionReactor; +import nuclearscience.client.guidebook.chapters.ChapterGasCentrifuge; import nuclearscience.client.guidebook.chapters.ChapterMSReactor; import nuclearscience.client.guidebook.chapters.ChapterMisc; import nuclearscience.client.guidebook.chapters.ChapterOtherMachines; import nuclearscience.client.guidebook.chapters.ChapterParticleAccelerator; import nuclearscience.client.guidebook.chapters.ChapterRadiation; +import nuclearscience.client.guidebook.chapters.ChapterRadioGenerator; +import nuclearscience.client.guidebook.chapters.ChapterTurbines; +import nuclearscience.prefab.utils.NuclearTextUtils; public class ModuleNuclearScience extends Module { - private static final ImageWrapperObject LOGO = new ImageWrapperObject(10, 38, 0, 0, 32, 32, 32, 32, References.ID + ":textures/screen/guidebook/nuclearsciencelogo.png"); + private static final ImageWrapperObject LOGO = new ImageWrapperObject(0, 0, 0, 0, 32, 32, 32, 32, new ResourceLocation(References.ID, "textures/screen/guidebook/nuclearsciencelogo.png")); @Override public ImageWrapperObject getLogo() { @@ -25,26 +27,22 @@ public ImageWrapperObject getLogo() { } @Override - public String getTitleCat() { - return References.ID; - } - - @Override - protected List genChapters() { - List chapters = new ArrayList<>(); - chapters.add(new ChapterRadiation()); - chapters.add(new ChapterFissionReactor()); - chapters.add(new ChapterMSReactor()); - chapters.add(new ChapterFusionReactor()); - chapters.add(new ChapterParticleAccelerator()); - chapters.add(new ChapterOtherMachines()); - chapters.add(new ChapterMisc()); - return chapters; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook(References.ID); } @Override - public boolean isFirst() { - return false; + public void addChapters() { + chapters.add(new ChapterRadiation(this)); + chapters.add(new ChapterTurbines(this)); + chapters.add(new ChapterGasCentrifuge(this)); + chapters.add(new ChapterFissionReactor(this)); + chapters.add(new ChapterRadioGenerator(this)); + chapters.add(new ChapterMSReactor(this)); + chapters.add(new ChapterFusionReactor(this)); + chapters.add(new ChapterParticleAccelerator(this)); + chapters.add(new ChapterOtherMachines(this)); + chapters.add(new ChapterMisc(this)); } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFissionReactor.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFissionReactor.java index fe808656..81ae040f 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFissionReactor.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFissionReactor.java @@ -1,175 +1,25 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.api.item.ItemUtils; -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.ItemWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; -import nuclearscience.DeferredRegisters; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; public class ChapterFissionReactor extends Chapter { - private static final ItemWrapperObject LOGO = new ItemWrapperObject(17, 60, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockReactorCore)); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p1l12") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor1.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor2.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p3l9") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor3.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor4.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p5l15"), })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p6l15"), })); + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockFissionReactorCore.asItem()); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fissionreactor.p7l13") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor5.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor6.png") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fissionreactor7.png") })); - - return pages; + public ChapterFissionReactor(Module module) { + super(module); } @Override @@ -178,8 +28,38 @@ public ItemWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.fissionreactor"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.fissionreactor"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l1")).setIndentions(1)); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l2")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor3.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor4.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l3")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceItems.ITEM_FUELLEUO2.get().getDescription()).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.maxtemp", 1075)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.cycles", new ItemStack(NuclearScienceItems.ITEM_FUELLEUO2.get()).getMaxDamage())).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceItems.ITEM_FUELHEUO2.get().getDescription()).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.maxtemp", 1417)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.cycles", new ItemStack(NuclearScienceItems.ITEM_FUELHEUO2.get()).getMaxDamage())).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceItems.ITEM_FUELPLUTONIUM.get().getDescription()).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.maxtemp", 1075)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.cycles", new ItemStack(NuclearScienceItems.ITEM_FUELPLUTONIUM.get()).getMaxDamage())).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l4")).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l5")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l6")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.controlrod").withStyle(ChatFormatting.BOLD))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l7"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor5.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor6.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fissionreactor.l8")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 79, 150, 79, new ResourceLocation(References.ID, "textures/screen/guidebook/fissionreactor7.png"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFusionReactor.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFusionReactor.java index ac598dba..07d6b0c0 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFusionReactor.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterFusionReactor.java @@ -1,164 +1,22 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.api.item.ItemUtils; -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.ItemWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; -import nuclearscience.DeferredRegisters; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class ChapterFusionReactor extends Chapter { - private static final ItemWrapperObject LOGO = new ItemWrapperObject(17, 60, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockFusionReactorCore)); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p1l15"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor1.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor2.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p3l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p3l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p3l3") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor3.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor4.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p5l6") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor5.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor6.png") })); + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockFusionReactorCore.asItem()); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p7l13"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor7.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor8.png") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor9.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor10.png") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/fusionreactor11.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.fusionreactor.p11l15"), })); - - return pages; + public ChapterFusionReactor(Module module) { + super(module); } @Override @@ -167,8 +25,33 @@ public ItemWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.fusionreactor"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.fusionreactor"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l1")).setIndentions(1)); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l2")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor3.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l3")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor4.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor5.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l4")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor6.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor7.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor8.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l5")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor9.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor10.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor11.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.fusionreactor.l6")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor12.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor13.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/fusionreactor14.png"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterGasCentrifuge.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterGasCentrifuge.java new file mode 100644 index 00000000..582dcee8 --- /dev/null +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterGasCentrifuge.java @@ -0,0 +1,40 @@ +package nuclearscience.client.guidebook.chapters; + +import electrodynamics.client.guidebook.utils.components.Chapter; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; +import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; + +public class ChapterGasCentrifuge extends Chapter { + + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockGasCentrifuge.asItem()); + + public ChapterGasCentrifuge(Module module) { + super(module); + } + + @Override + public ItemWrapperObject getLogo() { + return LOGO; + } + + @Override + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.centrifuge"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.centrifuge.l1")).setIndentions(1)); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.centrifuge.l2")).setSeparateStart().setIndentions(1)); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/gascentrifuge1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/gascentrifuge2.png"))); + } + +} diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMSReactor.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMSReactor.java index 6ec77021..ab11e068 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMSReactor.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMSReactor.java @@ -1,171 +1,24 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.api.item.ItemUtils; -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.ItemWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; -import nuclearscience.DeferredRegisters; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class ChapterMSReactor extends Chapter { - private static final ItemWrapperObject LOGO = new ItemWrapperObject(17, 60, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockMsrReactorCore)); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.msreactor.p1l15"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor1.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor2.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.msreactor.p3l15"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor3.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor4.png") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor5.png"), })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.msreactor.p6l14") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor6.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor7.png") })); + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockMSReactorCore.asItem()); - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor8.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor9.png") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor10.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor11.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.msreactor.p10l10"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/msreactor12.png"), })); - - return pages; + public ChapterMSReactor(Module module) { + super(module); } @Override @@ -174,8 +27,39 @@ public ItemWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.msreactor"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.msreactor"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l1")).setIndentions(1)); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l2")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockMSReactorCore.asItem().getDescription()).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockFreezePlug.asItem().getDescription()).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockMoltenSaltSupplier.asItem().getDescription()).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l3")).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l4")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor4-1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor4-2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l5", TileMoltenSaltSupplier.AMT_PER_SALT)).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor5-1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor5-2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l6")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceBlocks.getBlock(SubtypeMoltenSaltPipe.vanadiumsteelceramic).asItem().getDescription()).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockHeatExchanger.asItem().getDescription()).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l7")).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor6.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor7.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor8.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor9.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor10.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor11.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.msreactor.l8")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/msreactor12.png"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMisc.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMisc.java index b2405883..f8be92b4 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMisc.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterMisc.java @@ -1,25 +1,20 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; public class ChapterMisc extends Chapter { - private static final ImageWrapperObject LOGO = new ImageWrapperObject(10, 50, 0, 0, 32, 32, 32, 32, References.ID + ":textures/item/cellempty.png"); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.misc.p1l1"), })); + private static final ImageWrapperObject LOGO = new ImageWrapperObject(0, 0, 0, 0, 32, 32, 32, 32, new ResourceLocation(References.ID, "textures/item/cellempty.png")); - return pages; + public ChapterMisc(Module module) { + super(module); } @Override @@ -28,8 +23,14 @@ public ImageWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.misc"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.misc"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.misc.l1"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterOtherMachines.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterOtherMachines.java index f9c9e019..153f2b66 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterOtherMachines.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterOtherMachines.java @@ -1,239 +1,24 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.api.item.ItemUtils; -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.ItemWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; +import electrodynamics.client.guidebook.ScreenGuidebook; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; import net.minecraft.ChatFormatting; -import nuclearscience.DeferredRegisters; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class ChapterOtherMachines extends Chapter { - private static final ItemWrapperObject LOGO = new ItemWrapperObject(17, 60, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockAtomicAssembler)); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - - pages.add(new Page(new TextWrapperObject[] { - // - new TextWrapperObject(45, 53, 4210752, "guidebook.nuclearscience.chapter.othermachines.radiogentitle").setTextStyles(ChatFormatting.UNDERLINE), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l1"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l2"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l3"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l4"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l5"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l6"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l7"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l8"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l9"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l10"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p1l11") }, - new ItemWrapperObject[] { - // - new ItemWrapperObject(17, 50, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockRadioisotopeGenerator)) })); - - pages.add(new Page(new TextWrapperObject[] { - // - new TextWrapperObject(45, 53, 4210752, "guidebook.nuclearscience.chapter.othermachines.gascenttitle").setTextStyles(ChatFormatting.UNDERLINE), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l1"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l2"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l3"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l4"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l5"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l6"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l7"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l8"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l9"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l10"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p2l11") }, - new ItemWrapperObject[] { - // - new ItemWrapperObject(17, 50, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockGasCentrifuge)) })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p3l15"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/gascentrifuge1.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/gascentrifuge2.png") })); - - pages.add(new Page(new TextWrapperObject[] { - // - new TextWrapperObject(45, 53, 4210752, "guidebook.nuclearscience.chapter.othermachines.quantumcaptitle").setTextStyles(ChatFormatting.UNDERLINE), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l1"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l2"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l3"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l4"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l5"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l6"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l7"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l8"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l9"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l10"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p5l11") }, - new ItemWrapperObject[] { - // - new ItemWrapperObject(17, 50, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockQuantumCapacitor)) })); + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockAtomicAssembler.asItem()); - pages.add(new Page(new TextWrapperObject[] { - // - new TextWrapperObject(45, 53, 4210752, "guidebook.nuclearscience.chapter.othermachines.teleportertitle").setTextStyles(ChatFormatting.UNDERLINE), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l1"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l2"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l3"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l4"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l5"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l6"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l7"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l8"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l9"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l10"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p6l11") }, - new ItemWrapperObject[] { - // - new ItemWrapperObject(17, 50, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockTeleporter)) })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p7l7") })); - - pages.add(new Page(new TextWrapperObject[] { - // - new TextWrapperObject(45, 53, 4210752, "guidebook.nuclearscience.chapter.othermachines.atomicasstitle").setTextStyles(ChatFormatting.UNDERLINE), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l1"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l2"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l3"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l4"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l5"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l6"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l7"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l8"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l9"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l10"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.othermachines.p8l11") }, - new ItemWrapperObject[] { - // - new ItemWrapperObject(17, 50, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockAtomicAssembler)) })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 115, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/atomicassembler1.png") }, - new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.othermachines.p9l7"), })); - - return pages; + public ChapterOtherMachines(Module module) { + super(module); } @Override @@ -242,8 +27,31 @@ public ItemWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.othermachines"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.othermachines"); + } + + @Override + public void addData() { + + // QUantum Capacitor + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockQuantumCapacitor.asItem().getDescription().copy().withStyle(ChatFormatting.BOLD)).setCentered().setSeparateStart()); + pageData.add(new ItemWrapperObject(7 + ScreenGuidebook.TEXT_WIDTH / 2 - 16, 5, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockQuantumCapacitor.asItem())); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.quantumcapacitor1")).setIndentions(1).setSeparateStart()); + + // Teleporter + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockTeleporter.asItem().getDescription().copy().withStyle(ChatFormatting.BOLD)).setCentered().setNewPage()); + pageData.add(new ItemWrapperObject(7 + ScreenGuidebook.TEXT_WIDTH / 2 - 16, 5, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockTeleporter.asItem())); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.teleporter1")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.teleporter2")).setIndentions(1).setSeparateStart()); + + // Atomic Assembler + pageData.add(new TextWrapperObject(NuclearScienceBlocks.blockAtomicAssembler.asItem().getDescription().copy().withStyle(ChatFormatting.BOLD)).setCentered().setNewPage()); + pageData.add(new ItemWrapperObject(7 + ScreenGuidebook.TEXT_WIDTH / 2 - 16, 5, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockAtomicAssembler.asItem())); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.atomicassembler1")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.atomicassembler2")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 79, 150, 79, new ResourceLocation(References.ID, "textures/screen/guidebook/atomicassembler1.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.othermachines.atomicassembler3")).setSeparateStart()); } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterParticleAccelerator.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterParticleAccelerator.java index c07c5641..2bbc6699 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterParticleAccelerator.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterParticleAccelerator.java @@ -1,222 +1,22 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.api.item.ItemUtils; -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.ItemWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; -import nuclearscience.DeferredRegisters; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import nuclearscience.References; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class ChapterParticleAccelerator extends Chapter { - private static final ItemWrapperObject LOGO = new ItemWrapperObject(17, 60, 2.0F, ItemUtils.fromBlock(DeferredRegisters.blockParticleInjector)); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p1l15"), })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p2l13") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator1.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator2.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p4l15"), })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l14"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p5l15"), })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator3.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator4.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p7l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p7l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p7l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p7l4") })); + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockParticleInjector.asItem()); - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator5.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator6.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p9l12") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator7.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator8.png") })); - - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l5"), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.particleaccelerator.p11l9") })); - - pages.add(new Page(new ImageWrapperObject[] { - // - new ImageWrapperObject(12, 38, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator9.png"), - // - new ImageWrapperObject(12, 117, 0, 0, 150, 79, 150, 79, References.ID + ":textures/screen/guidebook/particleaccelerator10.png") })); - - return pages; + public ChapterParticleAccelerator(Module module) { + super(module); } @Override @@ -225,8 +25,35 @@ public ItemWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.particleaccelerator"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.particleaccelerator"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l1")).setIndentions(1)); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.formula")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l2")).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l3")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator1.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator2.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l4")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l5")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator3.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator4.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l6")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator5.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator6.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l7")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l8")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator7.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator8.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l9")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator9.png"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.particleaccelerator.l10")).setIndentions(1).setSeparateStart()); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator10.png"))); + pageData.add(new ImageWrapperObject(0, 0, 0, 0, 150, 75, 150, 75, new ResourceLocation(References.ID, "textures/screen/guidebook/particleaccelerator11.png"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadiation.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadiation.java index 1984ca97..0f0fb160 100644 --- a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadiation.java +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadiation.java @@ -1,60 +1,26 @@ package nuclearscience.client.guidebook.chapters; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.client.guidebook.utils.ImageWrapperObject; -import electrodynamics.client.guidebook.utils.TextWrapperObject; import electrodynamics.client.guidebook.utils.components.Chapter; -import electrodynamics.client.guidebook.utils.components.Page; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ImageWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import electrodynamics.common.item.subtype.SubtypePlate; +import electrodynamics.registers.ElectrodynamicsItems; import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; import nuclearscience.References; +import nuclearscience.api.radiation.RadiationRegister; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceItems; public class ChapterRadiation extends Chapter { - private static final ImageWrapperObject LOGO = new ImageWrapperObject(10, 50, 0, 0, 32, 32, 32, 32, References.ID + ":textures/item/uranium235.png"); - - @Override - protected List genPages() { - List pages = new ArrayList<>(); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l1"), new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l2"), new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l3"), new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l4"), new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l5"), new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l6"), new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l7"), new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l8"), new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l9"), new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l10"), new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l11"), new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l12"), new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l13"), new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l14"), new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.radiation.p1l15"), })); + private static final ImageWrapperObject LOGO = new ImageWrapperObject(0, 0, 0, 0, 32, 32, 32, 32, new ResourceLocation(References.ID, "textures/item/uranium235.png")); - pages.add(new Page(new TextWrapperObject[] { new TextWrapperObject(10, 40, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l1"), - // - new TextWrapperObject(10, 50, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l2"), - // - new TextWrapperObject(10, 60, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l3"), - // - new TextWrapperObject(10, 70, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l4"), - // - new TextWrapperObject(10, 80, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l5-1"), - // - new TextWrapperObject(69, 80, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l5-2").setTextStyles(ChatFormatting.BOLD), - // - new TextWrapperObject(10, 90, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l6"), - // - new TextWrapperObject(10, 100, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l7"), - // - new TextWrapperObject(10, 110, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l8"), - // - new TextWrapperObject(10, 120, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l9"), - // - new TextWrapperObject(10, 130, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l10"), - // - new TextWrapperObject(10, 140, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l11"), - // - new TextWrapperObject(10, 150, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l12"), - // - new TextWrapperObject(10, 160, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l13"), - // - new TextWrapperObject(10, 170, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l14-1"), - // - new TextWrapperObject(62, 170, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l14-2").setTextStyles(ChatFormatting.BOLD), - // - new TextWrapperObject(113, 170, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l14-3"), - // - new TextWrapperObject(10, 180, 4210752, "guidebook.nuclearscience.chapter.radiation.p2l15"), })); - return pages; + public ChapterRadiation(Module module) { + super(module); } @Override @@ -63,8 +29,29 @@ public ImageWrapperObject getLogo() { } @Override - public String getTitleKey() { - return "guidebook.nuclearscience.chapter.radiation"; + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.radiation"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l1")).setIndentions(1)); + blankLine(); + for (Item item : RadiationRegister.getRadioactiveItems()) { + pageData.add(new TextWrapperObject(item.getDescription()).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.radrating", RadiationRegister.get(item).getRadiationStrength())).setSeparateStart().setIndentions(1)); + } + blankLine(); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l2")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.hazmatsuit").withStyle(ChatFormatting.BOLD))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l3"))); + pageData.add(new TextWrapperObject(ElectrodynamicsItems.getItem(SubtypePlate.lead).getDescription().copy().withStyle(ChatFormatting.BOLD))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l4"))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l5")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l6")).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearScienceItems.ITEM_ANTIDOTE.get().getDescription().copy().withStyle(ChatFormatting.BOLD))); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiation.l7"))); + } } diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadioGenerator.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadioGenerator.java new file mode 100644 index 00000000..b133d0f4 --- /dev/null +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterRadioGenerator.java @@ -0,0 +1,34 @@ +package nuclearscience.client.guidebook.chapters; + +import electrodynamics.client.guidebook.utils.components.Chapter; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; + +public class ChapterRadioGenerator extends Chapter { + + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockRadioisotopeGenerator.asItem()); + + public ChapterRadioGenerator(Module module) { + super(module); + } + + @Override + public ItemWrapperObject getLogo() { + return LOGO; + } + + @Override + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.radiogen"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.radiogen.l1")).setIndentions(1)); + } + +} diff --git a/src/main/java/nuclearscience/client/guidebook/chapters/ChapterTurbines.java b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterTurbines.java new file mode 100644 index 00000000..05cbdeb7 --- /dev/null +++ b/src/main/java/nuclearscience/client/guidebook/chapters/ChapterTurbines.java @@ -0,0 +1,40 @@ +package nuclearscience.client.guidebook.chapters; + +import electrodynamics.client.guidebook.utils.components.Chapter; +import electrodynamics.client.guidebook.utils.components.Module; +import electrodynamics.client.guidebook.utils.pagedata.graphics.ItemWrapperObject; +import electrodynamics.client.guidebook.utils.pagedata.text.TextWrapperObject; +import net.minecraft.network.chat.MutableComponent; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; + +public class ChapterTurbines extends Chapter { + + private static final ItemWrapperObject LOGO = new ItemWrapperObject(7, 10, 32, 32, 32, 2.0F, NuclearScienceBlocks.blockTurbine.asItem()); + + public ChapterTurbines(Module module) { + super(module); + } + + @Override + public ItemWrapperObject getLogo() { + return LOGO; + } + + @Override + public MutableComponent getTitle() { + return NuclearTextUtils.guidebook("chapter.turbines"); + } + + @Override + public void addData() { + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.l1")).setIndentions(1)); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.tempvoltage", 1090, 120)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.tempvoltage", 1515, 240)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.tempvoltage", ">1515", 480)).setIndentions(1).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.l2")).setSeparateStart()); + pageData.add(new TextWrapperObject(NuclearTextUtils.guidebook("chapter.turbines.l3")).setIndentions(1).setSeparateStart()); + + } + +} diff --git a/src/main/java/nuclearscience/client/render/entity/RenderParticle.java b/src/main/java/nuclearscience/client/render/entity/RenderParticle.java index 3c92b663..b60783a4 100644 --- a/src/main/java/nuclearscience/client/render/entity/RenderParticle.java +++ b/src/main/java/nuclearscience/client/render/entity/RenderParticle.java @@ -29,4 +29,4 @@ public ResourceLocation getTextureLocation(EntityParticle entity) { return InventoryMenu.BLOCK_ATLAS; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderAtomicAssembler.java b/src/main/java/nuclearscience/client/render/tile/RenderAtomicAssembler.java index 83016a5a..0ff978ba 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderAtomicAssembler.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderAtomicAssembler.java @@ -3,38 +3,40 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.client.render.tile.AbstractTileRenderer; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentInventory; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import nuclearscience.common.tile.TileAtomicAssembler; -public class RenderAtomicAssembler implements BlockEntityRenderer { +public class RenderAtomicAssembler extends AbstractTileRenderer { + public RenderAtomicAssembler(BlockEntityRendererProvider.Context context) { + super(context); } @Override - public void render(TileAtomicAssembler tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { - ComponentInventory inv = tileEntityIn.getComponent(ComponentType.Inventory); + public void render(TileAtomicAssembler tile, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { + ComponentInventory inv = tile.getComponent(IComponentType.Inventory); ItemStack stack = inv.getItem(6); if (!stack.isEmpty()) { - matrixStackIn.pushPose(); - matrixStackIn.translate(0.5, 1 / 16.0 + (stack.getItem() instanceof BlockItem ? 0.48 : 0.39), 0.5); - matrixStackIn.scale(0.35f, 0.35f, 0.35f); + poseStack.pushPose(); + poseStack.translate(0.5, 1 / 16.0 + (stack.getItem() instanceof BlockItem ? 0.48 : 0.39), 0.5); + poseStack.scale(0.35f, 0.35f, 0.35f); if (!(stack.getItem() instanceof BlockItem)) { - matrixStackIn.mulPose(Vector3f.XN.rotationDegrees(90)); + poseStack.mulPose(Vector3f.XN.rotationDegrees(90)); } else { - matrixStackIn.scale(0.3f, 0.3f, 0.3f); - matrixStackIn.translate(0, -0.5, 0); + poseStack.scale(0.3f, 0.3f, 0.3f); + poseStack.translate(0, -0.5, 0); } - Minecraft.getInstance().getItemRenderer().renderStatic(stack, TransformType.NONE, combinedLightIn, combinedOverlayIn, matrixStackIn, bufferIn, 0); - matrixStackIn.popPose(); + Minecraft.getInstance().getItemRenderer().renderStatic(stack, TransformType.NONE, combinedLightIn, combinedOverlayIn, poseStack, bufferIn, 0); + poseStack.popPose(); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderChemicalExtractor.java b/src/main/java/nuclearscience/client/render/tile/RenderChemicalExtractor.java index 9e2d0a31..087f761a 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderChemicalExtractor.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderChemicalExtractor.java @@ -1,39 +1,88 @@ package nuclearscience.client.render.tile; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; -import electrodynamics.prefab.block.GenericEntityBlock; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.client.render.tile.AbstractTileRenderer; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.utilities.RenderingUtils; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; -import net.minecraft.world.level.material.Fluids; -import nuclearscience.client.ClientRegister; +import net.minecraft.world.phys.AABB; +import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.tile.TileChemicalExtractor; -public class RenderChemicalExtractor implements BlockEntityRenderer { +public class RenderChemicalExtractor extends AbstractTileRenderer { + + private static final float DELTA_Y = 7.0F / 16.0F; + public RenderChemicalExtractor(BlockEntityRendererProvider.Context context) { + super(context); } @Override - public void render(TileChemicalExtractor tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { - BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_CHEMICALEXTRACTORWATER); - Direction face = tileEntityIn.getBlockState().getValue(GenericEntityBlock.FACING); - matrixStackIn.translate(face.getStepX(), face.getStepY(), face.getStepZ()); - RenderingUtils.prepareRotationalTileModel(tileEntityIn, matrixStackIn); - matrixStackIn.translate(-0.5, 0, 0.5); - float prog = tileEntityIn.getComponent(ComponentType.FluidHandler).getTankFromFluid(Fluids.WATER, true).getFluidAmount() / (float) TileChemicalExtractor.MAX_TANK_CAPACITY; - if (prog > 0) { - matrixStackIn.scale(1, prog / 16.0f * 5.8f * 2, 1); - matrixStackIn.translate(0, prog / 16.0f * 5.8f, 0); - RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.cutout(), matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn); + public void render(TileChemicalExtractor tile, float partialTicks, PoseStack matrix, MultiBufferSource buffer, int combinedLight, int overlay) { + + matrix.pushPose(); + + Direction facing = tile.getFacing(); + ComponentFluidHandlerMulti multi = tile.getComponent(IComponentType.FluidHandler); + VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); + + FluidTank input = multi.getInputTanks()[0]; + + if (input.isEmpty()) { + matrix.popPose(); + return; } + + AABB box = null; + int i = 0; + + float maxY = DELTA_Y * ((float) input.getFluidAmount() / (float) TileChemicalExtractor.MAX_TANK_CAPACITY) + 5.0F / 16.0F; + + if (facing == Direction.NORTH || facing != Direction.EAST && facing == Direction.SOUTH) { + + box = new AABB(2.7 / 16.0, 5 / 16.0, 2.2 / 16.0, 4.3 / 16.0, maxY, 3.8 / 16.0); + + for (i = 0; i < 4; i++) { + RenderingUtils.renderFluidBox(matrix, minecraft(), builder, box, input.getFluid(), combinedLight, overlay); + + box = box.move(3.0 / 16.0, 0, 0); + } + + box = new AABB(2.7 / 16.0, 5 / 16.0, 12.2 / 16.0, 4.3 / 16.0, maxY, 13.8 / 16.0); + + for (i = 0; i < 4; i++) { + RenderingUtils.renderFluidBox(matrix, minecraft(), builder, box, input.getFluid(), combinedLight, overlay); + + box = box.move(3.0 / 16.0, 0, 0); + } + + } else { + + box = new AABB(2.2 / 16.0, 5 / 16.0, 2.7 / 16.0, 3.8 / 16.0, maxY, 4.3 / 16.0); + + for (i = 0; i < 4; i++) { + RenderingUtils.renderFluidBox(matrix, minecraft(), builder, box, input.getFluid(), combinedLight, overlay); + + box = box.move(0, 0, 3.0 / 16.0); + } + + box = new AABB(12.2 / 16.0, 5 / 16.0, 2.7 / 16.0, 13.8 / 16.0, maxY, 4.3 / 16.0); + + for (i = 0; i < 4; i++) { + RenderingUtils.renderFluidBox(matrix, minecraft(), builder, box, input.getFluid(), combinedLight, overlay); + + box = box.move(0, 0, 3.0 / 16.0); + } + + } + + matrix.popPose(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderReactorCore.java b/src/main/java/nuclearscience/client/render/tile/RenderFissionReactorCore.java similarity index 71% rename from src/main/java/nuclearscience/client/render/tile/RenderReactorCore.java rename to src/main/java/nuclearscience/client/render/tile/RenderFissionReactorCore.java index e492e063..7339b27a 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderReactorCore.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderFissionReactorCore.java @@ -4,26 +4,28 @@ import com.mojang.blaze3d.vertex.PoseStack; +import electrodynamics.client.render.tile.AbstractTileRenderer; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.ModelBlockRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.resources.model.BakedModel; import nuclearscience.client.ClientRegister; -import nuclearscience.common.tile.TileReactorCore; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; -public class RenderReactorCore implements BlockEntityRenderer { - public RenderReactorCore(BlockEntityRendererProvider.Context context) { +public class RenderFissionReactorCore extends AbstractTileRenderer { + + public RenderFissionReactorCore(BlockEntityRendererProvider.Context context) { + super(context); } @Override - public void render(TileReactorCore tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { + public void render(TileFissionReactorCore tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { ModelBlockRenderer.enableCaching(); - BakedModel fuelrod = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_REACTORFUELROD); - if (tileEntityIn.fuelCount > 0) { - for (int i = 1; i <= tileEntityIn.fuelCount; i++) { + BakedModel fuelrod = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_FISSIONREACTORFUELROD); + if (tileEntityIn.fuelCount.get() > 0) { + for (int i = 1; i <= Math.min(4, tileEntityIn.fuelCount.get()); i++) { matrixStackIn.pushPose(); switch (i) { case 1: @@ -47,9 +49,9 @@ public void render(TileReactorCore tileEntityIn, float partialTicks, PoseStack m matrixStackIn.popPose(); } } - if (tileEntityIn.hasDeuterium) { + if (tileEntityIn.hasDeuterium.get()) { matrixStackIn.pushPose(); - BakedModel deuterium = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_REACTORDEUTERIUM); + BakedModel deuterium = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_FISSIONREACTORDEUTERIUM); matrixStackIn.translate(0.5, 0, 0.5); Minecraft.getInstance().getBlockRenderer().getModelRenderer().tesselateBlock(tileEntityIn.getLevel(), deuterium, tileEntityIn.getBlockState(), tileEntityIn.getBlockPos(), matrixStackIn, bufferIn.getBuffer(RenderType.solid()), false, tileEntityIn.getLevel().random, new Random().nextLong(), 0); matrixStackIn.popPose(); @@ -57,4 +59,4 @@ public void render(TileReactorCore tileEntityIn, float partialTicks, PoseStack m ModelBlockRenderer.clearCache(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderFuelReprocessor.java b/src/main/java/nuclearscience/client/render/tile/RenderFuelReprocessor.java deleted file mode 100644 index 060a3e43..00000000 --- a/src/main/java/nuclearscience/client/render/tile/RenderFuelReprocessor.java +++ /dev/null @@ -1,52 +0,0 @@ -package nuclearscience.client.render.tile; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Quaternion; -import com.mojang.math.Vector3f; - -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.utilities.RenderingUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import nuclearscience.client.ClientRegister; -import nuclearscience.common.tile.TileFuelReprocessor; - -public class RenderFuelReprocessor implements BlockEntityRenderer { - public RenderFuelReprocessor(BlockEntityRendererProvider.Context context) { - } - - @Override - public void render(TileFuelReprocessor tile, float partialTicks, PoseStack matrixStack, MultiBufferSource buffer, int combinedLightIn, int combinedOverlayIn) { - matrixStack.pushPose(); - matrixStack.translate(0.5, 0.5, 0.5); - Direction dir = tile.getComponent(ComponentType.Direction).getDirection(); - switch (dir) { - case EAST: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 180, true)); - break; - case NORTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), -90, true)); - break; - case SOUTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 90, true)); - break; - default: - break; - } - if (tile.getProcessor(0).operatingTicks > 0) { - BakedModel on = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_FUELREPROCESSOR_ON); - RenderingUtils.renderModel(on, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } else { - BakedModel off = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_FUELREPROCESSOR); - RenderingUtils.renderModel(off, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } - matrixStack.popPose(); - } - -} diff --git a/src/main/java/nuclearscience/client/render/tile/RenderFusionReactorCore.java b/src/main/java/nuclearscience/client/render/tile/RenderFusionReactorCore.java index 1638f5b9..74e78754 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderFusionReactorCore.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderFusionReactorCore.java @@ -3,30 +3,33 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; +import electrodynamics.client.render.tile.AbstractTileRenderer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TextComponent; -import nuclearscience.common.tile.TileFusionReactorCore; +import net.minecraft.network.chat.Component; +import nuclearscience.common.tile.fusionreactor.TileFusionReactorCore; +import nuclearscience.prefab.utils.NuclearTextUtils; + +public class RenderFusionReactorCore extends AbstractTileRenderer { -public class RenderFusionReactorCore implements BlockEntityRenderer { public RenderFusionReactorCore(BlockEntityRendererProvider.Context context) { + super(context); } @Override public void render(TileFusionReactorCore tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { BlockPos pos = tileEntityIn.getBlockPos(); if (Minecraft.getInstance().player.distanceToSqr(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5) <= 32) { - renderFloatingText(matrixStackIn, bufferIn, "Deuterium: " + tileEntityIn.deuterium, 0.6f, 0.7f, 0.6f, 16777215, combinedLightIn); - renderFloatingText(matrixStackIn, bufferIn, "Tritium: " + tileEntityIn.tritium, 0.6f, 0.3f, 0.6f, 16777215, combinedLightIn); + + renderFloatingText(matrixStackIn, bufferIn, NuclearTextUtils.tooltip("deuteriumlevel", tileEntityIn.deuterium), 0.6f, 0.7f, 0.6f, 16777215, combinedLightIn); + renderFloatingText(matrixStackIn, bufferIn, NuclearTextUtils.tooltip("tritiumlevel", tileEntityIn.tritium), 0.6f, 0.3f, 0.6f, 16777215, combinedLightIn); } } - public static void renderFloatingText(PoseStack matrixStackIn, MultiBufferSource bufferIn, String text, float x, float y, float z, int color, int combinedLightIn) { - TextComponent displayNameIn = new TextComponent(text); + public static void renderFloatingText(PoseStack matrixStackIn, MultiBufferSource bufferIn, Component text, float x, float y, float z, int color, int combinedLightIn) { matrixStackIn.pushPose(); matrixStackIn.translate(x, y, z); matrixStackIn.mulPose(Minecraft.getInstance().getEntityRenderDispatcher().cameraOrientation()); @@ -35,8 +38,8 @@ public static void renderFloatingText(PoseStack matrixStackIn, MultiBufferSource float f1 = Minecraft.getInstance().options.getBackgroundOpacity(0.76F); int j = (int) (f1 * 50.0F) << 24; Font fontrenderer = Minecraft.getInstance().font; - float f2 = -fontrenderer.width(displayNameIn) / 2f; - fontrenderer.drawInBatch(displayNameIn, f2, 0, color, false, matrix4f, bufferIn, true, j, combinedLightIn); + float f2 = -fontrenderer.width(text) / 2f; + fontrenderer.drawInBatch(text, f2, 0, color, false, matrix4f, bufferIn, false, j, combinedLightIn); matrixStackIn.popPose(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderGasCentrifuge.java b/src/main/java/nuclearscience/client/render/tile/RenderGasCentrifuge.java index 37932d64..9c5e23af 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderGasCentrifuge.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderGasCentrifuge.java @@ -3,27 +3,29 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Quaternion; +import electrodynamics.client.render.tile.AbstractTileRenderer; import electrodynamics.prefab.utilities.RenderingUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.resources.model.BakedModel; import nuclearscience.client.ClientRegister; import nuclearscience.common.tile.TileGasCentrifuge; -public class RenderGasCentrifuge implements BlockEntityRenderer { +public class RenderGasCentrifuge extends AbstractTileRenderer { + public RenderGasCentrifuge(BlockEntityRendererProvider.Context context) { + super(context); } @Override - public void render(TileGasCentrifuge tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { + public void render(TileGasCentrifuge tile, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_GASCENTRIFUGECENTER); - matrixStackIn.translate(0.5, 0.5, 0.5); - double daytime = System.currentTimeMillis() / 5.0 * (tileEntityIn.spinSpeed / 20.0); - matrixStackIn.mulPose(new Quaternion(0, (float) (daytime * 20 % 360), 0, true)); - RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.solid(), matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn); + poseStack.translate(0.5, 0.5, 0.5); + double daytime = System.currentTimeMillis() / 5.0 * (tile.spinSpeed.get() / 20.0); + poseStack.mulPose(new Quaternion(0, (float) (daytime * 20 % 360), 0, true)); + RenderingUtils.renderModel(ibakedmodel, tile, RenderType.solid(), poseStack, bufferIn, combinedLightIn, combinedOverlayIn); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderMoltenSaltSupplier.java b/src/main/java/nuclearscience/client/render/tile/RenderMoltenSaltSupplier.java deleted file mode 100644 index d42d5e3d..00000000 --- a/src/main/java/nuclearscience/client/render/tile/RenderMoltenSaltSupplier.java +++ /dev/null @@ -1,60 +0,0 @@ -package nuclearscience.client.render.tile; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Quaternion; -import com.mojang.math.Vector3f; - -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.utilities.RenderingUtils; -import electrodynamics.prefab.utilities.object.TransferPack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import nuclearscience.client.ClientRegister; -import nuclearscience.common.settings.Constants; -import nuclearscience.common.tile.TileMoltenSaltSupplier; - -public class RenderMoltenSaltSupplier implements BlockEntityRenderer { - - private static final TransferPack PACK = TransferPack.joulesVoltage(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK, Constants.MOLTENSALTSUPPLIER_VOLTAGE); - - public RenderMoltenSaltSupplier(BlockEntityRendererProvider.Context context) { - } - - @Override - public void render(TileMoltenSaltSupplier tile, float partialTicks, PoseStack matrixStack, MultiBufferSource buffer, int combinedLightIn, int combinedOverlayIn) { - matrixStack.pushPose(); - matrixStack.translate(0.5, 0.5, 0.5); - Direction dir = tile.getComponent(ComponentType.Direction).getDirection(); - switch (dir) { - case WEST: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 180, true)); - break; - case NORTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 90, true)); - break; - case SOUTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), -90, true)); - break; - default: - break; - } - ComponentElectrodynamic electro = tile.getComponent(ComponentType.Electrodynamic); - if (electro != null && electro.getJoulesStored() >= PACK.getJoules()) { - BakedModel on = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_MOLTENSALTSUPPLIER_ON); - RenderingUtils.renderModel(on, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } else { - BakedModel off = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_MOLTENSALTSUPPLIER); - RenderingUtils.renderModel(off, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } - matrixStack.popPose(); - - } - -} diff --git a/src/main/java/nuclearscience/client/render/tile/RenderNuclearBoiler.java b/src/main/java/nuclearscience/client/render/tile/RenderNuclearBoiler.java index 8d2982d4..11270e93 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderNuclearBoiler.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderNuclearBoiler.java @@ -1,57 +1,113 @@ package nuclearscience.client.render.tile; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; -import electrodynamics.prefab.block.GenericEntityBlock; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.client.render.tile.AbstractTileRenderer; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.utilities.RenderingUtils; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; -import net.minecraft.world.level.material.Fluids; -import nuclearscience.DeferredRegisters; -import nuclearscience.client.ClientRegister; +import net.minecraft.world.phys.AABB; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.tile.TileNuclearBoiler; -public class RenderNuclearBoiler implements BlockEntityRenderer { +public class RenderNuclearBoiler extends AbstractTileRenderer { + + private static final float DELTA_Y = 3.6F / 16.0F; + public RenderNuclearBoiler(BlockEntityRendererProvider.Context context) { + super(context); } @Override - public void render(TileNuclearBoiler tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { - matrixStackIn.pushPose(); - BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_CHEMICALBOILERWATER); - Direction face = tileEntityIn.getBlockState().getValue(GenericEntityBlock.FACING); - matrixStackIn.translate(face.getStepX(), face.getStepY(), face.getStepZ()); - RenderingUtils.prepareRotationalTileModel(tileEntityIn, matrixStackIn); - matrixStackIn.translate(-0.5, 0, 0.5); - float prog = tileEntityIn.getComponent(ComponentType.FluidHandler).getTankFromFluid(Fluids.WATER, true).getFluidAmount() / (float) TileNuclearBoiler.MAX_TANK_CAPACITY; - if (prog > 0) { - matrixStackIn.translate(0, 4.5 / 16.0, 2.0 / 16.0); - matrixStackIn.scale(1, prog / 16.0f * 12f, 1); - matrixStackIn.translate(0, prog / 16.0f * 6f, 0); - RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.cutout(), matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn); + public void render(TileNuclearBoiler tile, float partialTicks, PoseStack matrix, MultiBufferSource buffer, int light, int overlay) { + + matrix.pushPose(); + + Direction facing = tile.getFacing(); + ComponentFluidHandlerMulti multi = tile.getComponent(IComponentType.FluidHandler); + VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); + + FluidTank input = multi.getInputTanks()[0]; + + if (!input.isEmpty()) { + + drawFluidInput(matrix, builder, input.getFluid(), facing, (float) input.getFluidAmount() / (float) TileNuclearBoiler.MAX_FLUID_TANK_CAPACITY, light, overlay); + } - matrixStackIn.popPose(); - matrixStackIn.pushPose(); - ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_CHEMICALBOILERHEXAFLUORIDE); - face = tileEntityIn.getBlockState().getValue(GenericEntityBlock.FACING); - matrixStackIn.translate(face.getStepX(), face.getStepY(), face.getStepZ()); - RenderingUtils.prepareRotationalTileModel(tileEntityIn, matrixStackIn); - matrixStackIn.translate(-0.5, 0, 0.5); - prog = tileEntityIn.getComponent(ComponentType.FluidHandler).getTankFromFluid(DeferredRegisters.fluidUraniumHexafluoride, false).getFluidAmount() / (float) TileNuclearBoiler.MAX_TANK_CAPACITY; - if (prog > 0) { - matrixStackIn.translate(0, 4.5 / 16.0, -2.0 / 16.0); - matrixStackIn.scale(1, prog / 16.0f * 12f, 1); - matrixStackIn.translate(0, prog / 16.0f * 6f, 0); - RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.cutout(), matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn); + + matrix.popPose(); + + matrix.pushPose(); + + FluidTank output = multi.getOutputTanks()[0]; + + if (!output.isEmpty()) { + + drawFluidOutput(matrix, builder, output.getFluid(), facing, (float) output.getFluidAmount() / (float) TileNuclearBoiler.MAX_FLUID_TANK_CAPACITY, light, overlay); + } - matrixStackIn.popPose(); + + matrix.popPose(); + + } + + private void drawFluidInput(PoseStack stack, VertexConsumer builder, FluidStack fluid, Direction facing, float height, int light, int overlay) { + + AABB box = null; + + float maxY = DELTA_Y * height + 8.2F / 16.0F; + + if (facing == Direction.NORTH) { + + box = new AABB(8.7 / 16.0, 8.2 / 16, 6.2 / 16.0, 11.3 / 16.0, maxY, 9.8 / 16.0); + + } else if (facing == Direction.EAST) { + + box = new AABB(6.2 / 16.0, 8.2 / 16, 8.7 / 16.0, 9.8 / 16.0, maxY, 11.3 / 16.0); + + } else if (facing == Direction.SOUTH) { + + box = new AABB(4.7 / 16.0, 8.2 / 16, 6.2 / 16.0, 7.3 / 16.0, maxY, 9.8 / 16.0); + + } else { + + box = new AABB(6.2 / 16.0, 8.2 / 16, 4.7 / 16.0, 9.8 / 16.0, maxY, 7.3 / 16.0); + + } + + RenderingUtils.renderFluidBox(stack, minecraft(), builder, box, fluid, light, overlay); + } + + private void drawFluidOutput(PoseStack stack, VertexConsumer builder, FluidStack fluid, Direction facing, float height, int light, int overlay) { + + AABB box = null; + + float maxY = DELTA_Y * height + 8.2F / 16.0F; + + if (facing == Direction.NORTH) { + + box = new AABB(4.7 / 16.0, 8.2 / 16, 6.2 / 16.0, 7.3 / 16.0, maxY, 9.8 / 16.0); + + } else if (facing == Direction.EAST) { + + box = new AABB(6.2 / 16.0, 8.2 / 16, 4.7 / 16.0, 9.8 / 16.0, maxY, 7.3 / 16.0); + + } else if (facing == Direction.SOUTH) { + + box = new AABB(8.7 / 16.0, 8.2 / 16, 6.2 / 16.0, 11.3 / 16.0, maxY, 9.8 / 16.0); + } else { + + box = new AABB(6.2 / 16.0, 8.2 / 16, 8.7 / 16.0, 9.8 / 16.0, maxY, 11.3 / 16.0); + + } + + RenderingUtils.renderFluidBox(stack, minecraft(), builder, box, fluid, light, overlay); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderQuantumCapacitor.java b/src/main/java/nuclearscience/client/render/tile/RenderQuantumCapacitor.java index 8ee00bac..4200a8e2 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderQuantumCapacitor.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderQuantumCapacitor.java @@ -2,24 +2,26 @@ import com.mojang.blaze3d.vertex.PoseStack; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.client.render.tile.AbstractTileRenderer; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentTickable; import electrodynamics.prefab.utilities.RenderingUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import nuclearscience.common.tile.TileQuantumCapacitor; -public class RenderQuantumCapacitor implements BlockEntityRenderer { +public class RenderQuantumCapacitor extends AbstractTileRenderer { + public RenderQuantumCapacitor(BlockEntityRendererProvider.Context context) { + super(context); } @Override public void render(TileQuantumCapacitor tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { matrixStackIn.pushPose(); matrixStackIn.translate(0.5, 0.5, 0.5); - float scale = (float) Math.abs(Math.sin((tileEntityIn.getComponent(ComponentType.Tickable).getTicks() + partialTicks) / 40.0)) * 0.001f + 0.001f; + float scale = (float) Math.abs(Math.sin((tileEntityIn.getComponent(IComponentType.Tickable).getTicks() + partialTicks) / 40.0)) * 0.001f + 0.001f; matrixStackIn.scale(scale, scale, scale); float distance = (float) Math.sqrt(1 + Minecraft.getInstance().player.distanceToSqr(tileEntityIn.getBlockPos().getX() + 0.5, tileEntityIn.getBlockPos().getY() + 0.5, tileEntityIn.getBlockPos().getZ() + 0.5)); RenderingUtils.renderStar(matrixStackIn, bufferIn, tileEntityIn.getLevel().getLevelData().getDayTime() + partialTicks, (int) (250 / distance), tileEntityIn.getLevel().random.nextFloat() * 0.2f + 0.1f, 0, 0, 1f, false); @@ -28,4 +30,4 @@ public void render(TileQuantumCapacitor tileEntityIn, float partialTicks, PoseSt matrixStackIn.popPose(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderRadioactiveProcessor.java b/src/main/java/nuclearscience/client/render/tile/RenderRadioactiveProcessor.java deleted file mode 100644 index 0b11a12f..00000000 --- a/src/main/java/nuclearscience/client/render/tile/RenderRadioactiveProcessor.java +++ /dev/null @@ -1,54 +0,0 @@ -package nuclearscience.client.render.tile; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Quaternion; -import com.mojang.math.Vector3f; - -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentProcessor; -import electrodynamics.prefab.utilities.RenderingUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.Direction; -import nuclearscience.client.ClientRegister; -import nuclearscience.common.tile.TileRadioactiveProcessor; - -public class RenderRadioactiveProcessor implements BlockEntityRenderer { - public RenderRadioactiveProcessor(BlockEntityRendererProvider.Context context) { - } - - @Override - public void render(TileRadioactiveProcessor tile, float partialTicks, PoseStack matrixStack, MultiBufferSource buffer, int combinedLightIn, int combinedOverlayIn) { - - matrixStack.pushPose(); - matrixStack.translate(0.5, 0.5, 0.5); - Direction dir = tile.getComponent(ComponentType.Direction).getDirection(); - switch (dir) { - case WEST: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 180, true)); - break; - case NORTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), 90, true)); - break; - case SOUTH: - matrixStack.mulPose(new Quaternion(new Vector3f(0.0F, 1.0F, 0.0F), -90, true)); - break; - default: - break; - } - if (tile.getComponent(ComponentType.Processor).operatingTicks > 0) { - BakedModel on = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_RADIOACTIVEPROCESSOR_ON); - RenderingUtils.renderModel(on, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } else { - BakedModel off = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_RADIOACTIVEPROCESSOR); - RenderingUtils.renderModel(off, tile, RenderType.solid(), matrixStack, buffer, combinedLightIn, combinedOverlayIn); - } - matrixStack.popPose(); - } - -} diff --git a/src/main/java/nuclearscience/client/render/tile/RenderRodAssembly.java b/src/main/java/nuclearscience/client/render/tile/RenderRodAssembly.java index 04ac32fe..5ce99ea8 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderRodAssembly.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderRodAssembly.java @@ -3,19 +3,21 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Quaternion; +import electrodynamics.client.render.tile.AbstractTileRenderer; import electrodynamics.prefab.utilities.RenderingUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import nuclearscience.client.ClientRegister; import nuclearscience.common.tile.TileControlRodAssembly; -public class RenderRodAssembly implements BlockEntityRenderer { +public class RenderRodAssembly extends AbstractTileRenderer { + public RenderRodAssembly(BlockEntityRendererProvider.Context context) { + super(context); } @Override @@ -23,15 +25,15 @@ public void render(TileControlRodAssembly tileEntityIn, float partialTicks, Pose stack.pushPose(); BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_CONTROLRODASSEMBLYSTRUCTURE); stack.translate(0.5, 0.5, 0.5); - if (tileEntityIn.isMSR) { - Direction dir = tileEntityIn.direction; + if (tileEntityIn.isMSR.get()) { + Direction dir = Direction.values()[tileEntityIn.direction.get()]; stack.mulPose(new Quaternion(90, 0, dir.toYRot(), true)); } RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.solid(), stack, bufferIn, combinedLightIn, combinedOverlayIn); - int insertion = tileEntityIn.insertion - 100; + int insertion = tileEntityIn.insertion.get() - 100; stack.translate(0, 12 / 16.0 * insertion / 100.0 + .5 / 16.0, 0); ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_CONTROLRODASSEMBLYSROD); RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.solid(), stack, bufferIn, combinedLightIn, combinedOverlayIn); stack.popPose(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderTeleporter.java b/src/main/java/nuclearscience/client/render/tile/RenderTeleporter.java index 322bbfe8..a371307f 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderTeleporter.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderTeleporter.java @@ -4,35 +4,29 @@ import com.mojang.blaze3d.vertex.PoseStack; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.client.render.tile.AbstractTileRenderer; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.utilities.RenderingUtils; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.AABB; -import nuclearscience.client.ClientRegister; import nuclearscience.common.tile.TileTeleporter; -public class RenderTeleporter implements BlockEntityRenderer { +public class RenderTeleporter extends AbstractTileRenderer { + public RenderTeleporter(BlockEntityRendererProvider.Context context) { + super(context); } @Override public void render(TileTeleporter tileEntityIn, float partialTicks, PoseStack stack, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { stack.pushPose(); - BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_TELEPORTER); + stack.translate(0.5, 0.5, 0.5); - ComponentElectrodynamic electro = tileEntityIn.getComponent(ComponentType.Electrodynamic); - if (electro.getJoulesStored() > 0) { - ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_TELEPORTERON); - } - RenderingUtils.renderModel(ibakedmodel, tileEntityIn, RenderType.solid(), stack, bufferIn, combinedLightIn, combinedOverlayIn); + ComponentElectrodynamic electro = tileEntityIn.getComponent(IComponentType.Electrodynamic); + if (electro.getJoulesStored() > 0) { AABB bb = new AABB(tileEntityIn.getBlockPos(), tileEntityIn.getBlockPos().offset(1, 2, 1)); List player = tileEntityIn.getLevel().getEntities(EntityType.PLAYER, bb, en -> true); @@ -45,4 +39,4 @@ public void render(TileTeleporter tileEntityIn, float partialTicks, PoseStack st } stack.popPose(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/render/tile/RenderTurbine.java b/src/main/java/nuclearscience/client/render/tile/RenderTurbine.java index bd211acf..b2828074 100644 --- a/src/main/java/nuclearscience/client/render/tile/RenderTurbine.java +++ b/src/main/java/nuclearscience/client/render/tile/RenderTurbine.java @@ -3,27 +3,29 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Quaternion; +import electrodynamics.client.render.tile.AbstractTileRenderer; import electrodynamics.prefab.utilities.RenderingUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.level.block.RenderShape; import nuclearscience.client.ClientRegister; +import nuclearscience.common.block.BlockTurbine; import nuclearscience.common.tile.TileTurbine; -public class RenderTurbine implements BlockEntityRenderer { +public class RenderTurbine extends AbstractTileRenderer { + public RenderTurbine(BlockEntityRendererProvider.Context context) { + super(context); } @Override public void render(TileTurbine tileEntityIn, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int combinedLightIn, int combinedOverlayIn) { - boolean isCore = tileEntityIn.isCore; + boolean isCore = tileEntityIn.isCore.get(); BakedModel ibakedmodel = Minecraft.getInstance().getModelManager().getModel(ClientRegister.MODEL_TURBINEROTORLAYER); - double daytime = System.currentTimeMillis() / 5.0 * (tileEntityIn.spinSpeed / 20.0); - if (!isCore && tileEntityIn.getBlockState().getBlock().getRenderShape(tileEntityIn.getBlockState()) != RenderShape.INVISIBLE) { + double daytime = System.currentTimeMillis() / 5.0 * (tileEntityIn.spinSpeed.get() / 20.0); + if (!isCore && tileEntityIn.getBlockState().getValue(BlockTurbine.RENDER)) { matrixStackIn.pushPose(); matrixStackIn.translate(8 / 16.0, 4.75 / 16.0, 8 / 16.0); matrixStackIn.mulPose(new Quaternion(0, (float) (daytime * 20 % 360), 0, true)); @@ -68,4 +70,4 @@ public void render(TileTurbine tileEntityIn, float partialTicks, PoseStack matri } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenAtomicAssembler.java b/src/main/java/nuclearscience/client/screen/ScreenAtomicAssembler.java index 493278e2..940f3ded 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenAtomicAssembler.java +++ b/src/main/java/nuclearscience/client/screen/ScreenAtomicAssembler.java @@ -1,9 +1,11 @@ package nuclearscience.client.screen; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; @@ -17,15 +19,17 @@ public class ScreenAtomicAssembler extends GenericScreen { + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { TileAtomicAssembler assembler = container.getHostFromIntArray(); if (assembler != null) { - return assembler.progress / (double) Constants.ATOMICASSEMBLER_REQUIRED_TICKS; + return assembler.progress.get() / (double) Constants.ATOMICASSEMBLER_REQUIRED_TICKS; } return 0; - }, this, 84, 71)); + }, 84, 71)); + + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82 + 64, 8, 72 + 64); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenChemicalExtractor.java b/src/main/java/nuclearscience/client/screen/ScreenChemicalExtractor.java index d8e73435..f5d29d4d 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenChemicalExtractor.java +++ b/src/main/java/nuclearscience/client/screen/ScreenChemicalExtractor.java @@ -1,62 +1,60 @@ package nuclearscience.client.screen; -import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentFluid; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressTextures; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGaugeInput; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.screen.types.GenericMaterialScreen; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.generic.AbstractFluidHandler; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.inventory.container.ContainerChemicalExtractor; import nuclearscience.common.tile.TileChemicalExtractor; @OnlyIn(Dist.CLIENT) -public class ScreenChemicalExtractor extends GenericScreen { +public class ScreenChemicalExtractor extends GenericMaterialScreen { public ScreenChemicalExtractor(ContainerChemicalExtractor container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentProgress(() -> { + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > 0) { - return Math.min(1.0, processor.operatingTicks / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > 0) { + return Math.min(1.0, processor.operatingTicks.get() / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 42, 30)); - components.add(new ScreenComponentProgress(() -> { + }, 42, 30)); + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > processor.requiredTicks / 2.0) { - return Math.min(1.0, (processor.operatingTicks - processor.requiredTicks / 2.0) / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > processor.requiredTicks.get() / 2.0) { + return Math.min(1.0, (processor.operatingTicks.get() - processor.requiredTicks.get() / 2.0) / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 98, 30)); - components.add(new ScreenComponentProgress(() -> 0, this, 46, 50).left()); - components.add(new ScreenComponentFluid(() -> { + }, 98, 30)); + addComponent(new ScreenComponentGeneric(ProgressTextures.ARROW_LEFT_OFF, 46, 50)); + addComponent(new ScreenComponentFluidGaugeInput(() -> { TileChemicalExtractor boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidInputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, true); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getInputTanks()[0]; } return null; - }, this, 21, 18)); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2)); + }, 21, 18)); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2)); + + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenFissionReactorCore.java b/src/main/java/nuclearscience/client/screen/ScreenFissionReactorCore.java new file mode 100644 index 00000000..0d0440aa --- /dev/null +++ b/src/main/java/nuclearscience/client/screen/ScreenFissionReactorCore.java @@ -0,0 +1,48 @@ +package nuclearscience.client.screen; + +import electrodynamics.prefab.screen.GenericScreen; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.screen.component.types.ScreenComponentSimpleLabel; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import nuclearscience.References; +import nuclearscience.common.inventory.container.ContainerReactorCore; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; +import nuclearscience.prefab.screen.component.NuclearArrows; +import nuclearscience.prefab.utils.NuclearTextUtils; + +@OnlyIn(Dist.CLIENT) +public class ScreenFissionReactorCore extends GenericScreen { + public static final ResourceLocation SCREEN_BACKGROUND = new ResourceLocation(References.ID + ":textures/gui/fissionreactor.png"); + + public ScreenFissionReactorCore(ContainerReactorCore container, Inventory playerInventory, Component title) { + super(container, playerInventory, title); + + imageHeight += 10; + inventoryLabelY += 10; + + addComponent(new ScreenComponentGeneric(NuclearArrows.FISSION_REACTOR_ARROW_LR, 59, 29)); + addComponent(new ScreenComponentGeneric(NuclearArrows.FISSION_REACTOR_ARROW_DOWN, 117, 53)); + + addComponent(new ScreenComponentSimpleLabel(titleLabelX, titleLabelY + 24, height, 4210752, NuclearTextUtils.gui("fissionreactor.deuterium"))); + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + TileFissionReactorCore core = menu.getHostFromIntArray(); + if (core == null) { + return; + } + font.draw(stack, NuclearTextUtils.gui("fissionreactor.temperature", core.temperature.get().intValue() / 4 + 15 + " C"), titleLabelX, titleLabelY + 55, 4210752); + if (core.temperature.get() > TileFissionReactorCore.MELTDOWN_TEMPERATURE_ACTUAL && System.currentTimeMillis() % 1000 < 500) { + font.draw(stack, NuclearTextUtils.gui("fissionreactor.warning"), titleLabelX, titleLabelY + 65, 16711680); + } + })); + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, 2, 75, 82 + 10, 8, 72 + 10); + + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenFreezePlug.java b/src/main/java/nuclearscience/client/screen/ScreenFreezePlug.java index 5a91889a..a4fcf293 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenFreezePlug.java +++ b/src/main/java/nuclearscience/client/screen/ScreenFreezePlug.java @@ -1,20 +1,40 @@ package nuclearscience.client.screen; +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.api.electricity.formatting.DisplayUnit; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import nuclearscience.common.inventory.container.ContainerFreezePlug; import nuclearscience.common.settings.Constants; +import nuclearscience.common.tile.msreactor.TileFreezePlug; +import nuclearscience.prefab.utils.NuclearTextUtils; @OnlyIn(Dist.CLIENT) public class ScreenFreezePlug extends GenericScreen { public ScreenFreezePlug(ContainerFreezePlug container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2).wattage(Constants.FREEZEPLUG_USAGE_PER_TICK * 20)); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2).wattage(Constants.FREEZEPLUG_USAGE_PER_TICK * 20)); + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + TileFreezePlug plug = menu.getHostFromIntArray(); + if (plug == null) { + return; + } + if (plug.isFrozen()) { + font.draw(stack, NuclearTextUtils.gui("freezeplug.status", NuclearTextUtils.gui("freezeplug.frozen").withStyle(ChatFormatting.GREEN)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText(), 40, 30, 0); + + } else { + font.draw(stack, NuclearTextUtils.gui("freezeplug.status", NuclearTextUtils.gui("freezeplug.off").withStyle(ChatFormatting.RED)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText(), 40, 30, 0); + } + font.draw(stack, NuclearTextUtils.gui("freezeplug.saltbonus", ChatFormatter.getChatDisplayShort(plug.getSaltBonus() * 100.0, DisplayUnit.PERCENTAGE).withStyle(ChatFormatting.BLACK)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText(), 40, 50, 0); + })); + } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenGasCentrifuge.java b/src/main/java/nuclearscience/client/screen/ScreenGasCentrifuge.java index d446a001..3d8e4d46 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenGasCentrifuge.java +++ b/src/main/java/nuclearscience/client/screen/ScreenGasCentrifuge.java @@ -1,46 +1,38 @@ package nuclearscience.client.screen; -import com.mojang.blaze3d.vertex.PoseStack; - -import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentFluid; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.generic.AbstractFluidHandler; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGaugeInput; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.screen.types.GenericMaterialScreen; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.inventory.container.ContainerGasCentrifuge; import nuclearscience.common.tile.TileGasCentrifuge; import nuclearscience.prefab.screen.component.ScreenComponentGasCentrifuge; @OnlyIn(Dist.CLIENT) -public class ScreenGasCentrifuge extends GenericScreen { +public class ScreenGasCentrifuge extends GenericMaterialScreen { public ScreenGasCentrifuge(ContainerGasCentrifuge container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentFluid(() -> { + addComponent(new ScreenComponentFluidGaugeInput(() -> { TileGasCentrifuge boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidInputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, true); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getInputTanks()[0]; } return null; - }, this, 18, 19)); - components.add(new ScreenComponentGasCentrifuge(() -> { + }, 18, 19)); + addComponent(new ScreenComponentGasCentrifuge(() -> { TileGasCentrifuge box = menu.getHostFromIntArray(); - if (box != null && box.isRunning) { + if (box != null && box.isRunning.get()) { // return (box.ticks % 100) / 100.0; return 13; } @@ -48,41 +40,39 @@ public ScreenGasCentrifuge(ContainerGasCentrifuge container, Inventory playerInv }, () -> { TileGasCentrifuge boiler = container.getHostFromIntArray(); if (boiler != null) { - return boiler.stored235 / TileGasCentrifuge.REQUIRED; + return boiler.stored235.get() / TileGasCentrifuge.REQUIRED; } return 0; }, () -> { TileGasCentrifuge boiler = container.getHostFromIntArray(); if (boiler != null) { - return boiler.stored238 / TileGasCentrifuge.REQUIRED; + return boiler.stored238.get() / TileGasCentrifuge.REQUIRED; } return 0; }, () -> { TileGasCentrifuge boiler = container.getHostFromIntArray(); if (boiler != null) { - return boiler.storedWaste / TileGasCentrifuge.REQUIRED; + return boiler.storedWaste.get() / TileGasCentrifuge.REQUIRED; } return 0; - }, this, 34, 14)); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2)); - } + }, 34, 14)); - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - super.renderLabels(matrixStack, mouseX, mouseY); - TileGasCentrifuge centrifuge = menu.getHostFromIntArray(); - if (centrifuge != null) { - String u235String = getIntString(centrifuge.stored235); - String u238String = getIntString(centrifuge.stored238); - String wasteString = getIntString(centrifuge.storedWaste); - font.draw(matrixStack, new TextComponent("U235 " + u235String + "%"), 54, 17, 4210752); - font.draw(matrixStack, new TextComponent("U238 " + u238String + "%"), 54, 37, 4210752); - font.draw(matrixStack, new TextComponent("DUST " + wasteString + "%"), 54, 58, 4210752); - } + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2)); + + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + TileGasCentrifuge centrifuge = menu.getHostFromIntArray(); + if (centrifuge == null) { + return; + } + font.draw(stack, new TextComponent("U235 " + getIntString(centrifuge.stored235.get()) + "%"), 54, 17, 4210752); + font.draw(stack, new TextComponent("U238 " + getIntString(centrifuge.stored238.get()) + "%"), 54, 37, 4210752); + font.draw(stack, new TextComponent("DUST " + getIntString(centrifuge.storedWaste.get()) + "%"), 54, 58, 4210752); + })); } - private static String getIntString(int value) { - int perc = (int) (value / TileGasCentrifuge.REQUIRED * 100); + private static String getIntString(double value) { + int perc = (int) (value / (float) TileGasCentrifuge.REQUIRED * 100); if (perc < 10) { return "0" + perc; } diff --git a/src/main/java/nuclearscience/client/screen/ScreenMSRFuelPreProcessor.java b/src/main/java/nuclearscience/client/screen/ScreenMSRFuelPreProcessor.java index 3d71e90c..983f0f4c 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenMSRFuelPreProcessor.java +++ b/src/main/java/nuclearscience/client/screen/ScreenMSRFuelPreProcessor.java @@ -1,60 +1,55 @@ package nuclearscience.client.screen; -import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentFluid; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGaugeInput; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.screen.types.GenericMaterialScreen; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.generic.AbstractFluidHandler; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; -import nuclearscience.common.tile.TileMSRFuelPreProcessor; +import nuclearscience.common.tile.msreactor.TileMSRFuelPreProcessor; @OnlyIn(Dist.CLIENT) -public class ScreenMSRFuelPreProcessor extends GenericScreen { +public class ScreenMSRFuelPreProcessor extends GenericMaterialScreen { public ScreenMSRFuelPreProcessor(ContainerMSRFuelPreProcessor container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentProgress(() -> { + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > 0) { - return Math.min(1.0, processor.operatingTicks / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > 0) { + return Math.min(1.0, processor.operatingTicks.get() / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 42, 30)); - components.add(new ScreenComponentProgress(() -> { + }, 42, 30)); + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > processor.requiredTicks / 2.0) { - return Math.min(1.0, (processor.operatingTicks - processor.requiredTicks / 2.0) / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > processor.requiredTicks.get() / 2.0) { + return Math.min(1.0, (processor.operatingTicks.get() - processor.requiredTicks.get() / 2.0) / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 98, 40)); - components.add(new ScreenComponentFluid(() -> { + }, 98, 40)); + addComponent(new ScreenComponentFluidGaugeInput(() -> { TileMSRFuelPreProcessor boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidInputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, true); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getInputTanks()[0]; } return null; - }, this, 21, 18)); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2)); + }, 21, 18)); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2)); + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenMSRReactorCore.java b/src/main/java/nuclearscience/client/screen/ScreenMSRReactorCore.java deleted file mode 100644 index 3ed3f122..00000000 --- a/src/main/java/nuclearscience/client/screen/ScreenMSRReactorCore.java +++ /dev/null @@ -1,39 +0,0 @@ -package nuclearscience.client.screen; - -import java.text.DecimalFormat; - -import com.mojang.blaze3d.vertex.PoseStack; - -import electrodynamics.prefab.screen.GenericScreen; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import nuclearscience.common.inventory.container.ContainerMSRReactorCore; -import nuclearscience.common.tile.TileFreezePlug; -import nuclearscience.common.tile.TileMSRReactorCore; - -@OnlyIn(Dist.CLIENT) -public class ScreenMSRReactorCore extends GenericScreen { - - public ScreenMSRReactorCore(ContainerMSRReactorCore container, Inventory playerInventory, Component title) { - super(container, playerInventory, title); - } - - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - super.renderLabels(matrixStack, mouseX, mouseY); - TileMSRReactorCore core = menu.getHostFromIntArray(); - if (core != null) { - font.draw(matrixStack, new TranslatableComponent("gui.reactorcore.temperature", (int) core.temperature + " C"), titleLabelX, (float) titleLabelY + 14 * 1, 4210752); - if (core.temperature > TileMSRReactorCore.MELTDOWN_TEMPERATURE && System.currentTimeMillis() % 1000 < 500) { - font.draw(matrixStack, new TranslatableComponent("gui.reactorcore.warning"), titleLabelX, (float) titleLabelY + 55, 16711680); - } - font.draw(matrixStack, new TranslatableComponent("gui.msrreactorcore.fuel", new DecimalFormat("#.##").format(core.currentFuel)), titleLabelX, (float) titleLabelY + 14 * 2, 4210752); - if (!(core.plugCache.getSafe() instanceof TileFreezePlug)) { - font.draw(matrixStack, new TranslatableComponent("gui.msrreactorcore.nofreezeplug"), titleLabelX, (float) titleLabelY + 14 * 3, 0); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenMSReactorCore.java b/src/main/java/nuclearscience/client/screen/ScreenMSReactorCore.java new file mode 100644 index 00000000..52682a76 --- /dev/null +++ b/src/main/java/nuclearscience/client/screen/ScreenMSReactorCore.java @@ -0,0 +1,89 @@ +package nuclearscience.client.screen; + +import java.util.ArrayList; +import java.util.List; + +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.api.electricity.formatting.DisplayUnit; +import electrodynamics.prefab.screen.GenericScreen; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentTemperature; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import nuclearscience.common.inventory.container.ContainerMSRReactorCore; +import nuclearscience.common.tile.msreactor.TileFreezePlug; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; +import nuclearscience.prefab.screen.component.ScreenComponentReactorFuel; +import nuclearscience.prefab.utils.NuclearTextUtils; + +@OnlyIn(Dist.CLIENT) +public class ScreenMSReactorCore extends GenericScreen { + + public ScreenMSReactorCore(ContainerMSRReactorCore container, Inventory playerInventory, Component title) { + super(container, playerInventory, title); + addComponent(new ScreenComponentTemperature(() -> { + + List list = new ArrayList<>(); + + TileMSReactorCore core = menu.getHostFromIntArray(); + if (core == null) { + return list; + } + + MutableComponent text = ChatFormatter.getChatDisplayShort(core.temperature.get(), DisplayUnit.TEMPERATURE_CELCIUS); + + if (core.temperature.get() > TileMSReactorCore.MELTDOWN_TEMPERATURE) { + text = text.withStyle(ChatFormatting.RED); + } else if (core.temperature.get() > TileMSReactorCore.MELTDOWN_TEMPERATURE - 100) { + text = text.withStyle(ChatFormatting.YELLOW); + } else { + text = text.withStyle(ChatFormatting.GREEN); + } + + list.add(text.getVisualOrderText()); + + return list; + }, -AbstractScreenComponentInfo.SIZE + 1, 2)); + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + TileMSReactorCore core = menu.getHostFromIntArray(); + if (core == null) { + return; + } + + font.draw(stack, NuclearTextUtils.gui("msreactor.status"), titleLabelX, titleLabelY + 14, 0); + + if (!(core.plugCache.getSafe() instanceof TileFreezePlug)) { + font.draw(stack, NuclearTextUtils.gui("msreactor.status.nofreezeplug"), titleLabelX + 5, titleLabelY + 24, 4210752); + } else if (core.wasteIsFull.get()) { + font.draw(stack, NuclearTextUtils.gui("msreactor.status.wastefull"), titleLabelX + 5, titleLabelY + 24, 4210752); + } else { + font.draw(stack, NuclearTextUtils.gui("msreactor.status.good").withStyle(ChatFormatting.GREEN), titleLabelX + 5, titleLabelY + 24, -1); + + } + font.draw(stack, NuclearTextUtils.gui("msreactor.warning"), titleLabelX, titleLabelY + 38, 0); + + if (core.temperature.get() > TileMSReactorCore.MELTDOWN_TEMPERATURE) { + + if (System.currentTimeMillis() % 1000 < 500) { + font.draw(stack, NuclearTextUtils.gui("msreactor.warning.overheat"), titleLabelX + 5, titleLabelY + 48, 16711680); + } else { + font.draw(stack, NuclearTextUtils.gui("msreactor.warning.overheat"), titleLabelX + 5, titleLabelY + 48, 4210752); + } + + } else if (core.plugCache.getSafe() instanceof TileFreezePlug plug && !plug.isFrozen()) { + font.draw(stack, NuclearTextUtils.gui("msreactor.warning.freezeoff").withStyle(ChatFormatting.YELLOW), titleLabelX + 5, titleLabelY + 48, -1); + } else { + font.draw(stack, NuclearTextUtils.gui("msreactor.warning.none").withStyle(ChatFormatting.GREEN), titleLabelX + 5, titleLabelY + 48, -1); + } + + })); + addComponent(new ScreenComponentReactorFuel(140, 20)); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenMoltenSaltSupplier.java b/src/main/java/nuclearscience/client/screen/ScreenMoltenSaltSupplier.java index c218fb0c..1a82a84c 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenMoltenSaltSupplier.java +++ b/src/main/java/nuclearscience/client/screen/ScreenMoltenSaltSupplier.java @@ -1,20 +1,51 @@ package nuclearscience.client.screen; +import com.mojang.blaze3d.vertex.PoseStack; + +import electrodynamics.api.electricity.formatting.ChatFormatter; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.utilities.ElectroTextUtils; +import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; import nuclearscience.common.settings.Constants; +import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; +import nuclearscience.prefab.utils.NuclearTextUtils; @OnlyIn(Dist.CLIENT) public class ScreenMoltenSaltSupplier extends GenericScreen { public ScreenMoltenSaltSupplier(ContainerMoltenSaltSupplier container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2).wattage(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK * 20)); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2).wattage(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK * 20)); + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { + TileMoltenSaltSupplier supplier = menu.getHostFromIntArray(); + if (supplier == null) { + return 0; + } + return supplier.reactorWaste.get() / TileMoltenSaltSupplier.AMT_PER_WASTE; + }, 77, 35) { + @Override + public void renderForeground(PoseStack stack, int xAxis, int yAxis, int guiWidth, int guiHeight) { + if (!isHoveredOrFocused()) { + return; + } + TileMoltenSaltSupplier supplier = menu.getHostFromIntArray(); + if (supplier == null) { + return; + } + displayTooltip(stack, NuclearTextUtils.gui("saltsupplier.wastecont", ElectroTextUtils.ratio(ChatFormatter.formatFluidMilibuckets(supplier.reactorWaste.get()), ChatFormatter.formatFluidMilibuckets(TileMoltenSaltSupplier.AMT_PER_WASTE)).withStyle(ChatFormatting.DARK_GRAY)).withStyle(ChatFormatting.GRAY).getVisualOrderText(), xAxis, yAxis); + + } + }); + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenNuclearBoiler.java b/src/main/java/nuclearscience/client/screen/ScreenNuclearBoiler.java index ae549ab6..28146f44 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenNuclearBoiler.java +++ b/src/main/java/nuclearscience/client/screen/ScreenNuclearBoiler.java @@ -1,75 +1,67 @@ package nuclearscience.client.screen; -import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentFluid; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressTextures; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGauge; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGaugeInput; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.screen.types.GenericMaterialScreen; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.generic.AbstractFluidHandler; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.inventory.container.ContainerNuclearBoiler; import nuclearscience.common.tile.TileNuclearBoiler; @OnlyIn(Dist.CLIENT) -public class ScreenNuclearBoiler extends GenericScreen { +public class ScreenNuclearBoiler extends GenericMaterialScreen { public ScreenNuclearBoiler(ContainerNuclearBoiler container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentProgress(() -> { + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > 0) { - return Math.min(1.0, processor.operatingTicks / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > 0) { + return Math.min(1.0, processor.operatingTicks.get() / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 42, 30)); - components.add(new ScreenComponentProgress(() -> { + }, 42, 30)); + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > processor.requiredTicks / 2.0) { - return Math.min(1.0, (processor.operatingTicks - processor.requiredTicks / 2.0) / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > processor.requiredTicks.get() / 2.0) { + return Math.min(1.0, (processor.operatingTicks.get() - processor.requiredTicks.get() / 2.0) / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 98, 30)); - components.add(new ScreenComponentProgress(() -> 0, this, 42, 50).left()); - components.add(new ScreenComponentFluid(() -> { + }, 98, 30)); + addComponent(new ScreenComponentGeneric(ProgressTextures.ARROW_LEFT_OFF, 42, 50)); + addComponent(new ScreenComponentFluidGaugeInput(() -> { TileNuclearBoiler boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidInputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, true); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getInputTanks()[0]; } return null; - }, this, 21, 18)); - components.add(new ScreenComponentFluid(() -> { + }, 21, 18)); + addComponent(new ScreenComponentFluidGauge(() -> { TileNuclearBoiler boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidOutputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, false); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getOutputTanks()[0]; } return null; - }, this, 127, 18)); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2)); + }, 127, 18)); + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2)); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenParticleInjector.java b/src/main/java/nuclearscience/client/screen/ScreenParticleInjector.java index 2fdd9e6c..9e7b8297 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenParticleInjector.java +++ b/src/main/java/nuclearscience/client/screen/ScreenParticleInjector.java @@ -1,49 +1,49 @@ package nuclearscience.client.screen; -import com.mojang.blaze3d.vertex.PoseStack; - import electrodynamics.api.electricity.formatting.ChatFormatter; import electrodynamics.api.electricity.formatting.DisplayUnit; -import electrodynamics.prefab.screen.GenericCustomScreen; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.screen.GenericScreen; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentSimpleLabel; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.tile.components.type.ComponentProcessor; +import electrodynamics.prefab.utilities.ElectroTextUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import nuclearscience.References; import nuclearscience.common.inventory.container.ContainerParticleInjector; +import nuclearscience.common.settings.Constants; import nuclearscience.common.tile.TileParticleInjector; +import nuclearscience.prefab.screen.component.NuclearArrows; +import nuclearscience.prefab.utils.NuclearTextUtils; @OnlyIn(Dist.CLIENT) -public class ScreenParticleInjector extends GenericCustomScreen { - public static final ResourceLocation SCREEN_BACKGROUND = new ResourceLocation(References.ID + ":textures/gui/particleinjector.png"); +public class ScreenParticleInjector extends GenericScreen { public ScreenParticleInjector(ContainerParticleInjector container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - } - @Override - public ResourceLocation getScreenBackground() { - return SCREEN_BACKGROUND; - } + imageHeight += 10; + inventoryLabelY += 10; + + addComponent(new ScreenComponentGeneric(NuclearArrows.PARTICLE_INJECTOR_ARROWS, 44, 24)); + addComponent(new ScreenComponentSimpleLabel(titleLabelX, titleLabelY + 20, 10, 4210752, NuclearTextUtils.gui("particleinjector.matter"))); + addComponent(new ScreenComponentSimpleLabel(titleLabelX, titleLabelY + 56, 10, 4210752, NuclearTextUtils.gui("particleinjector.cells"))); + addComponent(new ScreenComponentSimpleLabel(titleLabelX, titleLabelY + 38, 10, 4210752, () -> { + TileParticleInjector injector = menu.getHostFromIntArray(); + if (injector == null) { + return ElectroTextUtils.empty(); + } + ComponentElectrodynamic electro = injector.getComponent(IComponentType.Electrodynamic); + return NuclearTextUtils.gui("particleinjector.charge", ChatFormatter.getChatDisplayShort((int) (electro.getJoulesStored() / Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE * 100.0), DisplayUnit.PERCENTAGE)); + })); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2).wattage(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE)); - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - font.draw(matrixStack, title, titleLabelX, titleLabelY, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.particleinjector.matter"), titleLabelX, titleLabelY + 12f, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.particleinjector.cells"), titleLabelX, titleLabelY + 48f, 4210752); - TileParticleInjector injector = menu.getHostFromIntArray(); - if (injector != null) { - ComponentElectrodynamic electro = injector.getComponent(ComponentType.Electrodynamic); - ComponentProcessor processor = injector.getComponent(ComponentType.Processor); - font.draw(matrixStack, new TranslatableComponent("gui.particleinjector.charge", (int) (electro.getJoulesStored() / processor.getUsage() * 100.0)).append("%"), titleLabelX, titleLabelY + 30f, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.usage", ChatFormatter.getChatDisplayShort(processor.getUsage(), DisplayUnit.JOULES)), inventoryLabelX, inventoryLabelY, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.voltage", ChatFormatter.getChatDisplayShort(electro.getVoltage(), DisplayUnit.VOLTAGE)), (float) inventoryLabelX + 85, inventoryLabelY, 4210752); - } + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenQuantumCapacitor.java b/src/main/java/nuclearscience/client/screen/ScreenQuantumCapacitor.java index a98d478c..858c5802 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenQuantumCapacitor.java +++ b/src/main/java/nuclearscience/client/screen/ScreenQuantumCapacitor.java @@ -5,135 +5,111 @@ import electrodynamics.api.electricity.formatting.ChatFormatter; import electrodynamics.api.electricity.formatting.DisplayUnit; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentTextInputBar; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.components.EditBox; +import electrodynamics.prefab.screen.component.editbox.ScreenComponentEditBox; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.utilities.ElectroTextUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import nuclearscience.common.inventory.container.ContainerQuantumCapacitor; -import nuclearscience.common.packet.NetworkHandler; -import nuclearscience.common.packet.PacketSetQuantumCapacitorData; import nuclearscience.common.tile.TileQuantumCapacitor; +import nuclearscience.prefab.utils.NuclearTextUtils; @OnlyIn(Dist.CLIENT) public class ScreenQuantumCapacitor extends GenericScreen { - public ScreenQuantumCapacitor(ContainerQuantumCapacitor container, Inventory playerInventory, Component title) { - super(container, playerInventory, title); - components.add(new ScreenComponentTextInputBar(this, 115, 14)); - components.add(new ScreenComponentTextInputBar(this, 115, 34)); - } - private EditBox outputField; - private EditBox frequencyField; - - @Override - protected void containerTick() { - super.containerTick(); - outputField.tick(); - frequencyField.tick(); - } - - @Override - protected void init() { - super.init(); - initFields(); - } - - protected void initFields() { - minecraft.keyboardHandler.setSendRepeatsToGui(true); - int i = (width - imageWidth) / 2; - int j = (height - imageHeight) / 2; - outputField = new EditBox(font, i + 120, j + 18, 46, 13, new TranslatableComponent("container.quantumcapacitor.joulesoutput")); - outputField.setTextColor(-1); - outputField.setTextColorUneditable(-1); - outputField.setBordered(false); - outputField.setMaxLength(6); - outputField.setResponder(this::updateOutput); - - frequencyField = new EditBox(font, i + 120, j + 18 + 20, 46, 13, new TranslatableComponent("container.quantumcapacitor.frequency")); - frequencyField.setTextColor(-1); - frequencyField.setTextColorUneditable(-1); - frequencyField.setBordered(false); - frequencyField.setMaxLength(6); - frequencyField.setResponder(this::updateFreq); - - addWidget(outputField); - addWidget(frequencyField); - } + private ScreenComponentEditBox outputField; + private ScreenComponentEditBox frequencyField; private boolean needsUpdate = true; - private void updateValues(String coord) { - if (!coord.isEmpty()) { - Double triedOutput = 0.0; - try { - triedOutput = Double.parseDouble(outputField.getValue()); - } catch (Exception e) { - // Not required - } - Integer frequency = 0; - try { - frequency = Integer.parseInt(frequencyField.getValue()); - } catch (Exception e) { - // Not required - } - if (menu.getHostFromIntArray() != null) { - NetworkHandler.CHANNEL.sendToServer(new PacketSetQuantumCapacitorData(menu.getHostFromIntArray().getBlockPos(), triedOutput, frequency)); + public ScreenQuantumCapacitor(ContainerQuantumCapacitor container, Inventory playerInventory, Component title) { + super(container, playerInventory, title); + addEditBox(frequencyField = new ScreenComponentEditBox(115, 14, 46, 13, getFontRenderer()).setTextColor(-1).setTextColorUneditable(-1).setMaxLength(6).setResponder(this::updateFreq).setFilter(ScreenComponentEditBox.INTEGER)); + addEditBox(outputField = new ScreenComponentEditBox(115, 34, 46, 13, getFontRenderer()).setTextColor(-1).setTextColorUneditable(-1).setMaxLength(6).setResponder(this::updateOutput).setFilter(ScreenComponentEditBox.POSITIVE_DECIMAL)); + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + TileQuantumCapacitor box = menu.getHostFromIntArray(); + if (box == null) { + return; } - } + font.draw(stack, NuclearTextUtils.gui("machine.current", ChatFormatter.getChatDisplayShort(box.getOutputJoules() * 20.0 / TileQuantumCapacitor.DEFAULT_VOLTAGE, DisplayUnit.AMPERE)), inventoryLabelX, inventoryLabelY - 55, 4210752); + font.draw(stack, NuclearTextUtils.gui("machine.transfer", ChatFormatter.getChatDisplayShort(box.getOutputJoules() * 20.0, DisplayUnit.WATT)), inventoryLabelX, inventoryLabelY - 42, 4210752); + font.draw(stack, NuclearTextUtils.gui("machine.voltage", ChatFormatter.getChatDisplayShort(TileQuantumCapacitor.DEFAULT_VOLTAGE, DisplayUnit.VOLTAGE)), inventoryLabelX, inventoryLabelY - 29, 4210752); + font.draw(stack, NuclearTextUtils.gui("machine.stored", ElectroTextUtils.ratio(ChatFormatter.getChatDisplayShort(box.storedJoules.get(), DisplayUnit.JOULES), ChatFormatter.getChatDisplayShort(TileQuantumCapacitor.DEFAULT_MAX_JOULES, DisplayUnit.JOULES))), inventoryLabelX, inventoryLabelY - 16, 4210752); + })); } private void updateFreq(String val) { frequencyField.setFocus(true); outputField.setFocus(false); - updateValues(val); + handleFrequency(val); } private void updateOutput(String val) { frequencyField.setFocus(false); outputField.setFocus(true); - updateValues(val); + handleOutput(val); } - @Override - public void resize(Minecraft minecraft, int width, int height) { - String s = outputField.getValue(); - String s1 = frequencyField.getValue(); - init(minecraft, width, height); - outputField.setValue(s); - frequencyField.setValue(s1); + private void handleFrequency(String freq) { + if (freq.isEmpty()) { + return; + } + + Integer frequency = 0; + + try { + frequency = Integer.parseInt(frequencyField.getValue()); + } catch (Exception e) { + // Not required + } + + TileQuantumCapacitor cap = menu.getHostFromIntArray(); + + if (cap == null) { + return; + } + + cap.frequency.set(frequency); + + cap.frequency.updateServer(); + } - @Override - public void removed() { - super.removed(); - minecraft.keyboardHandler.setSendRepeatsToGui(false); + private void handleOutput(String out) { + + if (out.isEmpty()) { + return; + } + + Double output = 0.0; + try { + output = Double.parseDouble(outputField.getValue()); + } catch (Exception e) { + // Not required + } + + TileQuantumCapacitor cap = menu.getHostFromIntArray(); + + if (cap == null) { + return; + } + + cap.outputJoules.set(output); + + cap.outputJoules.updateServer(); + } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) { - super.render(matrixStack, mouseX, mouseY, partialTicks); + public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks) { + super.render(stack, mouseX, mouseY, partialTicks); if (needsUpdate && menu.getHostFromIntArray() != null) { needsUpdate = false; outputField.setValue("" + menu.getHostFromIntArray().outputJoules); frequencyField.setValue("" + menu.getHostFromIntArray().frequency); } - outputField.render(matrixStack, mouseX, mouseY, partialTicks); - frequencyField.render(matrixStack, mouseX, mouseY, partialTicks); } - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - super.renderLabels(matrixStack, mouseX, mouseY); - TileQuantumCapacitor box = menu.getHostFromIntArray(); - if (box != null) { - font.draw(matrixStack, new TranslatableComponent("gui.machine.current", ChatFormatter.getChatDisplayShort(box.getOutputJoules() * 20.0 / TileQuantumCapacitor.DEFAULT_VOLTAGE, DisplayUnit.AMPERE)), inventoryLabelX, (float) inventoryLabelY - 55, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.transfer", ChatFormatter.getChatDisplayShort(box.getOutputJoules() * 20.0, DisplayUnit.WATT)), inventoryLabelX, (float) inventoryLabelY - 42, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.voltage", ChatFormatter.getChatDisplayShort(TileQuantumCapacitor.DEFAULT_VOLTAGE, DisplayUnit.VOLTAGE)), inventoryLabelX, (float) inventoryLabelY - 29, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.stored", ChatFormatter.getChatDisplayShort(box.joulesClient, DisplayUnit.JOULES) + " / " + ChatFormatter.getChatDisplayShort(TileQuantumCapacitor.DEFAULT_MAX_JOULES, DisplayUnit.JOULES)), inventoryLabelX, (float) inventoryLabelY - 16, 4210752); - } - } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenRadioactiveProcessor.java b/src/main/java/nuclearscience/client/screen/ScreenRadioactiveProcessor.java index 79fb5d90..0b835779 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenRadioactiveProcessor.java +++ b/src/main/java/nuclearscience/client/screen/ScreenRadioactiveProcessor.java @@ -1,18 +1,20 @@ package nuclearscience.client.screen; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentFluid; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressTextures; +import electrodynamics.prefab.screen.component.types.gauges.ScreenComponentFluidGaugeInput; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.generic.AbstractFluidHandler; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.capability.templates.FluidTank; import nuclearscience.common.inventory.container.ContainerRadioactiveProcessor; import nuclearscience.common.tile.TileRadioactiveProcessor; @@ -20,40 +22,36 @@ public class ScreenRadioactiveProcessor extends GenericScreen { + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > 0) { - return Math.min(1.0, processor.operatingTicks / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > 0) { + return Math.min(1.0, processor.operatingTicks.get() / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 42, 30)); - components.add(new ScreenComponentProgress(() -> { + }, 42, 30)); + addComponent(new ScreenComponentProgress(ProgressBars.PROGRESS_ARROW_RIGHT, () -> { GenericTile furnace = container.getHostFromIntArray(); if (furnace != null) { - ComponentProcessor processor = furnace.getComponent(ComponentType.Processor); - if (processor.operatingTicks > processor.requiredTicks / 2.0) { - return Math.min(1.0, (processor.operatingTicks - processor.requiredTicks / 2.0) / (processor.requiredTicks / 2.0)); + ComponentProcessor processor = furnace.getComponent(IComponentType.Processor); + if (processor.operatingTicks.get() > processor.requiredTicks.get() / 2.0) { + return Math.min(1.0, (processor.operatingTicks.get() - processor.requiredTicks.get() / 2.0) / (processor.requiredTicks.get() / 2.0)); } } return 0; - }, this, 98, 30)); - components.add(new ScreenComponentProgress(() -> 0, this, 46, 50).left()); - components.add(new ScreenComponentFluid(() -> { + }, 98, 30)); + addComponent(new ScreenComponentGeneric(ProgressTextures.ARROW_LEFT_OFF, 46, 50)); + addComponent(new ScreenComponentFluidGaugeInput(() -> { TileRadioactiveProcessor boiler = container.getHostFromIntArray(); if (boiler != null) { - AbstractFluidHandler handler = boiler.getComponent(ComponentType.FluidHandler); - for (Fluid fluid : handler.getValidInputFluids()) { - FluidTank tank = handler.getTankFromFluid(fluid, true); - if (tank.getFluidAmount() > 0) { - return tank; - } - } + return boiler.getComponent(IComponentType.FluidHandler).getInputTanks()[0]; } return null; - }, this, 21, 18)); - components.add(new ScreenComponentElectricInfo(this, -ScreenComponentInfo.SIZE + 1, 2)); + }, 21, 18)); + addComponent(new ScreenComponentElectricInfo(-AbstractScreenComponentInfo.SIZE + 1, 2)); + + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenRadioisotopeGenerator.java b/src/main/java/nuclearscience/client/screen/ScreenRadioisotopeGenerator.java index 4dfaca52..551d913a 100644 --- a/src/main/java/nuclearscience/client/screen/ScreenRadioisotopeGenerator.java +++ b/src/main/java/nuclearscience/client/screen/ScreenRadioisotopeGenerator.java @@ -3,19 +3,18 @@ import java.util.ArrayList; import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; - import electrodynamics.api.electricity.formatting.ChatFormatter; import electrodynamics.api.electricity.formatting.DisplayUnit; import electrodynamics.prefab.screen.GenericScreen; -import electrodynamics.prefab.screen.component.ScreenComponentElectricInfo; -import electrodynamics.prefab.screen.component.ScreenComponentInfo; -import electrodynamics.prefab.screen.component.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentMultiLabel; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.guitab.ScreenComponentElectricInfo; +import electrodynamics.prefab.screen.component.types.wrapper.InventoryIOWrapper; +import electrodynamics.prefab.screen.component.utils.AbstractScreenComponentInfo; import electrodynamics.prefab.utilities.object.TransferPack; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.FormattedCharSequence; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; @@ -25,13 +24,14 @@ import nuclearscience.api.radiation.RadiationRegister; import nuclearscience.common.inventory.container.ContainerRadioisotopeGenerator; import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; @OnlyIn(Dist.CLIENT) public class ScreenRadioisotopeGenerator extends GenericScreen { public ScreenRadioisotopeGenerator(ContainerRadioisotopeGenerator container, Inventory playerInventory, Component title) { super(container, playerInventory, title); - components.add(new ScreenComponentProgress(() -> { + addComponent(new ScreenComponentProgress(ProgressBars.COUNTDOWN_FLAME, () -> { ItemStack in = container.getSlot(0).getItem(); IRadioactiveObject rad = RadiationRegister.get(in.getItem()); double currentOutput = in.getCount() * Constants.RADIOISOTOPEGENERATOR_OUTPUT_MULTIPLIER * rad.getRadiationStrength(); @@ -39,8 +39,20 @@ public ScreenRadioisotopeGenerator(ContainerRadioisotopeGenerator container, Inv return 1; } return 0; - }, this, 25, 24).flame()); - components.add(new ScreenComponentElectricInfo(this::getEnergyInformation, this, -ScreenComponentInfo.SIZE + 1, 2)); + }, 25, 24)); + addComponent(new ScreenComponentElectricInfo(this::getEnergyInformation, -AbstractScreenComponentInfo.SIZE + 1, 2)); + + addComponent(new ScreenComponentMultiLabel(0, 0, stack -> { + ItemStack in = menu.getSlot(0).getItem(); + IRadioactiveObject rad = RadiationRegister.get(in.getItem()); + double currentOutput = in.getCount() * Constants.RADIOISOTOPEGENERATOR_OUTPUT_MULTIPLIER * rad.getRadiationStrength(); + TransferPack transfer = TransferPack.ampsVoltage(currentOutput / Constants.RADIOISOTOPEGENERATOR_VOLTAGE, Constants.RADIOISOTOPEGENERATOR_VOLTAGE); + font.draw(stack, NuclearTextUtils.gui("machine.current", ChatFormatter.getChatDisplayShort(transfer.getAmps(), DisplayUnit.AMPERE)), inventoryLabelX + 60, inventoryLabelY - 48, 4210752); + font.draw(stack, NuclearTextUtils.gui("machine.output", ChatFormatter.getChatDisplayShort(transfer.getWatts(), DisplayUnit.WATT)), inventoryLabelX + 60, inventoryLabelY - 35, 4210752); + font.draw(stack, NuclearTextUtils.gui("machine.voltage", ChatFormatter.getChatDisplayShort(transfer.getVoltage(), DisplayUnit.VOLTAGE)), inventoryLabelX + 60, inventoryLabelY - 22, 4210752); + })); + + new InventoryIOWrapper(this, -AbstractScreenComponentInfo.SIZE + 1, AbstractScreenComponentInfo.SIZE + 2, 75, 82, 8, 72); } private List getEnergyInformation() { @@ -49,21 +61,10 @@ private List getEnergyInformation() { IRadioactiveObject rad = RadiationRegister.get(in.getItem()); double currentOutput = in.getCount() * Constants.RADIOISOTOPEGENERATOR_OUTPUT_MULTIPLIER * rad.getRadiationStrength(); TransferPack transfer = TransferPack.ampsVoltage(currentOutput / Constants.RADIOISOTOPEGENERATOR_VOLTAGE, Constants.RADIOISOTOPEGENERATOR_VOLTAGE); - list.add(new TranslatableComponent("gui.machine.current", new TextComponent(ChatFormatter.getChatDisplayShort(transfer.getAmps(), DisplayUnit.AMPERE)).withStyle(ChatFormatting.GRAY)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); - list.add(new TranslatableComponent("gui.machine.output", new TextComponent(ChatFormatter.getChatDisplayShort(transfer.getWatts(), DisplayUnit.WATT)).withStyle(ChatFormatting.GRAY)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); - list.add(new TranslatableComponent("gui.machine.voltage", new TextComponent(ChatFormatter.getChatDisplayShort(transfer.getVoltage(), DisplayUnit.VOLTAGE)).withStyle(ChatFormatting.GRAY)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); + list.add(NuclearTextUtils.gui("machine.current", ChatFormatter.getChatDisplayShort(transfer.getAmps(), DisplayUnit.AMPERE)).withStyle(ChatFormatting.GRAY).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); + list.add(NuclearTextUtils.gui("machine.output", ChatFormatter.getChatDisplayShort(transfer.getWatts(), DisplayUnit.WATT).withStyle(ChatFormatting.GRAY)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); + list.add(NuclearTextUtils.gui("machine.voltage", ChatFormatter.getChatDisplayShort(transfer.getVoltage(), DisplayUnit.VOLTAGE).withStyle(ChatFormatting.GRAY)).withStyle(ChatFormatting.DARK_GRAY).getVisualOrderText()); return list; } - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - super.renderLabels(matrixStack, mouseX, mouseY); - ItemStack in = menu.getSlot(0).getItem(); - IRadioactiveObject rad = RadiationRegister.get(in.getItem()); - double currentOutput = in.getCount() * Constants.RADIOISOTOPEGENERATOR_OUTPUT_MULTIPLIER * rad.getRadiationStrength(); - TransferPack transfer = TransferPack.ampsVoltage(currentOutput / Constants.RADIOISOTOPEGENERATOR_VOLTAGE, Constants.RADIOISOTOPEGENERATOR_VOLTAGE); - font.draw(matrixStack, new TranslatableComponent("gui.machine.current", ChatFormatter.getChatDisplayShort(transfer.getAmps(), DisplayUnit.AMPERE)), (float) inventoryLabelX + 60, (float) inventoryLabelY - 48, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.output", ChatFormatter.getChatDisplayShort(transfer.getWatts(), DisplayUnit.WATT)), (float) inventoryLabelX + 60, (float) inventoryLabelY - 35, 4210752); - font.draw(matrixStack, new TranslatableComponent("gui.machine.voltage", ChatFormatter.getChatDisplayShort(transfer.getVoltage(), DisplayUnit.VOLTAGE)), (float) inventoryLabelX + 60, (float) inventoryLabelY - 22, 4210752); - } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/client/screen/ScreenReactorCore.java b/src/main/java/nuclearscience/client/screen/ScreenReactorCore.java deleted file mode 100644 index f1db9e73..00000000 --- a/src/main/java/nuclearscience/client/screen/ScreenReactorCore.java +++ /dev/null @@ -1,41 +0,0 @@ -package nuclearscience.client.screen; - -import com.mojang.blaze3d.vertex.PoseStack; - -import electrodynamics.prefab.screen.GenericCustomScreen; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import nuclearscience.References; -import nuclearscience.common.inventory.container.ContainerReactorCore; -import nuclearscience.common.tile.TileReactorCore; - -@OnlyIn(Dist.CLIENT) -public class ScreenReactorCore extends GenericCustomScreen { - public static final ResourceLocation SCREEN_BACKGROUND = new ResourceLocation(References.ID + ":textures/gui/reactorcore.png"); - - public ScreenReactorCore(ContainerReactorCore container, Inventory playerInventory, Component title) { - super(container, playerInventory, title); - } - - @Override - public ResourceLocation getScreenBackground() { - return SCREEN_BACKGROUND; - } - - @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) { - super.renderLabels(matrixStack, mouseX, mouseY); - font.draw(matrixStack, new TranslatableComponent("gui.reactorcore.deuterium"), titleLabelX, (float) titleLabelY + 14, 4210752); - TileReactorCore core = menu.getHostFromIntArray(); - if (core != null) { - font.draw(matrixStack, new TranslatableComponent("gui.reactorcore.temperature", (int) core.temperature / 4 + 15 + " C"), titleLabelX, (float) titleLabelY + 14 * 3, 4210752); - if (core.temperature > TileReactorCore.MELTDOWN_TEMPERATURE_ACTUAL && System.currentTimeMillis() % 1000 < 500) { - font.draw(matrixStack, new TranslatableComponent("gui.reactorcore.warning"), titleLabelX, (float) titleLabelY + 55, 16711680); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockControlRodAssembly.java b/src/main/java/nuclearscience/common/block/BlockControlRodAssembly.java index b1d1b01c..797b9f1a 100644 --- a/src/main/java/nuclearscience/common/block/BlockControlRodAssembly.java +++ b/src/main/java/nuclearscience/common/block/BlockControlRodAssembly.java @@ -1,17 +1,8 @@ package nuclearscience.common.block; import electrodynamics.prefab.block.GenericMachineBlock; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; import nuclearscience.common.tile.TileControlRodAssembly; public class BlockControlRodAssembly extends GenericMachineBlock { @@ -25,16 +16,4 @@ public RenderShape getRenderShape(BlockState state) { return RenderShape.ENTITYBLOCK_ANIMATED; } - @Override - public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { - BlockEntity tile = worldIn.getBlockEntity(pos); - if (tile instanceof TileControlRodAssembly assembly) { - assembly.insertion = assembly.insertion + 10; - if (assembly.insertion > 100) { - assembly.insertion = 0; - } - assembly.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - } - return super.use(state, worldIn, pos, player, handIn, hit); - } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockElectromagnet.java b/src/main/java/nuclearscience/common/block/BlockElectromagnet.java index a85f8fea..d62bc9cb 100644 --- a/src/main/java/nuclearscience/common/block/BlockElectromagnet.java +++ b/src/main/java/nuclearscience/common/block/BlockElectromagnet.java @@ -1,18 +1,13 @@ package nuclearscience.common.block; -import java.util.Arrays; -import java.util.List; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext.Builder; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -25,13 +20,8 @@ public class BlockElectromagnet extends Block implements IElectromagnet { private final boolean isGlass; - @Override - public List getDrops(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack(this)); - } - public BlockElectromagnet(boolean isGlass) { - super(Properties.of(isGlass ? Material.GLASS : Material.METAL).strength(3.5f, 20).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((x, y, z) -> false)); + super(Properties.copy(isGlass ? Blocks.GLASS : Blocks.IRON_BLOCK).strength(3.5f, 20).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((x, y, z) -> false)); this.isGlass = isGlass; } @@ -56,4 +46,4 @@ public float getShadeBrightness(BlockState state, BlockGetter worldIn, BlockPos public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) { return isGlass || super.propagatesSkylightDown(state, reader, pos); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockElectromagneticBooster.java b/src/main/java/nuclearscience/common/block/BlockElectromagneticBooster.java index 3e0afd1a..d64b6f41 100644 --- a/src/main/java/nuclearscience/common/block/BlockElectromagneticBooster.java +++ b/src/main/java/nuclearscience/common/block/BlockElectromagneticBooster.java @@ -1,8 +1,5 @@ package nuclearscience.common.block; -import java.util.Arrays; -import java.util.List; - import electrodynamics.prefab.block.GenericEntityBlock; import electrodynamics.prefab.tile.IWrenchable; import net.minecraft.core.BlockPos; @@ -13,12 +10,11 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext.Builder; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -32,15 +28,10 @@ public class BlockElectromagneticBooster extends Block implements IElectromagnet public static final FacingDirectionProperty FACINGDIRECTION = FacingDirectionProperty.create("side", FacingDirection.values()); public BlockElectromagneticBooster() { - super(Properties.of(Material.GLASS).strength(3.5f, 20).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((x, y, z) -> false)); + super(Properties.copy(Blocks.GLASS).strength(3.5f, 20).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((x, y, z) -> false)); registerDefaultState(stateDefinition.any().setValue(GenericEntityBlock.FACING, Direction.NORTH).setValue(FACINGDIRECTION, FacingDirection.NONE)); } - @Override - public List getDrops(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack(this)); - } - @Override public BlockState rotate(BlockState state, Rotation rot) { return state.setValue(GenericEntityBlock.FACING, rot.rotate(state.getValue(GenericEntityBlock.FACING))); @@ -76,12 +67,12 @@ protected void createBlockStateDefinition(StateDefinition.Builder false)); + super(Properties.copy(Blocks.IRON_BLOCK).strength(3.5f, 20).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((p1, p2, p3) -> false)); } @Override @@ -29,4 +29,4 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new TileElectromagneticSwitch(pos, state); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockReactorCore.java b/src/main/java/nuclearscience/common/block/BlockFissionReactorCore.java similarity index 71% rename from src/main/java/nuclearscience/common/block/BlockReactorCore.java rename to src/main/java/nuclearscience/common/block/BlockFissionReactorCore.java index 1961330d..efbb692e 100644 --- a/src/main/java/nuclearscience/common/block/BlockReactorCore.java +++ b/src/main/java/nuclearscience/common/block/BlockFissionReactorCore.java @@ -7,11 +7,11 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.common.tile.TileReactorCore; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; -public class BlockReactorCore extends GenericMachineBlock { - public BlockReactorCore() { - super(TileReactorCore::new); +public class BlockFissionReactorCore extends GenericMachineBlock { + public BlockFissionReactorCore() { + super(TileFissionReactorCore::new); } @Override @@ -26,8 +26,8 @@ public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState n @Override public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { BlockEntity core = world.getBlockEntity(pos); - if (core instanceof TileReactorCore rc) { - return (int) Math.max(0, Math.min(rc.temperature / TileReactorCore.MELTDOWN_TEMPERATURE_ACTUAL * 15, 15)); + if (core instanceof TileFissionReactorCore rc) { + return (int) Math.max(0, Math.min(rc.temperature.get() / TileFissionReactorCore.MELTDOWN_TEMPERATURE_ACTUAL * 15, 15)); } return 0; } @@ -35,10 +35,10 @@ public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { @Override public void onBlockExploded(BlockState state, Level world, BlockPos pos, Explosion explosion) { BlockEntity core = world.getBlockEntity(pos); - if (core instanceof TileReactorCore rc) { + if (core instanceof TileFissionReactorCore rc) { rc.meltdown(); } super.onBlockExploded(state, world, pos, explosion); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockFuelReprocessor.java b/src/main/java/nuclearscience/common/block/BlockFuelReprocessor.java index 35753cf6..d3344028 100644 --- a/src/main/java/nuclearscience/common/block/BlockFuelReprocessor.java +++ b/src/main/java/nuclearscience/common/block/BlockFuelReprocessor.java @@ -1,19 +1,42 @@ package nuclearscience.common.block; +import electrodynamics.common.block.BlockMachine; import electrodynamics.prefab.block.GenericMachineBlock; -import net.minecraft.world.level.block.RenderShape; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; import nuclearscience.common.tile.TileFuelReprocessor; + public class BlockFuelReprocessor extends GenericMachineBlock { public BlockFuelReprocessor() { super(TileFuelReprocessor::new); + registerDefaultState(stateDefinition.any().setValue(BlockMachine.ON, false)); } @Override - public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + public BlockState getStateForPlacement(BlockPlaceContext context) { + return super.getStateForPlacement(context).setValue(BlockMachine.ON, false); + } + + @Override + protected void createBlockStateDefinition(Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(BlockMachine.ON); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { + + if (state.hasProperty(BlockMachine.ON) && state.getValue(BlockMachine.ON)) { + return 15; + } + + return super.getLightEmission(state, world, pos); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockFusionReactorCore.java b/src/main/java/nuclearscience/common/block/BlockFusionReactorCore.java index 480d59ee..b6b838c6 100644 --- a/src/main/java/nuclearscience/common/block/BlockFusionReactorCore.java +++ b/src/main/java/nuclearscience/common/block/BlockFusionReactorCore.java @@ -2,20 +2,14 @@ import electrodynamics.prefab.block.GenericMachineBlock; import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.settings.Constants; -import nuclearscience.common.tile.TileFusionReactorCore; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import nuclearscience.common.tile.fusionreactor.TileFusionReactorCore; public class BlockFusionReactorCore extends GenericMachineBlock { @@ -29,26 +23,18 @@ public RenderShape getRenderShape(BlockState state) { } @Override - public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { - if (!worldIn.isClientSide) { - ItemStack inHand = player.getItemBySlot(handIn == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); - Item itemInHand = inHand.getItem(); - if (itemInHand == DeferredRegisters.ITEM_CELLDEUTERIUM.get() || itemInHand == DeferredRegisters.ITEM_CELLTRITIUM.get()) { - BlockEntity tile = worldIn.getBlockEntity(pos); - if (tile instanceof TileFusionReactorCore core) { - boolean tritium = itemInHand == DeferredRegisters.ITEM_CELLTRITIUM.get(); - int type = tritium ? core.tritium : core.deuterium; - int added = Math.min(inHand.getCount(), Constants.FUSIONREACTOR_MAXSTORAGE - type); - inHand.setCount(inHand.getCount() - added); - if (tritium) { - core.tritium += added; - } else { - core.deuterium += added; - } - } - return InteractionResult.CONSUME; - } - } - return super.use(state, worldIn, pos, player, handIn, hit); + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + VoxelShape reactor = Block.box(6, 0, 6, 10, 16, 10); + + reactor = Shapes.or(reactor, Block.box(5, 1, 5, 11, 15, 11)); + + reactor = Shapes.or(reactor, Block.box(4, 2, 4, 12, 14, 12)); + + reactor = Shapes.or(reactor, Block.box(3, 4, 3, 13, 12, 13)); + + reactor = Shapes.or(reactor, Block.box(2, 6, 2, 14, 10, 14)); + + return reactor; } -} + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockMSRFuelPreprocessor.java b/src/main/java/nuclearscience/common/block/BlockMSRFuelPreprocessor.java new file mode 100644 index 00000000..6752a70a --- /dev/null +++ b/src/main/java/nuclearscience/common/block/BlockMSRFuelPreprocessor.java @@ -0,0 +1,24 @@ +package nuclearscience.common.block; + +import electrodynamics.prefab.block.GenericMachineBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType.BlockEntitySupplier; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BlockMSRFuelPreprocessor extends GenericMachineBlock { + + public BlockMSRFuelPreprocessor(BlockEntitySupplier blockEntitySupplier) { + super(blockEntitySupplier); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Block.box(0, 0, 0, 16, 13, 16); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockMeltedReactor.java b/src/main/java/nuclearscience/common/block/BlockMeltedReactor.java index eaa21c33..a28a91b5 100644 --- a/src/main/java/nuclearscience/common/block/BlockMeltedReactor.java +++ b/src/main/java/nuclearscience/common/block/BlockMeltedReactor.java @@ -2,20 +2,20 @@ import electrodynamics.prefab.block.GenericEntityBlockWaterloggable; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import nuclearscience.common.tile.TileMeltedReactor; +import nuclearscience.common.tile.fissionreactor.TileMeltedReactor; public class BlockMeltedReactor extends GenericEntityBlockWaterloggable { public BlockMeltedReactor() { - super(Properties.of(Material.METAL).strength(250.0f, 999.0f).sound(SoundType.METAL).requiresCorrectToolForDrops().noOcclusion()); + super(Properties.copy(Blocks.IRON_BLOCK).strength(250.0f, 999.0f).sound(SoundType.METAL).requiresCorrectToolForDrops().noOcclusion()); } @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new TileMeltedReactor(pos, state); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockMoltenSaltSupplier.java b/src/main/java/nuclearscience/common/block/BlockMoltenSaltSupplier.java index dc58da71..908ab0ef 100644 --- a/src/main/java/nuclearscience/common/block/BlockMoltenSaltSupplier.java +++ b/src/main/java/nuclearscience/common/block/BlockMoltenSaltSupplier.java @@ -1,19 +1,41 @@ package nuclearscience.common.block; +import electrodynamics.common.block.BlockMachine; import electrodynamics.prefab.block.GenericMachineBlock; -import net.minecraft.world.level.block.RenderShape; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.common.tile.TileMoltenSaltSupplier; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; public class BlockMoltenSaltSupplier extends GenericMachineBlock { public BlockMoltenSaltSupplier() { super(TileMoltenSaltSupplier::new); + registerDefaultState(stateDefinition.any().setValue(BlockMachine.ON, false)); } @Override - public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + public BlockState getStateForPlacement(BlockPlaceContext context) { + return super.getStateForPlacement(context).setValue(BlockMachine.ON, false); } -} + @Override + protected void createBlockStateDefinition(Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(BlockMachine.ON); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { + + if (state.hasProperty(BlockMachine.ON) && state.getValue(BlockMachine.ON)) { + return 15; + } + + return super.getLightEmission(state, world, pos); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockPlasma.java b/src/main/java/nuclearscience/common/block/BlockPlasma.java index f382b248..a9fe60aa 100644 --- a/src/main/java/nuclearscience/common/block/BlockPlasma.java +++ b/src/main/java/nuclearscience/common/block/BlockPlasma.java @@ -6,23 +6,22 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import nuclearscience.api.plasma.DamageSourcePlasma; -import nuclearscience.common.tile.TilePlasma; +import nuclearscience.common.tile.fusionreactor.TilePlasma; public class BlockPlasma extends GenericEntityBlock { public BlockPlasma() { - super(BlockBehaviour.Properties.of(Material.PORTAL).noCollission().randomTicks().strength(-1.0F).sound(SoundType.GLASS)); + super(Properties.copy(Blocks.NETHER_PORTAL).noCollission().randomTicks().strength(-1.0F).sound(SoundType.GLASS)); } @Override @@ -57,4 +56,4 @@ public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState n super.onRemove(state, worldIn, pos, newState, isMoving); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockQuantumCapacitor.java b/src/main/java/nuclearscience/common/block/BlockQuantumCapacitor.java index 587fbab4..c70e4b05 100644 --- a/src/main/java/nuclearscience/common/block/BlockQuantumCapacitor.java +++ b/src/main/java/nuclearscience/common/block/BlockQuantumCapacitor.java @@ -33,8 +33,8 @@ public List getDrops(BlockState state, Builder builder) { } } if (tile instanceof TileQuantumCapacitor cap) { - addstack.getOrCreateTag().putInt("frequency", cap.frequency); - addstack.getOrCreateTag().putUUID("uuid", cap.uuid); + addstack.getOrCreateTag().putInt("frequency", cap.frequency.get()); + addstack.getOrCreateTag().putUUID("uuid", cap.uuid.get()); } return Arrays.asList(addstack); } @@ -43,14 +43,14 @@ public List getDrops(BlockState state, Builder builder) { public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { BlockEntity tile = worldIn.getBlockEntity(pos); if (tile instanceof TileQuantumCapacitor cap) { - cap.frequency = stack.getOrCreateTag().getInt("frequency"); + cap.frequency.set(stack.getOrCreateTag().getInt("frequency")); if (stack.getOrCreateTag().contains("uuid")) { - cap.uuid = stack.getOrCreateTag().getUUID("uuid"); + cap.uuid.set(stack.getOrCreateTag().getUUID("uuid")); } else if (placer instanceof Player pl) { - cap.uuid = pl.getGameProfile().getId(); + cap.uuid.set(pl.getGameProfile().getId()); } } else { super.setPlacedBy(worldIn, pos, state, placer, stack); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockRadioactiveAir.java b/src/main/java/nuclearscience/common/block/BlockRadioactiveAir.java index 731668fa..e77c9f93 100644 --- a/src/main/java/nuclearscience/common/block/BlockRadioactiveAir.java +++ b/src/main/java/nuclearscience/common/block/BlockRadioactiveAir.java @@ -1,12 +1,15 @@ package nuclearscience.common.block; +import java.util.Random; + import electrodynamics.prefab.utilities.object.Location; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.AirBlock; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import nuclearscience.References; @@ -16,7 +19,7 @@ public class BlockRadioactiveAir extends AirBlock { public BlockRadioactiveAir() { - super(Properties.of(Material.AIR).noCollission().noDrops().air()); + super(Properties.copy(Blocks.AIR).noCollission().air()); } @Override @@ -26,4 +29,12 @@ public void entityInside(BlockState state, Level lvl, BlockPos pos, Entity entit } } + @Override + public void randomTick(BlockState state, ServerLevel level, BlockPos pos, Random random) { + super.randomTick(state, level, pos, random); + if (random.nextFloat() < 0.01F) { + level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + } + } + } \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockRadioactiveProcessor.java b/src/main/java/nuclearscience/common/block/BlockRadioactiveProcessor.java index 481bda22..75f5d0aa 100644 --- a/src/main/java/nuclearscience/common/block/BlockRadioactiveProcessor.java +++ b/src/main/java/nuclearscience/common/block/BlockRadioactiveProcessor.java @@ -1,19 +1,41 @@ package nuclearscience.common.block; +import electrodynamics.common.block.BlockMachine; import electrodynamics.prefab.block.GenericMachineBlock; -import net.minecraft.world.level.block.RenderShape; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; import nuclearscience.common.tile.TileRadioactiveProcessor; public class BlockRadioactiveProcessor extends GenericMachineBlock { public BlockRadioactiveProcessor() { super(TileRadioactiveProcessor::new); + registerDefaultState(stateDefinition.any().setValue(BlockMachine.ON, false)); } @Override - public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + public BlockState getStateForPlacement(BlockPlaceContext context) { + return super.getStateForPlacement(context).setValue(BlockMachine.ON, false); } -} + @Override + protected void createBlockStateDefinition(Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(BlockMachine.ON); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { + + if (state.hasProperty(BlockMachine.ON) && state.getValue(BlockMachine.ON)) { + return 15; + } + + return super.getLightEmission(state, world, pos); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockRadioactiveSoil.java b/src/main/java/nuclearscience/common/block/BlockRadioactiveSoil.java index 59912d4f..294ad321 100644 --- a/src/main/java/nuclearscience/common/block/BlockRadioactiveSoil.java +++ b/src/main/java/nuclearscience/common/block/BlockRadioactiveSoil.java @@ -24,4 +24,4 @@ public void stepOn(Level lvl, BlockPos pos, BlockState state, Entity entityIn) { RadiationSystem.emitRadiationFromLocation(lvl, new Location(pos), 3, 300); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockTeleporter.java b/src/main/java/nuclearscience/common/block/BlockTeleporter.java index 3df2e431..20cd2442 100644 --- a/src/main/java/nuclearscience/common/block/BlockTeleporter.java +++ b/src/main/java/nuclearscience/common/block/BlockTeleporter.java @@ -1,18 +1,40 @@ package nuclearscience.common.block; +import electrodynamics.common.block.BlockMachine; import electrodynamics.prefab.block.GenericMachineBlock; -import net.minecraft.world.level.block.RenderShape; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; import nuclearscience.common.tile.TileTeleporter; public class BlockTeleporter extends GenericMachineBlock { public BlockTeleporter() { super(TileTeleporter::new); + registerDefaultState(stateDefinition.any().setValue(BlockMachine.ON, false)); } @Override - public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + public BlockState getStateForPlacement(BlockPlaceContext context) { + return super.getStateForPlacement(context).setValue(BlockMachine.ON, false); } -} + @Override + protected void createBlockStateDefinition(Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(BlockMachine.ON); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) { + + if (state.hasProperty(BlockMachine.ON) && state.getValue(BlockMachine.ON)) { + return 15; + } + + return super.getLightEmission(state, world, pos); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/BlockTurbine.java b/src/main/java/nuclearscience/common/block/BlockTurbine.java index c4a827d0..6e8ba23c 100644 --- a/src/main/java/nuclearscience/common/block/BlockTurbine.java +++ b/src/main/java/nuclearscience/common/block/BlockTurbine.java @@ -1,31 +1,32 @@ package nuclearscience.common.block; -import electrodynamics.api.IWrenchItem; import electrodynamics.prefab.block.GenericEntityBlockWaterloggable; import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; import nuclearscience.common.tile.TileTurbine; public class BlockTurbine extends GenericEntityBlockWaterloggable { + + private static final VoxelShape SHAPE = Shapes.or(Block.box(1.25, 2.5, 6, 14.75, 13.5, 10), Block.box(6, 2.5, 1.25, 10, 13.5, 14.75), Block.box(2, 2.5, 4, 14, 13.5, 12), Block.box(4, 2.5, 2, 12, 13.5, 14), Block.box(3, 2.5, 3, 13, 13.5, 13), Block.box(4.65, 0.75, 4.65, 11.35, 2.5, 11.35), Block.box(4.3, 13.5, 4.3, 11.7, 15, 11.7), Block.box(5.7, 15, 5.7, 10.3, 16, 10.3)); + public static final BooleanProperty RENDER = BooleanProperty.create("render"); public BlockTurbine() { - super(Properties.of(Material.METAL).strength(3.5F).sound(SoundType.METAL).requiresCorrectToolForDrops().noOcclusion()); + super(Properties.copy(Blocks.IRON_BLOCK).strength(3.5F).sound(SoundType.METAL).requiresCorrectToolForDrops().noOcclusion()); registerDefaultState(stateDefinition.any().setValue(RENDER, true)); } @@ -36,9 +37,13 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { @Override public void onRotate(ItemStack stack, BlockPos pos, Player player) { - TileTurbine turbine = (TileTurbine) player.level.getBlockEntity(pos); + super.onRotate(stack, pos, player); + if (player.getLevel().isClientSide()) { + return; + } + TileTurbine turbine = (TileTurbine) player.getLevel().getBlockEntity(pos); if (turbine != null) { - if (turbine.isCore) { + if (turbine.isCore.get()) { turbine.deconstructStructure(); } else { turbine.constructStructure(); @@ -46,21 +51,9 @@ public void onRotate(ItemStack stack, BlockPos pos, Player player) { } } - @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - TileTurbine turbine = (TileTurbine) worldIn.getBlockEntity(pos); - if (turbine != null) { - turbine.deconstructStructure(); - } - super.onRemove(state, worldIn, pos, newState, isMoving); - } - } - @Override public RenderShape getRenderShape(BlockState state) { - super.getRenderShape(state); - if (state.getValue(RENDER) != Boolean.TRUE) { + if (!state.getValue(RENDER)) { return RenderShape.INVISIBLE; } return super.getRenderShape(state); @@ -71,16 +64,6 @@ public float getShadeBrightness(BlockState state, BlockGetter worldIn, BlockPos return 1; } - @Override - public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit) { - if (worldIn.isClientSide) { - return InteractionResult.SUCCESS; - } else if (!(player.getItemInHand(handIn).getItem() instanceof IWrenchItem)) { - return InteractionResult.CONSUME; - } - return InteractionResult.FAIL; - } - @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return super.getStateForPlacement(context).setValue(RENDER, true); @@ -91,4 +74,13 @@ protected void createBlockStateDefinition(StateDefinition.Builder> FACING_TO_PROPERTY_MAP = Util.make(Maps.newEnumMap(Direction.class), p -> { - p.put(Direction.NORTH, EnumConnectType.NORTH); - p.put(Direction.EAST, EnumConnectType.EAST); - p.put(Direction.SOUTH, EnumConnectType.SOUTH); - p.put(Direction.WEST, EnumConnectType.WEST); - p.put(Direction.UP, EnumConnectType.UP); - p.put(Direction.DOWN, EnumConnectType.DOWN); - }); +public class BlockMoltenSaltPipe extends AbstractRefreshingConnectBlock { public static final HashSet PIPESET = new HashSet<>(); - protected final VoxelShape cube; - protected final VoxelShape cubeup; - protected final VoxelShape cubedown; - protected final VoxelShape cubenorth; - protected final VoxelShape cubesouth; - protected final VoxelShape cubewest; - protected final VoxelShape cubeeast; - - protected HashMap, VoxelShape> shapestates = new HashMap<>(); - protected boolean locked = false; - public final SubtypeMoltenSaltPipe pipe; public BlockMoltenSaltPipe(SubtypeMoltenSaltPipe pipe) { - super(Properties.of(Material.METAL).sound(SoundType.METAL).strength(0.15f).dynamicShape()); + super(Properties.copy(Blocks.IRON_BLOCK).sound(SoundType.METAL).strength(0.15f).dynamicShape(), 3); this.pipe = pipe; - double w = 3; - double sm = 8 - w; - double lg = 8 + w; - cube = Block.box(sm, sm, sm, lg, lg, lg); - cubeup = Block.box(sm, sm, sm, lg, 16, lg); - cubedown = Block.box(sm, 0, sm, lg, lg, lg); - cubenorth = Block.box(sm, sm, 0, lg, lg, lg); - cubesouth = Block.box(sm, sm, sm, lg, lg, 16); - cubewest = Block.box(0, sm, sm, lg, lg, lg); - cubeeast = Block.box(sm, sm, sm, 16, lg, lg); PIPESET.add(this); } - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - super.createBlockStateDefinition(builder); - builder.add(EnumConnectType.UP, EnumConnectType.DOWN, EnumConnectType.NORTH, EnumConnectType.EAST, EnumConnectType.SOUTH, EnumConnectType.WEST); - } - @Override public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) { return true; } @Override - public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { - VoxelShape shape = cube; - HashSet checked = new HashSet<>(); - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.UP))) { - checked.add(Direction.UP); - } - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.DOWN))) { - checked.add(Direction.DOWN); - } - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.WEST))) { - checked.add(Direction.WEST); - } - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.EAST))) { - checked.add(Direction.EAST); - } - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.NORTH))) { - checked.add(Direction.NORTH); - } - if (!EnumConnectType.NONE.equals(state.getValue(EnumConnectType.SOUTH))) { - checked.add(Direction.SOUTH); - } - locked = true; - if (shapestates.containsKey(checked)) { - locked = false; - return shapestates.get(checked); - } - locked = false; - for (Direction dir : checked) { - switch (dir) { - case DOWN: - shape = Shapes.join(shape, cubedown, BooleanOp.OR); - break; - case EAST: - shape = Shapes.join(shape, cubeeast, BooleanOp.OR); - break; - case NORTH: - shape = Shapes.join(shape, cubenorth, BooleanOp.OR); - break; - case SOUTH: - shape = Shapes.join(shape, cubesouth, BooleanOp.OR); - break; - case UP: - shape = Shapes.join(shape, cubeup, BooleanOp.OR); - break; - case WEST: - shape = Shapes.join(shape, cubewest, BooleanOp.OR); - break; - default: - break; - } - } - while (locked) { - System.out.println("Wire bounding boxes locked. This should never happen!"); - } - shapestates.put(checked, shape); - if (shape == null) { - return Shapes.empty(); - } - return shape; - } - - @Override - public void setPlacedBy(Level worldIn, BlockPos pos, BlockState stateIn, @Nullable LivingEntity placer, ItemStack stack) { - BlockState acc = stateIn; - for (Direction d : Direction.values()) { - BlockEntity facingTile = worldIn.getBlockEntity(pos.relative(d)); - if (facingTile instanceof IMoltenSaltPipe) { - acc = acc.setValue(FACING_TO_PROPERTY_MAP.get(d), EnumConnectType.WIRE); - } else if (facingTile instanceof TileMSRReactorCore && d.getOpposite() == Direction.UP || facingTile instanceof TileHeatExchanger && d.getOpposite() == Direction.DOWN) { - acc = acc.setValue(FACING_TO_PROPERTY_MAP.get(d), EnumConnectType.INVENTORY); - } - } - worldIn.setBlockAndUpdate(pos, acc); + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new TileMoltenSaltPipe(pos, state); } @Override - public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onPlace(state, worldIn, pos, oldState, isMoving); - if (!worldIn.isClientSide) { - BlockEntity tile = worldIn.getBlockEntity(pos); - if (tile instanceof IMoltenSaltPipe s) { - s.refreshNetwork(); - } + public IRefreshableCable getCableIfValid(BlockEntity tile) { + if (tile instanceof IMoltenSaltPipe pipe) { + return pipe; } + return null; } @Override - public void onNeighborChange(BlockState state, LevelReader world, BlockPos pos, BlockPos neighbor) { - super.onNeighborChange(state, world, pos, neighbor); - if (!world.isClientSide()) { - BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IMoltenSaltPipe s) { - s.refreshNetworkIfChange(); - } + public BlockState refreshConnections(BlockState otherState, BlockEntity tile, BlockState state, Direction dir) { + EnumProperty property = FACING_TO_PROPERTY_MAP.get(dir); + if (tile instanceof IMoltenSaltPipe) { + return state.setValue(property, EnumConnectType.WIRE); } - } - - @Override - public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor world, BlockPos currentPos, BlockPos facingPos) { - if (stateIn.getValue(BlockStateProperties.WATERLOGGED) == Boolean.TRUE) { - world.scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + if (tile instanceof TileMSReactorCore && dir.getOpposite() == Direction.UP || tile instanceof TileHeatExchanger && dir.getOpposite() == Direction.DOWN) { + return state.setValue(property, EnumConnectType.INVENTORY); } - EnumProperty property = FACING_TO_PROPERTY_MAP.get(facing); - BlockEntity tile = world.getBlockEntity(facingPos); - if (tile instanceof IMoltenSaltPipe) { - return stateIn.setValue(property, EnumConnectType.WIRE); - } else if (tile instanceof TileMSRReactorCore && facing.getOpposite() == Direction.UP || tile instanceof TileHeatExchanger && facing.getOpposite() == Direction.DOWN) { - return stateIn.setValue(property, EnumConnectType.INVENTORY); - } else { - return stateIn.setValue(property, EnumConnectType.NONE); + if (state.hasProperty(property)) { + return state.setValue(property, EnumConnectType.NONE); } + return state; } - @Override - public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new TileMoltenSaltPipe(pos, state); - } - -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/facing/FacingDirection.java b/src/main/java/nuclearscience/common/block/facing/FacingDirection.java index 781f2251..2b5bee91 100644 --- a/src/main/java/nuclearscience/common/block/facing/FacingDirection.java +++ b/src/main/java/nuclearscience/common/block/facing/FacingDirection.java @@ -1,5 +1,7 @@ package nuclearscience.common.block.facing; +import java.util.Locale; + import net.minecraft.util.StringRepresentable; public enum FacingDirection implements StringRepresentable { @@ -9,6 +11,6 @@ public enum FacingDirection implements StringRepresentable { @Override public String getSerializedName() { - return name().toLowerCase(); + return name().toLowerCase(Locale.ROOT); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/facing/FacingDirectionProperty.java b/src/main/java/nuclearscience/common/block/facing/FacingDirectionProperty.java index 6750ad05..dd155d19 100644 --- a/src/main/java/nuclearscience/common/block/facing/FacingDirectionProperty.java +++ b/src/main/java/nuclearscience/common/block/facing/FacingDirectionProperty.java @@ -25,4 +25,4 @@ public static FacingDirectionProperty create(String p_196962_0_, FacingDirection public static FacingDirectionProperty create(String name, Collection values) { return new FacingDirectionProperty(name, values); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/subtype/SubtypeMoltenSaltPipe.java b/src/main/java/nuclearscience/common/block/subtype/SubtypeMoltenSaltPipe.java index 434be429..52320659 100644 --- a/src/main/java/nuclearscience/common/block/subtype/SubtypeMoltenSaltPipe.java +++ b/src/main/java/nuclearscience/common/block/subtype/SubtypeMoltenSaltPipe.java @@ -25,4 +25,4 @@ public String forgeTag() { public boolean isItem() { return false; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/block/voxelshapes/NuclearScienceVoxelShapeRegistry.java b/src/main/java/nuclearscience/common/block/voxelshapes/NuclearScienceVoxelShapeRegistry.java new file mode 100644 index 00000000..c73dc98f --- /dev/null +++ b/src/main/java/nuclearscience/common/block/voxelshapes/NuclearScienceVoxelShapeRegistry.java @@ -0,0 +1,597 @@ +package nuclearscience.common.block.voxelshapes; + +import java.util.stream.Stream; + +import electrodynamics.common.block.voxelshapes.VoxelShapes; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import nuclearscience.registers.NuclearScienceBlocks; + +public class NuclearScienceVoxelShapeRegistry { + + /** + * By convention this will be in alphabetical order + */ + public static void init() { + + /* CHEMICAL EXTRACTOR */ + + VoxelShape chemicalextractor = Block.box(0, 0, 0, 16, 2, 16); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(5, 2, 0, 11, 14, 16)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 3, 2.5, 5, 4, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 3, 5.5, 5, 4, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 3, 8.5, 5, 4, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 3, 11.5, 5, 4, 13.5)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2.5, 4, 3, 3.5, 4.75, 4)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2.5, 4, 6, 3.5, 4.75, 7)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2.5, 4, 9, 3.5, 4.75, 10)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2.5, 4, 12, 3.5, 4.75, 13)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 4.75, 2.25, 5, 6, 4.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 4.75, 5.25, 5, 6, 7.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 4.75, 8.25, 5, 6, 10.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 4.75, 11.25, 5, 6, 13.75)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 6, 2.5, 4, 11.75, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 6, 5.5, 4, 11.75, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 6, 8.5, 4, 11.75, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(2, 6, 11.5, 4, 11.75, 13.5)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 11.75, 2.25, 5, 13, 4.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 11.75, 5.25, 5, 13, 7.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 11.75, 8.25, 5, 13, 10.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(1.75, 11.75, 11.25, 5, 13, 13.75)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(3.5, 13, 2.5, 5, 14, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(3.5, 13, 5.5, 5, 14, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(3.5, 13, 8.5, 5, 14, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(3.5, 13, 11.5, 5, 14, 13.5)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 3, 2.5, 14, 4, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 3, 5.5, 14, 4, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 3, 8.5, 14, 4, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 3, 11.5, 14, 4, 13.5)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12.5, 4, 3, 13.5, 4.75, 4)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12.5, 4, 6, 13.5, 4.75, 7)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12.5, 4, 9, 13.5, 4.75, 10)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12.5, 4, 12, 13.5, 4.75, 13)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 4.75, 2.25, 14.25, 6, 4.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 4.75, 5.25, 14.25, 6, 7.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 4.75, 8.25, 14.25, 6, 10.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 4.75, 11.25, 14.25, 6, 13.75)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12, 6, 2.5, 14, 11.75, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12, 6, 5.5, 14, 11.75, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12, 6, 8.5, 14, 11.75, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(12, 6, 11.5, 14, 11.75, 13.5)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 11.75, 2.25, 14.25, 13, 4.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 11.75, 5.25, 14.25, 13, 7.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 11.75, 8.25, 14.25, 13, 10.75)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 11.75, 11.25, 14.25, 13, 13.75)); + + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 13, 2.5, 12.5, 14, 4.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 13, 5.5, 12.5, 14, 7.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 13, 8.5, 12.5, 14, 10.5)); + chemicalextractor = Shapes.or(chemicalextractor, Block.box(11, 13, 11.5, 12.5, 14, 13.5)); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockChemicalExtractor, chemicalextractor, Direction.EAST); + + /* FISSION REACTOR CORE */ + + VoxelShape fissionreactorcore = Shapes.empty(); + + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.40625, 0.115675, 0.40625, 0.59375, 0.7088875, 0.59375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.06565, 0.125, 0.75, 0.1148875, 0.1875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.84375, 0.7878, 0.25, 0.90625, 0.8370375, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.8125, 0.06565, 0.25, 0.875, 0.1148875, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.0625, 0.72215, 0.125, 0.125, 0.7878, 0.875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.1875, 0.06565, 0.875, 0.25, 0.72215, 0.9375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.1875, 0.06565, 0.0625, 0.25, 0.72215, 0.125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.06565, 0.25, 0.3125, 0.72215, 0.3125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.06565, 0.6875, 0.3125, 0.72215, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.6875, 0.06565, 0.25, 0.75, 0.72215, 0.3125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.6875, 0.06565, 0.6875, 0.75, 0.72215, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.75, 0.06565, 0.875, 0.8125, 0.72215, 0.9375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.75, 0.06565, 0.0625, 0.8125, 0.72215, 0.125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.0625, 0.06565, 0.75, 0.125, 0.72215, 0.8125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.0625, 0.06565, 0.1875, 0.125, 0.72215, 0.25), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.875, 0.06565, 0.75, 0.9375, 0.72215, 0.8125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.875, 0.06565, 0.1875, 0.9375, 0.72215, 0.25), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.0625, 0, 0.125, 0.125, 0.06565, 0.875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.09375, 0.7878, 0.25, 0.15625, 0.8370375, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.125, 0.06565, 0.25, 0.1875, 0.1148875, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.875, 0, 0.125, 0.9375, 0.06565, 0.875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.125, 0, 0.0625, 0.875, 0.06565, 0.9375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.125, 0.72215, 0.0625, 0.875, 0.7878, 0.9375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.15625, 0.7878, 0.15625, 0.84375, 0.8370375, 0.84375), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.1875, 0.06565, 0.1875, 0.8125, 0.1148875, 0.8125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.1875, 0.8370375, 0.1875, 0.8125, 0.886275, 0.8125), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.886275, 0.25, 0.75, 0.9355125, 0.75), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.7878, 0.84375, 0.75, 0.8370375, 0.90625), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.06565, 0.8125, 0.75, 0.1148875, 0.875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.875, 0.72215, 0.125, 0.9375, 0.7878, 0.875), BooleanOp.OR); + fissionreactorcore = Shapes.join(fissionreactorcore, Shapes.box(0.25, 0.7878, 0.09375, 0.75, 0.8370375, 0.15625), BooleanOp.OR); + VoxelShapes.registerShape(NuclearScienceBlocks.blockFissionReactorCore, fissionreactorcore, Direction.NORTH); + + /* FREEZE PLUG */ + + VoxelShape freezeplug = Shapes.empty(); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.25, 0.15625, 0.25, 0.75, 0.28125, 0.75), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.3125, 0.25, 0.3125, 0.6875, 0.8125, 0.6875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.125, 0.9375, 0.8125, 0.875, 1, 0.875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.125, 0.9375, 0.125, 0.875, 1, 0.1875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.1875, 0.875, 0.75, 0.8125, 0.9375, 0.8125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.25, 0.8125, 0.25, 0.75, 0.875, 0.75), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.1875, 0.875, 0.1875, 0.8125, 0.9375, 0.25), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.1875, 0.875, 0.25, 0.25, 0.9375, 0.75), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.75, 0.875, 0.25, 0.8125, 0.9375, 0.75), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.8125, 0.9375, 0.1875, 0.875, 1, 0.8125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.125, 0.9375, 0.1875, 0.1875, 1, 0.8125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.296875, 0.625, 0.296875, 0.703125, 0.6875, 0.703125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.28125, 0.5, 0.28125, 0.71875, 0.5625, 0.71875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.296875, 0.375, 0.296875, 0.703125, 0.4375, 0.703125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.078125, 0, 0.296875, 0.15625, 0.3125, 0.390625), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.078125, 0, 0.453125, 0.15625, 0.3125, 0.546875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.078125, 0, 0.609375, 0.15625, 0.3125, 0.703125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.296875, 0, 0.84375, 0.390625, 0.3125, 0.921875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.453125, 0, 0.84375, 0.546875, 0.3125, 0.921875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.609375, 0, 0.84375, 0.703125, 0.3125, 0.921875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.84375, 0, 0.609375, 0.921875, 0.3125, 0.703125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.84375, 0, 0.453125, 0.921875, 0.3125, 0.546875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.84375, 0, 0.296875, 0.921875, 0.3125, 0.390625), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.609375, 0, 0.078125, 0.703125, 0.3125, 0.15625), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.453125, 0, 0.078125, 0.546875, 0.3125, 0.15625), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.296875, 0, 0.078125, 0.390625, 0.3125, 0.15625), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.625, 0.1875, 0.15625, 0.6875, 0.25, 0.25), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.46875, 0.1875, 0.15625, 0.53125, 0.25, 0.25), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.3125, 0.1875, 0.15625, 0.375, 0.25, 0.25), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.15625, 0.1875, 0.3125, 0.25, 0.25, 0.375), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.15625, 0.1875, 0.46875, 0.25, 0.25, 0.53125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.15625, 0.1875, 0.625, 0.25, 0.25, 0.6875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.3125, 0.1875, 0.75, 0.375, 0.25, 0.84375), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.46875, 0.1875, 0.75, 0.53125, 0.25, 0.84375), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.625, 0.1875, 0.75, 0.6875, 0.25, 0.84375), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.75, 0.1875, 0.625, 0.84375, 0.25, 0.6875), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.75, 0.1875, 0.46875, 0.84375, 0.25, 0.53125), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.75, 0.1875, 0.3125, 0.84375, 0.25, 0.375), BooleanOp.OR); + freezeplug = Shapes.join(freezeplug, Shapes.box(0.3125, 0, 0.3125, 0.6875, 0.1875, 0.6875), BooleanOp.OR); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockFreezePlug, freezeplug, Direction.EAST); + + /* FUEL REPROCESSOR */ + + VoxelShape fuelreprocessor = Shapes.empty(); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.875, 0, 0.9375, 1, 1, 1), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.875, 0, 0, 1, 1, 0.0625), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0, 0, 0, 0.125, 1, 0.0625), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0, 0, 0.9375, 0.125, 1, 1), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0, 0, 0.875, 0.0625, 1, 0.9375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0, 0, 0.0625, 0.0625, 1, 0.125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.9375, 0, 0.0625, 1, 1, 0.125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.9375, 0, 0.875, 1, 1, 0.9375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.0625, 0.4375, 0.8125, 0.1875, 0.5625, 0.9375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.4375, 0.75, 0.25, 0.5625, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.4375, 0.6875, 0.25, 0.5625, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.4375, 0.75, 0.3125, 0.5625, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.0625, 0.4375, 0.0625, 0.1875, 0.5625, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.4375, 0.125, 0.25, 0.5625, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.4375, 0.1875, 0.3125, 0.5625, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.4375, 0.25, 0.25, 0.5625, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.4375, 0.8125, 0.9375, 0.5625, 0.9375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.4375, 0.75, 0.875, 0.5625, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.4375, 0.6875, 0.8125, 0.5625, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.4375, 0.75, 0.75, 0.5625, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.4375, 0.0625, 0.9375, 0.5625, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.4375, 0.125, 0.875, 0.5625, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.4375, 0.1875, 0.75, 0.5625, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.4375, 0.25, 0.8125, 0.5625, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.125, 0.3125, 0.8125, 0.875, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.125, 0.6875, 0.3125, 0.875, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.125, 0.25, 0.3125, 0.875, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.125, 0.25, 0.75, 0.875, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.125, 0.6875, 0.75, 0.875, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.125, 0.6875, 0.6875, 0.875, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.125, 0.1875, 0.6875, 0.875, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.9375, 0.25, 0.75, 1, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.875, 0.3125, 0.6875, 0.9375, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.9375, 0.25, 0.25, 1, 0.75, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.3125, 0.3125, 0.9375, 0.6875, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.1875, 0.125, 0.6875, 0.25, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.1875, 0.3125, 0.875, 0.25, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.1875, 0.6875, 0.8125, 0.25, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.1875, 0.75, 0.75, 0.25, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.1875, 0.1875, 0.75, 0.25, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.1875, 0.25, 0.8125, 0.25, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.1875, 0.25, 0.25, 0.25, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.1875, 0.1875, 0.3125, 0.25, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.1875, 0.75, 0.3125, 0.25, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.1875, 0.6875, 0.25, 0.25, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.1875, 0.3125, 0.1875, 0.25, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.1875, 0.8125, 0.6875, 0.25, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.75, 0.125, 0.6875, 0.8125, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.75, 0.3125, 0.875, 0.8125, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.75, 0.6875, 0.8125, 0.8125, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.75, 0.75, 0.75, 0.8125, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.6875, 0.75, 0.1875, 0.75, 0.8125, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.75, 0.75, 0.25, 0.8125, 0.8125, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.75, 0.25, 0.25, 0.8125, 0.3125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.75, 0.1875, 0.3125, 0.8125, 0.25), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.25, 0.75, 0.75, 0.3125, 0.8125, 0.8125), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.1875, 0.75, 0.6875, 0.25, 0.8125, 0.75), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.75, 0.3125, 0.1875, 0.8125, 0.6875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.3125, 0.75, 0.8125, 0.6875, 0.8125, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.25, 0.375, 0.1875, 0.75, 0.4375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.5625, 0.25, 0.125, 0.625, 0.75, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.375, 0.25, 0.125, 0.4375, 0.75, 0.1875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.375, 0.25, 0.8125, 0.4375, 0.75, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.5625, 0.25, 0.8125, 0.625, 0.75, 0.875), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.125, 0.25, 0.5625, 0.1875, 0.75, 0.625), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.6875, 0.5625, 0.875, 0.75, 0.625), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.6875, 0.375, 0.875, 0.75, 0.4375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.25, 0.375, 0.875, 0.3125, 0.4375), BooleanOp.OR); + fuelreprocessor = Shapes.join(fuelreprocessor, Shapes.box(0.8125, 0.25, 0.5625, 0.875, 0.3125, 0.625), BooleanOp.OR); + VoxelShapes.registerShape(NuclearScienceBlocks.blockFuelReprocessor, fuelreprocessor, Direction.WEST); + + /* GAS CENTRIFUGE */ + + VoxelShape gascentriguge = Shapes.empty(); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.5625, 0.921875, 0.26875, 1.0234375, 1.03125, 0.73125), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0, 0.0625, 0, 1, 0.125, 1), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.25, 0, 0.25, 0.75, 0.0625, 0.75), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0, 0, 0, 0.0625, 0.0625, 1), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.0625, 0, 0, 0.9375, 0.0625, 0.0625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.0625, 0, 0.9375, 0.9375, 0.0625, 1), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.9375, 0, 0, 1, 0.0625, 1), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.125, 0.125, 0.125, 0.875, 0.1875, 0.8715), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.75, 0.125, 0.28125, 1, 0.8125, 0.71875), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.234375, 0.125, 0.25, 0.75, 0.3125, 0.75), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.390625, 0.875, 0.375, 0.5890625, 0.984375, 0.625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.7765625, 0.3125, 0.5625, 0.8390625, 0.34375, 0.671875), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.2453125, 0.3125, 0.609375, 0.3078125, 0.34375, 0.75), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.2453125, 0.3125, 0.25, 0.3078125, 0.34375, 0.390625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.7765625, 0.3125, 0.328125, 0.8390625, 0.34375, 0.4375), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.7765625, 0.125, 0.5625, 0.8390625, 0.3125, 0.671875), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.7765625, 0.125, 0.328125, 0.8390625, 0.3125, 0.4375), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.2453125, 0.125, 0.609375, 0.3078125, 0.3125, 0.75), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.2453125, 0.125, 0.25, 0.3078125, 0.3125, 0.390625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.375, 0.3125, 0.5625, 0.4375, 0.4375, 0.625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.5625, 0.3125, 0.5625, 0.625, 0.4375, 0.625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.4375, 0.3125, 0.4375, 0.5625, 1, 0.5625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.5625, 0.3125, 0.375, 0.625, 0.4375, 0.4375), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.34375, 0.3125, 0.46875, 0.40625, 0.4375, 0.53125), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.46875, 0.3125, 0.59375, 0.53125, 0.4375, 0.65625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.46875, 0.3125, 0.34375, 0.53125, 0.4375, 0.40625), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.375, 0.3125, 0.375, 0.4375, 0.4375, 0.4375), BooleanOp.OR); + gascentriguge = Shapes.join(gascentriguge, Shapes.box(0.59375, 0.3125, 0.46875, 0.65625, 0.4375, 0.53125), BooleanOp.OR); + VoxelShapes.registerShape(NuclearScienceBlocks.blockGasCentrifuge, gascentriguge, Direction.WEST); + + /* HEAT EXCHANGER */ + + VoxelShape heatexchanger = Shapes.empty(); + heatexchanger = Shapes.join(heatexchanger, Block.box(0, 1, 0, 16, 3, 16), BooleanOp.OR); + heatexchanger = Shapes.join(heatexchanger, Block.box(1, 4, 1, 15, 16, 15), BooleanOp.OR); + heatexchanger = Shapes.join(heatexchanger, Block.box(0.5, 3, 0.5, 15.5, 4, 15.5), BooleanOp.OR); + heatexchanger = Shapes.join(heatexchanger, Block.box(4, 0, 4, 12, 1, 12), BooleanOp.OR); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockHeatExchanger, heatexchanger, Direction.WEST); + + /* MOLTEN SALT REACTOR CORE */ + + VoxelShape msreactorcore = Shapes.empty(); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0, 0.125, 0.875, 0.8125, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.125, 0.1875, 0.125, 0.75, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.125, 0.1875, 0.9375, 0.75, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.125, 0.0625, 0.8125, 0.75, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.125, 0.875, 0.8125, 0.75, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.1875, 0.25, 0.0625, 0.6875, 0.75), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.8125, 0.1875, 0.8125, 0.875, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.3125, 0.875, 0.3125, 0.6875, 1, 0.6875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, 0.875, 0.375, 0.3125, 1.125, 0.4375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, 0.875, 0.5625, 0.3125, 1.125, 0.625), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.6875, 0.875, 0.5625, 0.75, 1.125, 0.625), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.6875, 0.875, 0.375, 0.75, 1.125, 0.4375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.5625, 0.875, 0.25, 0.625, 1.125, 0.3125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.375, 0.875, 0.25, 0.4375, 1.125, 0.3125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.375, 0.875, 0.6875, 0.4375, 1.125, 0.75), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.5625, 0.875, 0.6875, 0.625, 1.125, 0.75), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.25, 0.1875, 0.0625, 0.3125, 0.25), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.40625, 0.1875, 0.0625, 0.46875, 0.25), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.5625, 0.1875, 0.0625, 0.625, 0.25), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.5625, 0.75, 0.0625, 0.625, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.40625, 0.75, 0.0625, 0.46875, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0, 0.25, 0.75, 0.0625, 0.3125, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.5625, 0.8125, 0.125, 0.625, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.40625, 0.8125, 0.125, 0.46875, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.25, 0.8125, 0.125, 0.3125, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.5625, 0.125, 0.125, 0.625, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.40625, 0.125, 0.125, 0.46875, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, 0.25, 0.125, 0.125, 0.3125, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.40625, 0.125, 0.9375, 0.46875, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.25, 0.125, 0.9375, 0.3125, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.5625, 0.125, 0.9375, 0.625, 0.1875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.5625, 0.8125, 0.9375, 0.625, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.40625, 0.8125, 0.9375, 0.46875, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, 0.25, 0.8125, 0.9375, 0.3125, 0.875), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.9375, 0.5625, 0.1875, 1, 0.625, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.9375, 0.40625, 0.1875, 1, 0.46875, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.9375, 0.25, 0.1875, 1, 0.3125, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.5625, 0.875, 0.875, 0.625, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.40625, 0.875, 0.875, 0.46875, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.25, 0.875, 0.875, 0.3125, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.5625, 0.875, 0.1875, 0.625, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.40625, 0.875, 0.1875, 0.46875, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.25, 0.875, 0.1875, 0.3125, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.5625, 0.0625, 0.1875, 0.625, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.40625, 0.0625, 0.1875, 0.46875, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.125, 0.25, 0.0625, 0.1875, 0.3125, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.5625, 0.0625, 0.875, 0.625, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.40625, 0.0625, 0.875, 0.46875, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.8125, 0.25, 0.0625, 0.875, 0.3125, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.5625, 0, 0.8125, 0.625, 0.0625), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.40625, 0, 0.8125, 0.46875, 0.0625), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.25, 0, 0.8125, 0.3125, 0.0625), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.5625, 0.9375, 0.8125, 0.625, 1), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.40625, 0.9375, 0.8125, 0.46875, 1), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, 0.25, 0.9375, 0.8125, 0.3125, 1), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, -0.125, 0.6875, 0.125, 0.125, 0.75), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, -0.125, 0.875, 0.3125, 0.125, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, -0.0625, 0.75, 0.75, 0, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.6875, -0.125, 0.875, 0.75, 0.125, 0.9375), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, -0.125, 0.6875, 0.9375, 0.125, 0.75), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.875, -0.125, 0.25, 0.9375, 0.125, 0.3125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.0625, -0.125, 0.25, 0.125, 0.125, 0.3125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.1875, -0.0625, 0.1875, 0.25, 0, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, -0.0625, 0.1875, 0.75, 0, 0.25), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.75, -0.0625, 0.1875, 0.8125, 0, 0.8125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.25, -0.125, 0.0625, 0.3125, 0.125, 0.125), BooleanOp.OR); + msreactorcore = Shapes.join(msreactorcore, Shapes.box(0.6875, -0.125, 0.0625, 0.75, 0.125, 0.125), BooleanOp.OR); + VoxelShapes.registerShape(NuclearScienceBlocks.blockMSReactorCore, msreactorcore, Direction.WEST); + + /* MOLTEN SALT SUPPLIER */ + + VoxelShape moltensaltsupplier = Shapes.empty(); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.0625, 0.125, 0.25, 0.9375, 0.75, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.0625, 0.1875, 0.1875, 0.9375, 0.6875, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.0625, 0.1875, 0.75, 0.9375, 0.6875, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0, 0.1875, 0.25, 0.0625, 0.6875, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.9375, 0.1875, 0.25, 1, 0.6875, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.25, 0.0625, 0.25, 0.75, 0.125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0, 0.3125, 0.6875, 0.0625, 0.6875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.125, 0.1875, 0.875, 0.1875, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.125, 0.75, 0.875, 0.1875, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.1875, 0.125, 0.875, 0.6875, 0.1875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.1875, 0.8125, 0.875, 0.6875, 0.875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.0625, 0.25, 0.875, 0.125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.75, 0.0625, 0.3125, 0.8125, 0.125, 0.375), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.75, 0.0625, 0.625, 0.8125, 0.125, 0.6875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.75, 0.25, 0.875, 0.8125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.6875, 0.75, 0.875, 0.75, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.8125, 0.6875, 0.1875, 0.875, 0.75, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.125, 0.1875, 0.6875, 0.1875, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.125, 0.75, 0.6875, 0.1875, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.1875, 0.125, 0.6875, 0.6875, 0.1875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.1875, 0.8125, 0.6875, 0.6875, 0.875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.75, 0.25, 0.6875, 0.8125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.6875, 0.75, 0.6875, 0.75, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.625, 0.6875, 0.1875, 0.6875, 0.75, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.125, 0.1875, 0.375, 0.1875, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.125, 0.75, 0.375, 0.1875, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.1875, 0.125, 0.375, 0.6875, 0.1875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.1875, 0.8125, 0.375, 0.6875, 0.875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.75, 0.25, 0.375, 0.8125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.6875, 0.75, 0.375, 0.75, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.3125, 0.6875, 0.1875, 0.375, 0.75, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.125, 0.1875, 0.1875, 0.1875, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.125, 0.75, 0.1875, 0.1875, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.1875, 0.125, 0.1875, 0.6875, 0.1875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.1875, 0.8125, 0.1875, 0.6875, 0.875), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.0625, 0.25, 0.1875, 0.125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.75, 0.25, 0.1875, 0.8125, 0.75), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.6875, 0.75, 0.1875, 0.75, 0.8125), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.125, 0.6875, 0.1875, 0.1875, 0.75, 0.25), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.1875, 0.0625, 0.3125, 0.25, 0.125, 0.375), BooleanOp.OR); + moltensaltsupplier = Shapes.join(moltensaltsupplier, Shapes.box(0.1875, 0.0625, 0.625, 0.25, 0.125, 0.6875), BooleanOp.OR); + VoxelShapes.registerShape(NuclearScienceBlocks.blockMoltenSaltSupplier, moltensaltsupplier, Direction.EAST); + + /* NUCLEAR BOILER */ + + VoxelShape nuclearboiler = Block.box(0, 0, 0, 16, 2, 16); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 2, 0, 9, 6, 1.5)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(6, 6, 0, 10, 10, 1.5)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 9.25, 0.25, 9, 11, 4.5)); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 2, 14.5, 9, 6, 16)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(6, 6, 14.5, 10, 10, 16)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 9.25, 11.5, 9, 11, 15.75)); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(2, 2, 2, 14, 3, 14)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(3.75, 3, 4, 12, 5, 12)); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(13, 2, 4.5, 16, 12, 11.5)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(10, 9, 5.5, 13, 11, 10.5)); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 2, 5, 9, 8, 6.5)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(6, 8, 4.5, 10, 12, 7.5)); + + nuclearboiler = Shapes.or(nuclearboiler, Block.box(7, 2, 9.5, 9, 8, 11)); + nuclearboiler = Shapes.or(nuclearboiler, Block.box(6, 8, 8.5, 10, 12, 11.5)); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockNuclearBoiler, nuclearboiler, Direction.WEST); + + /* PARTICLE INJECTOR */ + + VoxelShape particleinjector = Stream.of( + // + Block.box(15, 4, 4, 16, 12, 12), + // + Block.box(12, 0, 0, 15, 16, 16), + // + Block.box(15, 0, 15, 16, 16, 16), + // + Block.box(15, 0, 0, 16, 16, 1), + // + Block.box(15, 15, 1, 16, 16, 15), + // + Block.box(15, 0, 1, 16, 1, 15), + // + Block.box(9, 1, 1, 12, 15, 15), + // + Block.box(4, 1, 1, 5, 15, 15), + // + Block.box(1.5, 3, 3, 4, 13, 13), + // + Block.box(0, 0, 0, 0.5, 16, 16), + // + Block.box(0.5, 0.5, 0.5, 1, 15.5, 15.25), + // + Block.box(1, 1.5, 1.5, 1.5, 14.5, 14.25), + // + Block.box(5, 0, 0, 9, 16, 16) + // + ).reduce(Shapes::or).get(); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockParticleInjector, particleinjector, Direction.WEST); + + /* RADIOISOTROPIC GENERATOR */ + + VoxelShape radiogenerator = Block.box(6, 0.25, 4, 10, 15.75, 12); + radiogenerator = Shapes.or(radiogenerator, Block.box(4, 0.25, 6, 12, 15.75, 10)); + radiogenerator = Shapes.or(radiogenerator, Block.box(5, 0.25, 5, 11, 15.75, 11)); + + radiogenerator = Shapes.or(radiogenerator, Block.box(5.25, 0, 5.25, 10.75, 0.25, 10.75)); + radiogenerator = Shapes.or(radiogenerator, Block.box(5.25, 15.75, 5.25, 10.75, 16, 10.75)); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockRadioisotopeGenerator, radiogenerator, Direction.EAST); + + /* TELEPORTER */ + + VoxelShape teleporter = Stream.of( + // + Block.box(2, 1, 2, 14, 5, 14), + // + Block.box(0, 2, 14, 2, 5, 16), + // + Block.box(14, 2, 14, 16, 5, 16), + // + Block.box(14, 2, 0, 16, 5, 2), + // + Block.box(0, 2, 0, 2, 5, 2), + // + Block.box(0, 5, 0, 16, 7, 2), + // + Block.box(0, 0, 0, 16, 2, 2), + // + Block.box(0, 5, 14, 16, 7, 16), + // + Block.box(0, 0, 14, 16, 2, 16), + // + Block.box(0, 5, 2, 2, 7, 14), + // + Block.box(0, 0, 2, 2, 2, 14), + // + Block.box(14, 5, 2, 16, 7, 14), + // + Block.box(14, 0, 2, 16, 2, 14), + // + Block.box(7, 7, 1, 9, 8, 2), + // + Block.box(7, 7, 14, 9, 8, 15), + // + Block.box(7, 8, 14, 9, 9, 15), + // + Block.box(7, 8, 1, 9, 9, 2), + // + Block.box(7, 9, 2, 9, 10, 3), + // + Block.box(7, 9, 13, 9, 10, 14), + // + Block.box(7, 10, 13, 9, 11, 14), + // + Block.box(7, 10, 12, 9, 11, 13), + // + Block.box(7, 10, 3, 9, 11, 4), + // + Block.box(7, 10, 2, 9, 11, 3), + // + Block.box(1, 7, 7, 2, 8, 9), + // + Block.box(14, 7, 7, 15, 8, 9), + // + Block.box(1, 8, 7, 2, 9, 9), + // + Block.box(14, 8, 7, 15, 9, 9), + // + Block.box(2, 9, 7, 3, 10, 9), + // + Block.box(13, 9, 7, 14, 10, 9), + // + Block.box(2, 10, 7, 3, 11, 9), + // + Block.box(13, 10, 7, 14, 11, 9), + // + Block.box(3, 10, 7, 4, 11, 9), + // + Block.box(12, 10, 7, 13, 11, 9), + // + Block.box(3, 11, 3, 13, 12, 13), + // + Block.box(4, 12, 4, 12, 13, 12), + // + Block.box(5, 13, 5, 11, 14, 11), + // + Block.box(6, 5, 6, 10, 15, 10), + // + Block.box(3, 5, 3, 4, 11, 4), + // + Block.box(12, 5, 3, 13, 11, 4), + // + Block.box(3, 5, 12, 4, 11, 13), + // + Block.box(12, 5, 12, 13, 11, 13), + // + Block.box(1, 7, 1, 3, 8, 4), + // + Block.box(1, 7, 3, 3, 8, 4), + // + Block.box(3, 7, 1, 4, 8, 3), + // + Block.box(13, 7, 12, 15, 8, 15), + // + Block.box(1, 7, 12, 3, 8, 13), + // + Block.box(1, 7, 13, 4, 8, 15), + // + Block.box(12, 7, 13, 13, 8, 15), + // + Block.box(12, 7, 1, 15, 8, 3), + // + Block.box(13, 7, 3, 15, 8, 4), + // + Block.box(0, 15, 0, 16, 16, 16), + // + Block.box(4, 0, 4, 12, 1, 12), + // + Block.box(3, 12, 3, 4, 15, 4), + // + Block.box(12, 12, 3, 13, 15, 4), + // + Block.box(3, 12, 12, 4, 15, 13), + // + Block.box(12, 12, 12, 13, 15, 13) + // + ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(); + + VoxelShapes.registerShape(NuclearScienceBlocks.blockTeleporter, teleporter, Direction.UP); + + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/entity/EntityParticle.java b/src/main/java/nuclearscience/common/entity/EntityParticle.java index 6cfc7b39..0aad85c0 100644 --- a/src/main/java/nuclearscience/common/entity/EntityParticle.java +++ b/src/main/java/nuclearscience/common/entity/EntityParticle.java @@ -11,7 +11,7 @@ import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.protocol.Packet; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; @@ -25,13 +25,14 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; -import nuclearscience.DeferredRegisters; import nuclearscience.api.fusion.IElectromagnet; import nuclearscience.api.radiation.RadiationSystem; import nuclearscience.common.block.BlockElectromagneticBooster; import nuclearscience.common.block.facing.FacingDirection; import nuclearscience.common.tile.TileElectromagneticSwitch; import nuclearscience.common.tile.TileParticleInjector; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceEntities; public class EntityParticle extends Entity { private static final EntityDataAccessor DIRECTION = SynchedEntityData.defineId(EntityParticle.class, EntityDataSerializers.DIRECTION); @@ -41,11 +42,11 @@ public class EntityParticle extends Entity { public BlockPos source = BlockPos.ZERO; public EntityParticle(EntityType entityTypeIn, Level worldIn) { - super(DeferredRegisters.ENTITY_PARTICLE.get(), worldIn); + super(NuclearScienceEntities.ENTITY_PARTICLE.get(), worldIn); } public EntityParticle(Direction direction, Level worldIn, Location pos) { - this(DeferredRegisters.ENTITY_PARTICLE.get(), worldIn); + this(NuclearScienceEntities.ENTITY_PARTICLE.get(), worldIn); setPos(new Vec3(pos.x(), pos.y(), pos.z())); this.direction = direction; noCulling = true; @@ -87,7 +88,7 @@ public void tick() { BlockPos next = blockPosition(); BlockState oldState = level.getBlockState(next); boolean isBooster = false; - if (oldState.getBlock() == DeferredRegisters.blockElectromagneticBooster) { + if (oldState.getBlock() == NuclearScienceBlocks.blockElectromagneticBooster) { Direction dir = oldState.getValue(GenericEntityBlock.FACING).getOpposite(); FacingDirection face = oldState.getValue(BlockElectromagneticBooster.FACINGDIRECTION); if (face == FacingDirection.RIGHT) { @@ -114,7 +115,7 @@ public void tick() { setPos(getX() + direction.getStepX() * localSpeed, getY(), getZ() + direction.getStepZ() * localSpeed); if (isBooster) { BlockPos positionNow = blockPosition(); - if (level.getBlockState(positionNow).getBlock() == DeferredRegisters.blockElectromagneticSwitch) { + if (level.getBlockState(positionNow).getBlock() == NuclearScienceBlocks.blockElectromagneticSwitch) { HashSet directions = new HashSet<>(); for (Direction dir : Direction.values()) { if (dir != Direction.UP && dir != Direction.DOWN && dir != direction.getOpposite() && level.getBlockState(positionNow.relative(dir)).getBlock() == Blocks.AIR) { @@ -140,7 +141,7 @@ public void tick() { if (!level.isClientSide) { BlockPos getPos = blockPosition(); BlockState nextState = level.getBlockState(getPos); - if (nextState.getBlock() == Blocks.AIR || nextState.getBlock() == DeferredRegisters.blockElectromagneticSwitch) { + if (nextState.getBlock() == Blocks.AIR || nextState.getBlock() == NuclearScienceBlocks.blockElectromagneticSwitch) { int amount = 0; for (Direction of : Direction.values()) { if (level.getBlockState(blockPosition().relative(of)).getBlock() instanceof IElectromagnet) { @@ -153,17 +154,17 @@ public void tick() { break; } BlockState testNextBlock = level.getBlockState(getPos.relative(direction)); - if (testNextBlock.getBlock() instanceof IElectromagnet && testNextBlock.getBlock() != DeferredRegisters.blockElectromagneticSwitch) { + if (testNextBlock.getBlock() instanceof IElectromagnet && testNextBlock.getBlock() != NuclearScienceBlocks.blockElectromagneticSwitch) { Direction checkRot = direction.getClockWise(); testNextBlock = level.getBlockState(getPos.relative(checkRot)); - if (testNextBlock.getBlock() == Blocks.AIR || testNextBlock.getBlock() == DeferredRegisters.blockElectromagneticSwitch) { + if (testNextBlock.getBlock() == Blocks.AIR || testNextBlock.getBlock() == NuclearScienceBlocks.blockElectromagneticSwitch) { BlockPos floor = blockPosition(); direction = checkRot; setPos(floor.getX() + 0.5, floor.getY() + 0.5, floor.getZ() + 0.5); } else { checkRot = direction.getClockWise().getOpposite(); testNextBlock = level.getBlockState(getPos.relative(checkRot)); - if (testNextBlock.getBlock() == Blocks.AIR || testNextBlock.getBlock() == DeferredRegisters.blockElectromagneticSwitch) { + if (testNextBlock.getBlock() == Blocks.AIR || testNextBlock.getBlock() == NuclearScienceBlocks.blockElectromagneticSwitch) { BlockPos floor = blockPosition(); direction = checkRot; setPos(floor.getX() + 0.5, floor.getY() + 0.5, floor.getZ() + 0.5); @@ -175,7 +176,7 @@ public void tick() { } } } else { - boolean checkIsBooster = nextState.getBlock() == DeferredRegisters.blockElectromagneticBooster && oldState.getBlock() == DeferredRegisters.blockElectromagneticBooster; + boolean checkIsBooster = nextState.getBlock() == NuclearScienceBlocks.blockElectromagneticBooster && oldState.getBlock() == NuclearScienceBlocks.blockElectromagneticBooster; boolean explode = false; if (checkIsBooster) { Direction oldDir = oldState.getValue(GenericEntityBlock.FACING); @@ -191,7 +192,7 @@ public void tick() { explode = true; } } - } else if (nextState.getBlock() != DeferredRegisters.blockElectromagneticBooster) { + } else if (nextState.getBlock() != NuclearScienceBlocks.blockElectromagneticBooster) { explode = true; } if (explode) { @@ -229,7 +230,7 @@ protected void readAdditionalSaveData(CompoundTag compound) { @Override public Component getName() { - return new TextComponent("entity.particle"); + return new TranslatableComponent("entity.particle"); } @Override diff --git a/src/main/java/nuclearscience/common/event/ServerEventHandler.java b/src/main/java/nuclearscience/common/event/ServerEventHandler.java new file mode 100644 index 00000000..680ff4d1 --- /dev/null +++ b/src/main/java/nuclearscience/common/event/ServerEventHandler.java @@ -0,0 +1,27 @@ +package nuclearscience.common.event; + +import nuclearscience.References; +import nuclearscience.common.reloadlistener.AtomicAssemblerBlacklistRegister; +import nuclearscience.common.reloadlistener.RadioactiveItemLoader; +import net.minecraftforge.event.AddReloadListenerEvent; +import net.minecraftforge.event.server.ServerStartedEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; + +@EventBusSubscriber(modid = References.ID, bus = Bus.FORGE) +public class ServerEventHandler { + + @SubscribeEvent + public static void addReloadListeners(AddReloadListenerEvent event) { + event.addListener(RadioactiveItemLoader.INSTANCE); + event.addListener(AtomicAssemblerBlacklistRegister.INSTANCE); + } + + @SubscribeEvent + public static void serverStartedHandler(ServerStartedEvent event) { + RadioactiveItemLoader.INSTANCE.generateTagValues(); + AtomicAssemblerBlacklistRegister.INSTANCE.generateTagValues(); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/fluid/IRadioactiveFluid.java b/src/main/java/nuclearscience/common/fluid/IRadioactiveFluid.java new file mode 100644 index 00000000..6676ae65 --- /dev/null +++ b/src/main/java/nuclearscience/common/fluid/IRadioactiveFluid.java @@ -0,0 +1,9 @@ +package nuclearscience.common.fluid; + +public interface IRadioactiveFluid { + + public double getRadiationRange(); + + public double getRadiationStrength(); + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/fluid/types/FluidAmmonia.java b/src/main/java/nuclearscience/common/fluid/types/FluidAmmonia.java index 3aca0f34..6481592c 100644 --- a/src/main/java/nuclearscience/common/fluid/types/FluidAmmonia.java +++ b/src/main/java/nuclearscience/common/fluid/types/FluidAmmonia.java @@ -1,13 +1,15 @@ package nuclearscience.common.fluid.types; import electrodynamics.common.fluid.FluidNonPlaceable; +import electrodynamics.registers.ElectrodynamicsItems; +import nuclearscience.References; public class FluidAmmonia extends FluidNonPlaceable { public static final String FORGE_TAG = "ammonia"; public FluidAmmonia() { - super(() -> electrodynamics.DeferredRegisters.ITEM_CANISTERREINFORCED, nuclearscience.References.ID, "ammonia"); + super(() -> ElectrodynamicsItems.ITEM_CANISTERREINFORCED, References.ID, "ammonia"); } } diff --git a/src/main/java/nuclearscience/common/fluid/types/FluidUraniumHexafluoride.java b/src/main/java/nuclearscience/common/fluid/types/FluidUraniumHexafluoride.java index 3f77b30b..c56c3fb1 100644 --- a/src/main/java/nuclearscience/common/fluid/types/FluidUraniumHexafluoride.java +++ b/src/main/java/nuclearscience/common/fluid/types/FluidUraniumHexafluoride.java @@ -1,15 +1,15 @@ package nuclearscience.common.fluid.types; import electrodynamics.common.fluid.FluidNonPlaceable; -import nuclearscience.DeferredRegisters; import nuclearscience.References; +import nuclearscience.registers.NuclearScienceItems; public class FluidUraniumHexafluoride extends FluidNonPlaceable { public static final String FORGE_TAG = "uranium_hexafluoride"; public FluidUraniumHexafluoride() { - super(() -> DeferredRegisters.ITEM_CANISTERLEAD, References.ID, "uraniumhexafluoride", -431922120); + super(() -> NuclearScienceItems.ITEM_CANISTERLEAD, References.ID, "uraniumhexafluoride", -431922120); } } diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerAtomicAssembler.java b/src/main/java/nuclearscience/common/inventory/container/ContainerAtomicAssembler.java index 4c07128e..2494b9fe 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerAtomicAssembler.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerAtomicAssembler.java @@ -3,13 +3,17 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileAtomicAssembler; +import nuclearscience.prefab.screen.component.NuclearIconTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerAtomicAssembler extends GenericContainerBlockEntity { @@ -18,20 +22,20 @@ public ContainerAtomicAssembler(int id, Inventory playerinv) { } public ContainerAtomicAssembler(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_ATOMICASSEMBLER.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_ATOMICASSEMBLER.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { playerInvOffset = 64; - addSlot(new SlotRestricted(inv, nextIndex(), 60 + 18 * 3 / 2, 40, DeferredRegisters.ITEM_CELLDARKMATTER.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 33, 56, DeferredRegisters.ITEM_CELLDARKMATTER.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 114 + 27, 56, DeferredRegisters.ITEM_CELLDARKMATTER.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 33, 88, DeferredRegisters.ITEM_CELLDARKMATTER.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 114 + 27, 88, DeferredRegisters.ITEM_CELLDARKMATTER.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 60 + 18 * 3 / 2, 103, DeferredRegisters.ITEM_CELLDARKMATTER.get())); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 60 + 18 * 3 / 2, 40).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 33, 56).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 114 + 27, 56).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 33, 88).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 114 + 27, 88).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 60 + 18 * 3 / 2, 103).setRestriction(NuclearScienceItems.ITEM_CELLDARKMATTER.get()).setIOColor(new Color(0, 255, 30, 255))); - addSlot(new SlotGeneric(inv, nextIndex(), 60, 72)); - addSlot(new SlotGeneric(inv, nextIndex(), 114, 72)); + addSlot(new SlotGeneric(inv, nextIndex(), 60, 72).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 114, 72).setIOColor(new Color(255, 0, 0, 255))); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerChemicalExtractor.java b/src/main/java/nuclearscience/common/inventory/container/ContainerChemicalExtractor.java index df58d7ba..bf4338bb 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerChemicalExtractor.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerChemicalExtractor.java @@ -4,16 +4,17 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotFluid; +import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; import electrodynamics.prefab.inventory.container.slot.item.type.SlotUpgrade; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.FurnaceResultSlot; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileChemicalExtractor; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerChemicalExtractor extends GenericContainerBlockEntity { @@ -24,7 +25,7 @@ public ContainerChemicalExtractor(int id, Inventory playerinv) { } public ContainerChemicalExtractor(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_CHEMICALEXTRACTOR.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_CHEMICALEXTRACTOR.get(), id, playerinv, inventory, inventorydata); } public ContainerChemicalExtractor(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { @@ -33,11 +34,11 @@ public ContainerChemicalExtractor(MenuType type, int id, Inventory playerinv, @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotGeneric(inv, nextIndex(), 74, 31)); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 128, 31)); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 31).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 128, 31).setIOColor(new Color(255, 0, 0, 255))); addSlot(new SlotFluid(inv, nextIndex(), 74, 51)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 14, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 34, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 54, VALID_UPGRADES)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerFreezePlug.java b/src/main/java/nuclearscience/common/inventory/container/ContainerFreezePlug.java index 9137e43e..8b7e8148 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerFreezePlug.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerFreezePlug.java @@ -2,13 +2,16 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.tile.TileFreezePlug; +import nuclearscience.common.tile.msreactor.TileFreezePlug; +import nuclearscience.prefab.screen.component.NuclearIconTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerFreezePlug extends GenericContainerBlockEntity { @@ -17,11 +20,11 @@ public ContainerFreezePlug(int id, Inventory playerinv) { } public ContainerFreezePlug(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_FREEZEPLUG.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_FREEZEPLUG.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotRestricted(inv, nextIndex(), 25, 42, DeferredRegisters.ITEM_FLINAK.get())); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.PELLET_DARK, inv, nextIndex(), 15, 35).setRestriction(NuclearScienceItems.ITEM_FLINAK.get())); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerGasCentrifuge.java b/src/main/java/nuclearscience/common/inventory/container/ContainerGasCentrifuge.java index 1b30e48b..95a6be48 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerGasCentrifuge.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerGasCentrifuge.java @@ -2,16 +2,17 @@ import electrodynamics.common.item.subtype.SubtypeItemUpgrade; import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; +import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; import electrodynamics.prefab.inventory.container.slot.item.type.SlotUpgrade; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.FurnaceResultSlot; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileGasCentrifuge; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerGasCentrifuge extends GenericContainerBlockEntity { @@ -22,7 +23,7 @@ public ContainerGasCentrifuge(int id, Inventory playerinv) { } public ContainerGasCentrifuge(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_GASCENTRIFUGE.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_GASCENTRIFUGE.get(), id, playerinv, inventory, inventorydata); } public ContainerGasCentrifuge(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { @@ -31,11 +32,11 @@ public ContainerGasCentrifuge(MenuType type, int id, Inventory playerinv, Con @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 129, 14)); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 129, 34)); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 129, 55)); + addSlot(new SlotRestricted(inv, nextIndex(), 129, 14).setIOColor(new Color(255, 0, 0, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 129, 34).setIOColor(new Color(255, 0, 0, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 129, 55).setIOColor(new Color(255, 0, 0, 255))); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 14, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 34, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 55, VALID_UPGRADES)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerMSRFuelPreProcessor.java b/src/main/java/nuclearscience/common/inventory/container/ContainerMSRFuelPreProcessor.java index bcf06bf6..75820694 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerMSRFuelPreProcessor.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerMSRFuelPreProcessor.java @@ -4,16 +4,17 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotFluid; +import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; import electrodynamics.prefab.inventory.container.slot.item.type.SlotUpgrade; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.FurnaceResultSlot; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.tile.TileMSRFuelPreProcessor; +import nuclearscience.common.tile.msreactor.TileMSRFuelPreProcessor; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerMSRFuelPreProcessor extends GenericContainerBlockEntity { @@ -24,7 +25,7 @@ public ContainerMSRFuelPreProcessor(int id, Inventory playerinv) { } public ContainerMSRFuelPreProcessor(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_MSRFUELPREPROCESSOR.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_MSRFUELPREPROCESSOR.get(), id, playerinv, inventory, inventorydata); } public ContainerMSRFuelPreProcessor(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { @@ -33,13 +34,13 @@ public ContainerMSRFuelPreProcessor(MenuType type, int id, Inventory playerin @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotGeneric(inv, nextIndex(), 74, 20)); - addSlot(new SlotGeneric(inv, nextIndex(), 74, 40)); - addSlot(new SlotGeneric(inv, nextIndex(), 74, 60)); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 128, 40)); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 20).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 40).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 60).setIOColor(new Color(144, 0, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 128, 40).setIOColor(new Color(255, 0, 0, 255))); addSlot(new SlotFluid(inv, nextIndex(), 45, 50)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 14, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 34, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 54, VALID_UPGRADES)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerMSRReactorCore.java b/src/main/java/nuclearscience/common/inventory/container/ContainerMSRReactorCore.java index 90da6085..78a92a8e 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerMSRReactorCore.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerMSRReactorCore.java @@ -7,17 +7,17 @@ import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.tile.TileMSRReactorCore; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; +import nuclearscience.registers.NuclearScienceMenuTypes; -public class ContainerMSRReactorCore extends GenericContainerBlockEntity { +public class ContainerMSRReactorCore extends GenericContainerBlockEntity { public ContainerMSRReactorCore(int id, Inventory playerinv) { this(id, playerinv, new SimpleContainer(0), new SimpleContainerData(3)); } public ContainerMSRReactorCore(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_MSRREACTORCORE.get(), id, playerinv, new SimpleContainer(), inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_MSRREACTORCORE.get(), id, playerinv, new SimpleContainer(), inventorydata); } public ContainerMSRReactorCore(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { @@ -27,4 +27,4 @@ public ContainerMSRReactorCore(MenuType type, int id, Inventory playerinv, Co @Override public void addInventorySlots(Container inv, Inventory playerinv) { } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerMoltenSaltSupplier.java b/src/main/java/nuclearscience/common/inventory/container/ContainerMoltenSaltSupplier.java index 233abca5..e22b0e95 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerMoltenSaltSupplier.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerMoltenSaltSupplier.java @@ -2,26 +2,31 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.tile.TileMoltenSaltSupplier; +import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; +import nuclearscience.prefab.screen.component.NuclearIconTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerMoltenSaltSupplier extends GenericContainerBlockEntity { public ContainerMoltenSaltSupplier(int id, Inventory playerinv) { - this(id, playerinv, new SimpleContainer(1), new SimpleContainerData(3)); + this(id, playerinv, new SimpleContainer(2), new SimpleContainerData(3)); } public ContainerMoltenSaltSupplier(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_MOLTENSALTSUPPLIER.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_MOLTENSALTSUPPLIER.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotRestricted(inv, nextIndex(), 25, 42, DeferredRegisters.ITEM_LIFHT4PUF3.get())); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.PELLET_DARK, inv, nextIndex(), 30, 35).setRestriction(NuclearScienceItems.ITEM_LIFHT4PUF3.get()).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 130, 35).setIOColor(new Color(255, 0, 0, 255))); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerNuclearBoiler.java b/src/main/java/nuclearscience/common/inventory/container/ContainerNuclearBoiler.java index 83bdfbd5..ac871c80 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerNuclearBoiler.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerNuclearBoiler.java @@ -5,14 +5,14 @@ import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotFluid; import electrodynamics.prefab.inventory.container.slot.item.type.SlotUpgrade; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileNuclearBoiler; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerNuclearBoiler extends GenericContainerBlockEntity { @@ -23,20 +23,16 @@ public ContainerNuclearBoiler(int id, Inventory playerinv) { } public ContainerNuclearBoiler(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_NUCLEARBOILER.get(), id, playerinv, inventory, inventorydata); - } - - public ContainerNuclearBoiler(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(type, id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_NUCLEARBOILER.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotGeneric(inv, nextIndex(), 74, 31)); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 31).setIOColor(new Color(0, 240, 255, 255))); addSlot(new SlotFluid(inv, nextIndex(), 74, 51)); addSlot(new SlotFluid(inv, nextIndex(), 108, 51)); addSlot(new SlotUpgrade(inv, nextIndex(), 150, 14, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 150, 34, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 150, 54, VALID_UPGRADES)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerParticleInjector.java b/src/main/java/nuclearscience/common/inventory/container/ContainerParticleInjector.java index de6b95df..ddd8187d 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerParticleInjector.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerParticleInjector.java @@ -3,15 +3,17 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.FurnaceResultSlot; -import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileParticleInjector; +import nuclearscience.prefab.screen.component.NuclearIconTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerParticleInjector extends GenericContainerBlockEntity { @@ -20,17 +22,15 @@ public ContainerParticleInjector(int id, Inventory playerinv) { } public ContainerParticleInjector(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_PARTICLEINJECTOR.get(), id, playerinv, inventory, inventorydata); - } - - public ContainerParticleInjector(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(type, id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_PARTICLEINJECTOR.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotGeneric(inv, nextIndex(), 98, 14)); - addSlot(new SlotRestricted(inv, nextIndex(), 98, 50, DeferredRegisters.ITEM_CELLELECTROMAGNETIC.get())); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 133, 32)); + playerInvOffset += 10; + + addSlot(new SlotGeneric(inv, nextIndex(), 98, 22).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 98, 58).setRestriction(NuclearScienceItems.ITEM_CELLELECTROMAGNETIC.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 133, 40).setIOColor(new Color(255, 0, 0, 255))); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerQuantumCapacitor.java b/src/main/java/nuclearscience/common/inventory/container/ContainerQuantumCapacitor.java index 1aa06802..7eeda2e1 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerQuantumCapacitor.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerQuantumCapacitor.java @@ -6,8 +6,8 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileQuantumCapacitor; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerQuantumCapacitor extends GenericContainerBlockEntity { @@ -16,7 +16,7 @@ public ContainerQuantumCapacitor(int id, Inventory playerinv) { } public ContainerQuantumCapacitor(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_QUANTUMCAPACITOR.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_QUANTUMCAPACITOR.get(), id, playerinv, inventory, inventorydata); } @Override @@ -24,4 +24,4 @@ public void addInventorySlots(Container inv, Inventory playerinv) { // Filler } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerRadioactiveProcessor.java b/src/main/java/nuclearscience/common/inventory/container/ContainerRadioactiveProcessor.java index 7c02ba71..596af08f 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerRadioactiveProcessor.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerRadioactiveProcessor.java @@ -4,16 +4,17 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.SlotGeneric; import electrodynamics.prefab.inventory.container.slot.item.type.SlotFluid; +import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; import electrodynamics.prefab.inventory.container.slot.item.type.SlotUpgrade; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.inventory.FurnaceResultSlot; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; import nuclearscience.common.tile.TileRadioactiveProcessor; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerRadioactiveProcessor extends GenericContainerBlockEntity { @@ -24,7 +25,7 @@ public ContainerRadioactiveProcessor(int id, Inventory playerinv) { } public ContainerRadioactiveProcessor(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_RADIOACTIVEPROCESSOR.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_RADIOACTIVEPROCESSOR.get(), id, playerinv, inventory, inventorydata); } public ContainerRadioactiveProcessor(MenuType type, int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { @@ -33,11 +34,11 @@ public ContainerRadioactiveProcessor(MenuType type, int id, Inventory playeri @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotGeneric(inv, nextIndex(), 74, 31)); - addSlot(new FurnaceResultSlot(playerinv.player, inv, nextIndex(), 128, 31)); + addSlot(new SlotGeneric(inv, nextIndex(), 74, 31).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 128, 31).setIOColor(new Color(255, 0, 0, 255))); addSlot(new SlotFluid(inv, nextIndex(), 74, 51)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 14, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 34, VALID_UPGRADES)); addSlot(new SlotUpgrade(inv, nextIndex(), 153, 54, VALID_UPGRADES)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerRadioisotopeGenerator.java b/src/main/java/nuclearscience/common/inventory/container/ContainerRadioisotopeGenerator.java index 9dec3d42..801b443f 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerRadioisotopeGenerator.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerRadioisotopeGenerator.java @@ -2,15 +2,16 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; import nuclearscience.api.radiation.RadiationRegister; import nuclearscience.common.tile.TileRadioisotopeGenerator; +import nuclearscience.registers.NuclearScienceMenuTypes; public class ContainerRadioisotopeGenerator extends GenericContainerBlockEntity { @@ -19,7 +20,7 @@ public ContainerRadioisotopeGenerator(int id, Inventory playerinv) { } public ContainerRadioisotopeGenerator(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_RADIOISOTOPEGENERATOR.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_RADIOISOTOPEGENERATOR.get(), id, playerinv, inventory, inventorydata); } @Override @@ -27,8 +28,8 @@ public void addInventorySlots(Container inv, Inventory playerinv) { addSlot(new SlotRestricted(inv, nextIndex(), 25, 42) { @Override public boolean mayPlace(ItemStack stack) { - return RadiationRegister.get(stack.getItem()) != RadiationRegister.NULL; + return !RadiationRegister.get(stack.getItem()).isNull(); } - }); + }.setIOColor(new Color(0, 240, 255, 255))); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/inventory/container/ContainerReactorCore.java b/src/main/java/nuclearscience/common/inventory/container/ContainerReactorCore.java index 6dd2a530..3345d349 100644 --- a/src/main/java/nuclearscience/common/inventory/container/ContainerReactorCore.java +++ b/src/main/java/nuclearscience/common/inventory/container/ContainerReactorCore.java @@ -2,31 +2,36 @@ import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; import electrodynamics.prefab.inventory.container.slot.item.type.SlotRestricted; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import electrodynamics.prefab.utilities.math.Color; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.inventory.SimpleContainerData; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.tile.TileReactorCore; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; +import nuclearscience.prefab.screen.component.NuclearIconTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceMenuTypes; -public class ContainerReactorCore extends GenericContainerBlockEntity { +public class ContainerReactorCore extends GenericContainerBlockEntity { public ContainerReactorCore(int id, Inventory playerinv) { this(id, playerinv, new SimpleContainer(6), new SimpleContainerData(3)); } public ContainerReactorCore(int id, Inventory playerinv, Container inventory, ContainerData inventorydata) { - super(DeferredRegisters.CONTAINER_REACTORCORE.get(), id, playerinv, inventory, inventorydata); + super(NuclearScienceMenuTypes.CONTAINER_REACTORCORE.get(), id, playerinv, inventory, inventorydata); } @Override public void addInventorySlots(Container inv, Inventory playerinv) { - addSlot(new SlotRestricted(inv, nextIndex(), 80, 11, DeferredRegisters.ITEM_FUELHEUO2.get(), DeferredRegisters.ITEM_FUELLEUO2.get(), DeferredRegisters.ITEM_FUELPLUTONIUM.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 152, 11, DeferredRegisters.ITEM_FUELHEUO2.get(), DeferredRegisters.ITEM_FUELLEUO2.get(), DeferredRegisters.ITEM_FUELPLUTONIUM.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 80, 47, DeferredRegisters.ITEM_FUELHEUO2.get(), DeferredRegisters.ITEM_FUELLEUO2.get(), DeferredRegisters.ITEM_FUELPLUTONIUM.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 152, 47, DeferredRegisters.ITEM_FUELHEUO2.get(), DeferredRegisters.ITEM_FUELLEUO2.get(), DeferredRegisters.ITEM_FUELPLUTONIUM.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 116, 24, DeferredRegisters.ITEM_CELLDEUTERIUM.get())); - addSlot(new SlotRestricted(inv, nextIndex(), 116, 59, DeferredRegisters.ITEM_CELLDEUTERIUM.get())); + playerInvOffset = 10; + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 80, 21).setRestriction(NuclearScienceItems.ITEM_FUELHEUO2.get(), NuclearScienceItems.ITEM_FUELLEUO2.get(), NuclearScienceItems.ITEM_FUELPLUTONIUM.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 152, 21).setRestriction(NuclearScienceItems.ITEM_FUELHEUO2.get(), NuclearScienceItems.ITEM_FUELLEUO2.get(), NuclearScienceItems.ITEM_FUELPLUTONIUM.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 80, 57).setRestriction(NuclearScienceItems.ITEM_FUELHEUO2.get(), NuclearScienceItems.ITEM_FUELLEUO2.get(), NuclearScienceItems.ITEM_FUELPLUTONIUM.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(SlotType.NORMAL, NuclearIconTypes.FUEL_CELL_DARK, inv, nextIndex(), 152, 57).setRestriction(NuclearScienceItems.ITEM_FUELHEUO2.get(), NuclearScienceItems.ITEM_FUELLEUO2.get(), NuclearScienceItems.ITEM_FUELPLUTONIUM.get()).setIOColor(new Color(0, 255, 30, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 116, 34).setRestriction(NuclearScienceItems.ITEM_CELLDEUTERIUM.get()).setIOColor(new Color(0, 240, 255, 255))); + addSlot(new SlotRestricted(inv, nextIndex(), 116, 69).setIOColor(new Color(255, 0, 0, 255))); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemAntidote.java b/src/main/java/nuclearscience/common/item/ItemAntidote.java index ec4faf0f..51e7cdbb 100644 --- a/src/main/java/nuclearscience/common/item/ItemAntidote.java +++ b/src/main/java/nuclearscience/common/item/ItemAntidote.java @@ -49,4 +49,4 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In return ItemUtils.startUsingInstantly(worldIn, playerIn, handIn); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemCanisterLead.java b/src/main/java/nuclearscience/common/item/ItemCanisterLead.java index fd0885a5..d411700c 100644 --- a/src/main/java/nuclearscience/common/item/ItemCanisterLead.java +++ b/src/main/java/nuclearscience/common/item/ItemCanisterLead.java @@ -3,36 +3,50 @@ import java.util.ArrayList; import java.util.List; -import com.mojang.datafixers.util.Pair; - import electrodynamics.common.item.gear.tools.ItemCanister; +import electrodynamics.prefab.utilities.ItemUtils; +import electrodynamics.prefab.utilities.object.Location; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.registries.ForgeRegistries; -import nuclearscience.DeferredRegisters; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandlerItem; +import nuclearscience.api.radiation.RadiationSystem; +import nuclearscience.common.fluid.IRadioactiveFluid; +import nuclearscience.registers.NuclearScienceItems; public class ItemCanisterLead extends ItemCanister { + + public static final double RAD_RANGE = 10.0; + public static final double RAD_STRENGTH = 4.0; public static List TAG_NAMES = new ArrayList<>(); public ItemCanisterLead(Properties itemProperty) { super(itemProperty); - } + //The regular canister now emits radiation if it has radioactive fluids in it + INVENTORY_TICK_CONSUMERS.add((stack, world, entity, slot, isSelected) -> { + + if (ItemUtils.testItems(stack.getItem(), NuclearScienceItems.ITEM_CANISTERLEAD.get())) { + return; + } + + IFluidHandlerItem cap = (IFluidHandlerItem) stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY).cast().resolve().get(); + + if (cap == null) { + return; + } + + FluidStack fluidStack = cap.getFluidInTank(0); + + if (fluidStack.getFluid() instanceof IRadioactiveFluid radioactive) { + + double radiationMultiplier = (double) fluidStack.getAmount() / (double) cap.getTankCapacity(0); + + RadiationSystem.emitRadiationFromLocation(world, new Location(entity.getX(), entity.getY(), entity.getZ()), radiationMultiplier * RAD_RANGE, radiationMultiplier * RAD_STRENGTH); - @Override - public Pair, List> getWhitelistedFluids() { - ArrayList whitelist = new ArrayList<>(); - for (Fluid fluid : ForgeRegistries.FLUIDS.getValues()) { - if (fluid.getBucket() != null && DeferredRegisters.ITEM_CANISTERLEAD.get() != null && fluid.getBucket().getRegistryName().equals(DeferredRegisters.ITEM_CANISTERLEAD.get().getRegistryName())) { - whitelist.add(fluid); } - } - return Pair.of(TAG_NAMES, whitelist); - } - public static void addTag(TagKey tag) { - TAG_NAMES.add(tag.location()); + }); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemFrequencyCard.java b/src/main/java/nuclearscience/common/item/ItemFrequencyCard.java index e2d283f3..d7a3ef6a 100644 --- a/src/main/java/nuclearscience/common/item/ItemFrequencyCard.java +++ b/src/main/java/nuclearscience/common/item/ItemFrequencyCard.java @@ -5,7 +5,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; @@ -15,6 +14,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import nuclearscience.common.tile.TileTeleporter; +import nuclearscience.prefab.utils.NuclearTextUtils; public class ItemFrequencyCard extends Item { @@ -32,7 +32,7 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { tel.yCoord = nbt.getInt("yCoord"); tel.zCoord = nbt.getInt("zCoord"); tel.world = nbt.getString("world"); - context.getPlayer().sendMessage(new TranslatableComponent("tooltip.frequencycard.linked", tel.world + ", " + tel.xCoord + ", " + tel.yCoord + ", " + tel.zCoord), UUID.randomUUID()); + context.getPlayer().sendMessage(NuclearTextUtils.tooltip("frequencycard.linked", tel.world + ", " + tel.xCoord + ", " + tel.yCoord + ", " + tel.zCoord), UUID.randomUUID()); } else { nbt.putInt("xCoord", ent.getBlockPos().getX()); nbt.putInt("yCoord", ent.getBlockPos().getY()); @@ -61,9 +61,9 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool int y = nbt.getInt("yCoord"); int z = nbt.getInt("zCoord"); String world = nbt.getString("world"); - tooltip.add(new TranslatableComponent("tooltip.frequencycard.linked", world + ", " + x + ", " + y + ", " + z)); + tooltip.add(NuclearTextUtils.tooltip("frequencycard.linked", world + ", " + x + ", " + y + ", " + z)); } else { - tooltip.add(new TranslatableComponent("tooltip.frequencycard.notag")); + tooltip.add(NuclearTextUtils.tooltip("frequencycard.notag")); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemGeigerCounter.java b/src/main/java/nuclearscience/common/item/ItemGeigerCounter.java index 9eb01296..d23aafa7 100644 --- a/src/main/java/nuclearscience/common/item/ItemGeigerCounter.java +++ b/src/main/java/nuclearscience/common/item/ItemGeigerCounter.java @@ -1,7 +1,7 @@ package nuclearscience.common.item; +import electrodynamics.api.electricity.formatting.ChatFormatter; import electrodynamics.api.sound.SoundAPI; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; @@ -9,8 +9,9 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import nuclearscience.SoundRegister; import nuclearscience.api.radiation.RadiationSystem; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceSounds; public class ItemGeigerCounter extends Item { @@ -24,15 +25,15 @@ public void inventoryTick(ItemStack stack, Level worldIn, Entity entityIn, int i if (entityIn instanceof Player player) { if (!worldIn.isClientSide) { if ((isSelected || player.getItemBySlot(EquipmentSlot.OFFHAND).getItem() instanceof ItemGeigerCounter) && RadiationSystem.radiationMap.get().containsKey(entityIn)) { - player.displayClientMessage(new TranslatableComponent("message.geigercounter.text", RadiationSystem.radiationMap.get().get(entityIn)), true); + player.displayClientMessage(NuclearTextUtils.chatMessage("geigercounter.text", ChatFormatter.formatDecimals(RadiationSystem.radiationMap.get().get(entityIn), 3)), true); } } if (worldIn.isClientSide && RadiationSystem.radiationMap.get().containsKey(entityIn) && (isSelected || player.getItemBySlot(EquipmentSlot.OFFHAND).getItem() instanceof ItemGeigerCounter)) { double amount = RadiationSystem.radiationMap.get().get(entityIn); if (worldIn.random.nextFloat() * 50 * 60.995 / 3 < amount) { - SoundAPI.playSound(SoundRegister.SOUND_GEIGER.get(), SoundSource.BLOCKS, 1, 1, player.blockPosition()); + SoundAPI.playSound(NuclearScienceSounds.SOUND_GEIGER.get(), SoundSource.BLOCKS, 1, 1, player.blockPosition()); } } } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemHazmatArmor.java b/src/main/java/nuclearscience/common/item/ItemHazmatArmor.java index 3720e552..3d99eb02 100644 --- a/src/main/java/nuclearscience/common/item/ItemHazmatArmor.java +++ b/src/main/java/nuclearscience/common/item/ItemHazmatArmor.java @@ -1,7 +1,7 @@ package nuclearscience.common.item; -import electrodynamics.DeferredRegisters; import electrodynamics.common.item.subtype.SubtypePlate; +import electrodynamics.registers.ElectrodynamicsItems; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.Entity; @@ -54,7 +54,7 @@ public SoundEvent getEquipSound() { @Override public Ingredient getRepairIngredient() { - return Ingredient.of(this == hazmat ? Items.LEATHER : DeferredRegisters.SUBTYPEITEMREGISTER_MAPPINGS.get(SubtypePlate.lead).get()); + return Ingredient.of(this == hazmat ? Items.LEATHER : ElectrodynamicsItems.SUBTYPEITEMREGISTER_MAPPINGS.get(SubtypePlate.lead).get()); } @Override @@ -73,4 +73,4 @@ public float getKnockbackResistance() { } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/item/ItemRadioactive.java b/src/main/java/nuclearscience/common/item/ItemRadioactive.java index 96ed4b52..e1be8943 100644 --- a/src/main/java/nuclearscience/common/item/ItemRadioactive.java +++ b/src/main/java/nuclearscience/common/item/ItemRadioactive.java @@ -35,4 +35,4 @@ public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemS RadiationSystem.emitRadiationFromLocation(world, new Location(entity), range, totstrength); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/network/MoltenSaltNetwork.java b/src/main/java/nuclearscience/common/network/MoltenSaltNetwork.java index e4ea1289..220c5625 100644 --- a/src/main/java/nuclearscience/common/network/MoltenSaltNetwork.java +++ b/src/main/java/nuclearscience/common/network/MoltenSaltNetwork.java @@ -13,7 +13,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import nuclearscience.api.network.moltensalt.IMoltenSaltPipe; import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; -import nuclearscience.common.tile.TileHeatExchanger; +import nuclearscience.common.tile.msreactor.TileHeatExchanger; public class MoltenSaltNetwork extends AbstractNetwork { public MoltenSaltNetwork() { @@ -49,52 +49,64 @@ public MoltenSaltNetwork(Set networks, boolean special) { @Override public Double emit(Double transfer, ArrayList ignored, boolean debug) { - if (transfer > 0) { - Set availableAcceptors = Sets.newHashSet(acceptorSet); - double heat = 0.0; - availableAcceptors.removeAll(ignored); - if (!availableAcceptors.isEmpty()) { - double perReceiver = transfer / availableAcceptors.size(); - for (BlockEntity receiver : availableAcceptors) { - if (acceptorInputMap.containsKey(receiver)) { - Double rec = ((TileHeatExchanger) receiver).receiveHeat(perReceiver - getSize() * 5); - heat += rec; - transmittedThisTick += rec; - checkForOverload((int) transmittedThisTick); - } - } + if (transfer <= 0) { + return 0.0; + } + Set availableAcceptors = Sets.newHashSet(acceptorSet); + + double heat = 0.0; + + availableAcceptors.removeAll(ignored); + + if (availableAcceptors.isEmpty()) { + return 0.0; + } + + double perReceiver = transfer / availableAcceptors.size(); + for (BlockEntity receiver : availableAcceptors) { + if (acceptorInputMap.containsKey(receiver)) { + Double rec = ((TileHeatExchanger) receiver).receiveHeat(perReceiver - getSize() * 5); + heat += rec; + transmittedThisTick += rec; + checkForOverload((int) transmittedThisTick); } - return heat; } - return 0.0; + + return heat; } private boolean checkForOverload(int attemptSend) { - if (attemptSend >= networkMaxTransfer) { - HashSet checkList = new HashSet<>(); - for (SubtypeMoltenSaltPipe type : SubtypeMoltenSaltPipe.values()) { - if (type.maxTransfer <= attemptSend) { - checkList.add(type); - } + if (attemptSend <= networkMaxTransfer) { + return false; + } + + HashSet checkList = new HashSet<>(); + for (SubtypeMoltenSaltPipe type : SubtypeMoltenSaltPipe.values()) { + if (type.maxTransfer <= attemptSend) { + checkList.add(type); } - for (SubtypeMoltenSaltPipe index : checkList) { - for (IMoltenSaltPipe conductor : conductorTypeMap.get(index)) { - conductor.destroyViolently(); - } + } + for (SubtypeMoltenSaltPipe index : checkList) { + for (IMoltenSaltPipe conductor : conductorTypeMap.get(index)) { + conductor.destroyViolently(); } - return true; } - return false; + return true; } @Override - public boolean isConductor(BlockEntity tile) { + public boolean isConductor(BlockEntity tile, IMoltenSaltPipe requesterCable) { return tile instanceof IMoltenSaltPipe; } @Override public boolean isAcceptor(BlockEntity acceptor, Direction orientation) { - return acceptor instanceof TileHeatExchanger || isConductor(acceptor); + return acceptor instanceof TileHeatExchanger || isConductorClass(acceptor); + } + + @Override + public boolean isConductorClass(BlockEntity tile) { + return tile instanceof IMoltenSaltPipe; } @Override @@ -120,6 +132,6 @@ public SubtypeMoltenSaltPipe[] getConductorTypes() { @Override public boolean canConnect(BlockEntity acceptor, Direction orientation) { - return acceptor instanceof TileHeatExchanger && orientation == Direction.UP || isConductor(acceptor); + return acceptor instanceof TileHeatExchanger && orientation == Direction.UP || isConductorClass(acceptor); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/packet/NetworkHandler.java b/src/main/java/nuclearscience/common/packet/NetworkHandler.java index 35143ddd..582bb04e 100644 --- a/src/main/java/nuclearscience/common/packet/NetworkHandler.java +++ b/src/main/java/nuclearscience/common/packet/NetworkHandler.java @@ -7,6 +7,8 @@ import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import nuclearscience.References; +import nuclearscience.common.packet.type.client.PacketSetClientAtomicAssemblerBlacklistVals; +import nuclearscience.common.packet.type.client.PacketSetClientRadRegisterItemVals; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; @@ -14,6 +16,7 @@ public class NetworkHandler { public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(References.ID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); public static void init() { - CHANNEL.registerMessage(disc++, PacketSetQuantumCapacitorData.class, PacketSetQuantumCapacitorData::encode, PacketSetQuantumCapacitorData::decode, PacketSetQuantumCapacitorData::handle, Optional.of(NetworkDirection.PLAY_TO_SERVER)); + CHANNEL.registerMessage(disc++, PacketSetClientAtomicAssemblerBlacklistVals.class, PacketSetClientAtomicAssemblerBlacklistVals::encode, PacketSetClientAtomicAssemblerBlacklistVals::decode, PacketSetClientAtomicAssemblerBlacklistVals::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); + CHANNEL.registerMessage(disc++, PacketSetClientRadRegisterItemVals.class, PacketSetClientRadRegisterItemVals::encode, PacketSetClientRadRegisterItemVals::decode, PacketSetClientRadRegisterItemVals::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/packet/PacketSetQuantumCapacitorData.java b/src/main/java/nuclearscience/common/packet/PacketSetQuantumCapacitorData.java deleted file mode 100644 index c43fe028..00000000 --- a/src/main/java/nuclearscience/common/packet/PacketSetQuantumCapacitorData.java +++ /dev/null @@ -1,47 +0,0 @@ -package nuclearscience.common.packet; - -import java.util.function.Supplier; - -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerLevel; -import net.minecraftforge.network.NetworkEvent.Context; -import nuclearscience.common.tile.TileQuantumCapacitor; - -public class PacketSetQuantumCapacitorData { - - private final double outputJoules; - private final int frequency; - private final BlockPos pos; - - public PacketSetQuantumCapacitorData(BlockPos pos, double outputJoules, int frequency) { - this.pos = pos; - this.outputJoules = outputJoules; - this.frequency = frequency; - } - - public static void handle(PacketSetQuantumCapacitorData message, Supplier context) { - Context ctx = context.get(); - ctx.enqueueWork(() -> { - ServerLevel world = context.get().getSender().getLevel(); - if (world != null) { - TileQuantumCapacitor tile = (TileQuantumCapacitor) world.getBlockEntity(message.pos); - if (tile != null) { - tile.outputJoules = message.outputJoules; - tile.frequency = message.frequency; - } - } - }); - ctx.setPacketHandled(true); - } - - public static void encode(PacketSetQuantumCapacitorData pkt, FriendlyByteBuf buf) { - buf.writeBlockPos(pkt.pos); - buf.writeDouble(pkt.outputJoules); - buf.writeInt(pkt.frequency); - } - - public static PacketSetQuantumCapacitorData decode(FriendlyByteBuf buf) { - return new PacketSetQuantumCapacitorData(buf.readBlockPos(), buf.readDouble(), buf.readInt()); - } -} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientAtomicAssemblerBlacklistVals.java b/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientAtomicAssemblerBlacklistVals.java new file mode 100644 index 00000000..cc3a125a --- /dev/null +++ b/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientAtomicAssemblerBlacklistVals.java @@ -0,0 +1,48 @@ +package nuclearscience.common.packet.type.client; + +import java.util.HashSet; +import java.util.function.Supplier; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent.Context; +import nuclearscience.common.reloadlistener.AtomicAssemblerBlacklistRegister; + +public class PacketSetClientAtomicAssemblerBlacklistVals { + + private final HashSet items; + + public PacketSetClientAtomicAssemblerBlacklistVals(HashSet items) { + this.items = items; + } + + public static void handle(PacketSetClientAtomicAssemblerBlacklistVals message, Supplier context) { + Context ctx = context.get(); + ctx.enqueueWork(() -> { + + message.items.forEach(item -> { + AtomicAssemblerBlacklistRegister.INSTANCE.setClientValues(message.items); + }); + + }); + ctx.setPacketHandled(true); + } + + public static void encode(PacketSetClientAtomicAssemblerBlacklistVals pkt, FriendlyByteBuf buf) { + buf.writeInt(pkt.items.size()); + pkt.items.forEach(item -> { + buf.writeItem(new ItemStack(item)); + }); + } + + public static PacketSetClientAtomicAssemblerBlacklistVals decode(FriendlyByteBuf buf) { + int count = buf.readInt(); + HashSet items = new HashSet<>(); + for (int i = 0; i < count; i++) { + items.add(buf.readItem().getItem()); + } + return new PacketSetClientAtomicAssemblerBlacklistVals(items); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientRadRegisterItemVals.java b/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientRadRegisterItemVals.java new file mode 100644 index 00000000..3aeff457 --- /dev/null +++ b/src/main/java/nuclearscience/common/packet/type/client/PacketSetClientRadRegisterItemVals.java @@ -0,0 +1,50 @@ +package nuclearscience.common.packet.type.client; + +import java.util.HashMap; +import java.util.function.Supplier; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent.Context; +import nuclearscience.api.radiation.FieldRadioactiveObject; +import nuclearscience.api.radiation.RadiationRegister; + +public class PacketSetClientRadRegisterItemVals { + + private final HashMap items; + + public PacketSetClientRadRegisterItemVals(HashMap items) { + this.items = items; + } + + public static void handle(PacketSetClientRadRegisterItemVals message, Supplier context) { + Context ctx = context.get(); + ctx.enqueueWork(() -> { + + message.items.forEach((item, value) -> { + RadiationRegister.register(item, new FieldRadioactiveObject(value)); + }); + + }); + ctx.setPacketHandled(true); + } + + public static void encode(PacketSetClientRadRegisterItemVals pkt, FriendlyByteBuf buf) { + buf.writeInt(pkt.items.size()); + pkt.items.forEach((item, value) -> { + buf.writeItem(new ItemStack(item)); + buf.writeDouble(value); + }); + } + + public static PacketSetClientRadRegisterItemVals decode(FriendlyByteBuf buf) { + int count = buf.readInt(); + HashMap items = new HashMap<>(); + for (int i = 0; i < count; i++) { + items.put(buf.readItem().getItem(), buf.readDouble()); + } + return new PacketSetClientRadRegisterItemVals(items); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2fluid/specificmachines/NuclearBoilerRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2fluid/specificmachines/NuclearBoilerRecipe.java index 248a9d24..a52be386 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2fluid/specificmachines/NuclearBoilerRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2fluid/specificmachines/NuclearBoilerRecipe.java @@ -3,6 +3,8 @@ import electrodynamics.common.recipe.categories.fluiditem2fluid.FluidItem2FluidRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; import electrodynamics.common.recipe.recipeutils.FluidIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; +import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; @@ -15,8 +17,8 @@ public class NuclearBoilerRecipe extends FluidItem2FluidRecipe { public static final String MOD_ID = electrodynamics.api.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public NuclearBoilerRecipe(ResourceLocation recipeID, CountableIngredient[] inputItems, FluidIngredient[] inputFluids, FluidStack outputFluid, double experience) { - super(recipeID, inputItems, inputFluids, outputFluid, experience); + public NuclearBoilerRecipe(ResourceLocation recipeID, CountableIngredient[] inputItems, FluidIngredient[] inputFluids, FluidStack outputFluid, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(recipeID, inputItems, inputFluids, outputFluid, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override diff --git a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/ChemicalExtractorRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/ChemicalExtractorRecipe.java index 6f064f1c..ea2ac97c 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/ChemicalExtractorRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/ChemicalExtractorRecipe.java @@ -3,6 +3,8 @@ import electrodynamics.common.recipe.categories.fluiditem2item.FluidItem2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; import electrodynamics.common.recipe.recipeutils.FluidIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; +import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; @@ -15,8 +17,8 @@ public class ChemicalExtractorRecipe extends FluidItem2ItemRecipe { public static final String MOD_ID = electrodynamics.api.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public ChemicalExtractorRecipe(ResourceLocation recipeID, CountableIngredient[] itemInputs, FluidIngredient[] fluidInputs, ItemStack itemOutput, double experience) { - super(recipeID, itemInputs, fluidInputs, itemOutput, experience); + public ChemicalExtractorRecipe(ResourceLocation recipeID, CountableIngredient[] itemInputs, FluidIngredient[] fluidInputs, ItemStack itemOutput, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(recipeID, itemInputs, fluidInputs, itemOutput, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override diff --git a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/MSRFuelPreProcessorRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/MSRFuelPreProcessorRecipe.java index 03ad8f56..1e273536 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/MSRFuelPreProcessorRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/MSRFuelPreProcessorRecipe.java @@ -3,6 +3,8 @@ import electrodynamics.common.recipe.categories.fluiditem2item.FluidItem2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; import electrodynamics.common.recipe.recipeutils.FluidIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; +import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; @@ -15,8 +17,8 @@ public class MSRFuelPreProcessorRecipe extends FluidItem2ItemRecipe { public static final String MOD_ID = nuclearscience.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public MSRFuelPreProcessorRecipe(ResourceLocation location, CountableIngredient[] inputItems, FluidIngredient[] inputFluids, ItemStack outputItem, double experience) { - super(location, inputItems, inputFluids, outputItem, experience); + public MSRFuelPreProcessorRecipe(ResourceLocation location, CountableIngredient[] inputItems, FluidIngredient[] inputFluids, ItemStack outputItem, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(location, inputItems, inputFluids, outputItem, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override @@ -28,4 +30,4 @@ public RecipeSerializer getSerializer() { public RecipeType getType() { return NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_TYPE.get(); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/RadioactiveProcessorRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/RadioactiveProcessorRecipe.java index 42852816..1465e8b4 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/RadioactiveProcessorRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/fluiditem2item/specificmachines/RadioactiveProcessorRecipe.java @@ -3,20 +3,23 @@ import electrodynamics.common.recipe.categories.fluiditem2item.FluidItem2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; import electrodynamics.common.recipe.recipeutils.FluidIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; +import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import nuclearscience.common.recipe.NuclearScienceRecipeInit; + public class RadioactiveProcessorRecipe extends FluidItem2ItemRecipe { public static final String RECIPE_GROUP = "radioactive_processor_recipe"; public static final String MOD_ID = nuclearscience.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public RadioactiveProcessorRecipe(ResourceLocation recipeID, CountableIngredient[] itemInputs, FluidIngredient[] fluidInputs, ItemStack itemOutput, double experience) { - super(recipeID, itemInputs, fluidInputs, itemOutput, experience); + public RadioactiveProcessorRecipe(ResourceLocation recipeID, CountableIngredient[] itemInputs, FluidIngredient[] fluidInputs, ItemStack itemOutput, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(recipeID, itemInputs, fluidInputs, itemOutput, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override diff --git a/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FissionReactorRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FissionReactorRecipe.java index 987191e7..4c82dff0 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FissionReactorRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FissionReactorRecipe.java @@ -2,20 +2,23 @@ import electrodynamics.common.recipe.categories.item2item.Item2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; +import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import nuclearscience.common.recipe.NuclearScienceRecipeInit; + public class FissionReactorRecipe extends Item2ItemRecipe { public static final String RECIPE_GROUP = "fission_reactor_recipe"; public static final String MOD_ID = nuclearscience.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public FissionReactorRecipe(ResourceLocation id, CountableIngredient[] inputs, ItemStack output, double experience) { - super(id, inputs, output, experience); + public FissionReactorRecipe(ResourceLocation id, CountableIngredient[] inputs, ItemStack output, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(id, inputs, output, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override diff --git a/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FuelReprocessorRecipe.java b/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FuelReprocessorRecipe.java index d48f0973..1d3b2e50 100644 --- a/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FuelReprocessorRecipe.java +++ b/src/main/java/nuclearscience/common/recipe/categories/item2item/specificmachines/FuelReprocessorRecipe.java @@ -2,6 +2,7 @@ import electrodynamics.common.recipe.categories.item2item.Item2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; +import electrodynamics.common.recipe.recipeutils.ProbableFluid; import electrodynamics.common.recipe.recipeutils.ProbableItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -9,18 +10,15 @@ import net.minecraft.world.item.crafting.RecipeType; import nuclearscience.common.recipe.NuclearScienceRecipeInit; + public class FuelReprocessorRecipe extends Item2ItemRecipe { public static final String RECIPE_GROUP = "fuel_reprocessor_recipe"; public static final String MOD_ID = nuclearscience.References.ID; public static final ResourceLocation RECIPE_ID = new ResourceLocation(MOD_ID, RECIPE_GROUP); - public FuelReprocessorRecipe(ResourceLocation id, CountableIngredient[] inputs, ItemStack output, double experience) { - super(id, inputs, output, experience); - } - - public FuelReprocessorRecipe(ResourceLocation id, CountableIngredient[] input, ItemStack output, ProbableItem[] itemBiproducts, double experience) { - super(id, input, output, itemBiproducts, experience); + public FuelReprocessorRecipe(ResourceLocation id, CountableIngredient[] inputs, ItemStack output, double experience, int ticks, double usagePerTick, ProbableItem[] itemBiproducts, ProbableFluid[] fluidBiproudcts) { + super(id, inputs, output, experience, ticks, usagePerTick, itemBiproducts, fluidBiproudcts); } @Override diff --git a/src/main/java/nuclearscience/common/reloadlistener/AtomicAssemblerBlacklistRegister.java b/src/main/java/nuclearscience/common/reloadlistener/AtomicAssemblerBlacklistRegister.java new file mode 100644 index 00000000..7e002de6 --- /dev/null +++ b/src/main/java/nuclearscience/common/reloadlistener/AtomicAssemblerBlacklistRegister.java @@ -0,0 +1,170 @@ +package nuclearscience.common.reloadlistener; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.function.Consumer; + +import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.Logger; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import electrodynamics.Electrodynamics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.SimplePreparableReloadListener; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.OnDatapackSyncEvent; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PacketDistributor.PacketTarget; +import net.minecraftforge.network.simple.SimpleChannel; +import net.minecraftforge.registries.ForgeRegistries; +import nuclearscience.common.packet.type.client.PacketSetClientAtomicAssemblerBlacklistVals; + +public class AtomicAssemblerBlacklistRegister extends SimplePreparableReloadListener { + + public static AtomicAssemblerBlacklistRegister INSTANCE = null; + + public static final String KEY = "values"; + public static final String FOLDER = "machines"; + public static final String FILE_NAME = "atomic_assembler_blacklist"; + + protected static final String JSON_EXTENSION = ".json"; + protected static final int JSON_EXTENSION_LENGTH = JSON_EXTENSION.length(); + + private static final Gson GSON = new Gson(); + + private final HashSet blacklistedItems = new HashSet<>(); + + private final HashSet> tags = new HashSet<>(); + + private final Logger logger = Electrodynamics.LOGGER; + + @Override + protected JsonObject prepare(ResourceManager manager, ProfilerFiller profiler) { + JsonObject blacklistedItems = new JsonObject(); + + List resources = new ArrayList<>(manager.listResources(FOLDER, AtomicAssemblerBlacklistRegister::isStringJsonFile)); + + Collections.reverse(resources); + + JsonArray combinedArray = new JsonArray(); + + for (ResourceLocation entry : resources) { + + final String namespace = entry.getNamespace(); + final String filePath = entry.getPath(); + final String dataPath = filePath.substring(FOLDER.length() + 1, filePath.length() - JSON_EXTENSION_LENGTH); + + final ResourceLocation jsonFile = new ResourceLocation(namespace, dataPath); + + try { + + for (Resource resource : manager.getResources(jsonFile)) { + + try (final InputStream inputStream = resource.getInputStream(); final Reader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));) { + + final JsonObject json = (JsonObject) GsonHelper.fromJson(GSON, reader, JsonElement.class); + combinedArray.addAll(json.get(KEY).getAsJsonArray()); + + } catch (RuntimeException | IOException exception) { + + logger.error("Data loader for {} could not read data {} from file {} in data pack {}", FOLDER, jsonFile, entry, resource.getLocation(), exception); + + } finally { + + IOUtils.closeQuietly(resource); + + } + + } + + } catch (IOException exception) { + + this.logger.error("Data loader for {} could not read data {} from file {}", FOLDER, jsonFile, entry, exception); + + } + + } + + blacklistedItems.add(KEY, combinedArray); + + return blacklistedItems; + } + + @Override + protected void apply(JsonObject json, ResourceManager manager, ProfilerFiller profiler) { + blacklistedItems.clear(); + tags.clear(); + ArrayList list = GSON.fromJson(json.get(KEY).getAsJsonArray(), ArrayList.class); + list.forEach(key -> { + if (key.charAt(0) == '#') { + tags.add(ItemTags.create(new ResourceLocation(key.substring(1)))); + } else { + blacklistedItems.add(ForgeRegistries.ITEMS.getValue(new ResourceLocation(key))); + } + }); + + } + + public void generateTagValues() { + tags.forEach(tag -> { + for (ItemStack item : Ingredient.of(tag).getItems()) { + blacklistedItems.add(item.getItem()); + } + }); + tags.clear(); + } + + public void setClientValues(HashSet fuels) { + this.blacklistedItems.clear(); + this.blacklistedItems.addAll(fuels); + } + + public AtomicAssemblerBlacklistRegister subscribeAsSyncable(final SimpleChannel channel) { + MinecraftForge.EVENT_BUS.addListener(getDatapackSyncListener(channel)); + return this; + } + + public HashSet getBlacklist() { + return blacklistedItems; + } + + public boolean isBlacklisted(Item item) { + return blacklistedItems.contains(item); + } + + private Consumer getDatapackSyncListener(final SimpleChannel channel) { + return event -> { + generateTagValues(); + ServerPlayer player = event.getPlayer(); + PacketSetClientAtomicAssemblerBlacklistVals packet = new PacketSetClientAtomicAssemblerBlacklistVals(blacklistedItems); + PacketTarget target = player == null ? PacketDistributor.ALL.noArg() : PacketDistributor.PLAYER.with(() -> player); + channel.send(target, packet); + }; + } + + private static boolean isStringJsonFile(final String filename) { + return filename.endsWith(FILE_NAME + JSON_EXTENSION); + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/reloadlistener/RadioactiveItemLoader.java b/src/main/java/nuclearscience/common/reloadlistener/RadioactiveItemLoader.java new file mode 100644 index 00000000..f04f5f92 --- /dev/null +++ b/src/main/java/nuclearscience/common/reloadlistener/RadioactiveItemLoader.java @@ -0,0 +1,180 @@ +package nuclearscience.common.reloadlistener; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.function.Consumer; + +import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.Logger; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import electrodynamics.Electrodynamics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.SimplePreparableReloadListener; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.item.Item; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.OnDatapackSyncEvent; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PacketDistributor.PacketTarget; +import net.minecraftforge.network.simple.SimpleChannel; +import net.minecraftforge.registries.ForgeRegistries; +import nuclearscience.api.radiation.FieldRadioactiveObject; +import nuclearscience.api.radiation.RadiationRegister; +import nuclearscience.api.radiation.RadiationRegister.RadioactiveSource; +import nuclearscience.common.packet.type.client.PacketSetClientRadRegisterItemVals; + +public class RadioactiveItemLoader extends SimplePreparableReloadListener { + + public static RadioactiveItemLoader INSTANCE = null; + + public static final String FOLDER = "radiation"; + public static final String FILE_NAME = "radioactive_items"; + + protected static final String JSON_EXTENSION = ".json"; + protected static final int JSON_EXTENSION_LENGTH = JSON_EXTENSION.length(); + + private static final Gson GSON = new Gson(); + + private final HashMap, Double> tags = new HashMap<>(); + + private final Logger logger = Electrodynamics.LOGGER; + + @Override + protected JsonObject prepare(ResourceManager manager, ProfilerFiller profiler) { + JsonObject combined = new JsonObject(); + + List resources = new ArrayList<>(manager.listResources(FOLDER, RadioactiveItemLoader::isStringJsonFile)); + + Collections.reverse(resources); + + for (ResourceLocation entry : resources) { + final String namespace = entry.getNamespace(); + final String filePath = entry.getPath(); + final String dataPath = filePath.substring(FOLDER.length() + 1, filePath.length() - JSON_EXTENSION_LENGTH); + + final ResourceLocation jsonFile = new ResourceLocation(namespace, dataPath); + + try { + + for (Resource resource : manager.getResources(entry)) { + + try (final InputStream inputStream = resource.getInputStream(); final Reader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));) { + + final JsonObject json = (JsonObject) GsonHelper.fromJson(GSON, reader, JsonElement.class); + + json.entrySet().forEach(set -> { + + if (combined.has(set.getKey())) { + combined.remove(set.getKey()); + } + + combined.add(set.getKey(), set.getValue()); + }); + + } catch (RuntimeException | IOException exception) { + + logger.error("Data loader for {} could not read data {} from file {} in data pack {}", FOLDER, jsonFile, entry, resource.getSourceName(), exception); + + } finally { + + IOUtils.closeQuietly(resource); + + } + + } + + } catch (IOException exception) { + + this.logger.error("Data loader for {} could not read data {} from file {}", FOLDER, jsonFile, entry, exception); + + } + + } + + return combined; + } + + @Override + protected void apply(JsonObject json, ResourceManager manager, ProfilerFiller profiler) { + tags.clear(); + + json.entrySet().forEach(set -> { + + String key = set.getKey(); + Double value = set.getValue().getAsDouble(); + + if (key.contains("#")) { + + key = key.substring(1); + + tags.put(ItemTags.create(new ResourceLocation(key)), value); + + } else { + + RadiationRegister.register(ForgeRegistries.ITEMS.getValue(new ResourceLocation(key)), new FieldRadioactiveObject(value)); + + } + + }); + + } + + public void generateTagValues() { + + tags.forEach((tag, value) -> { + ForgeRegistries.ITEMS.tags().getTag(tag).forEach(item -> { + + if (RadiationRegister.get(item).isNull()) { + RadiationRegister.register(item, new FieldRadioactiveObject(value)); + } + + }); + }); + + tags.clear(); + } + + public RadioactiveItemLoader subscribeAsSyncable(final SimpleChannel channel) { + MinecraftForge.EVENT_BUS.addListener(getDatapackSyncListener(channel)); + return this; + } + + private Consumer getDatapackSyncListener(final SimpleChannel channel) { + return event -> { + generateTagValues(); + ServerPlayer player = event.getPlayer(); + HashMap items = new HashMap<>(); + RadiationRegister.getMapForType(RadioactiveSource.ITEM).forEach((item, radSource) -> { + + items.put((Item) item, radSource.getRadiationStrength()); + + }); + PacketSetClientRadRegisterItemVals packet = new PacketSetClientRadRegisterItemVals(items); + PacketTarget target = player == null ? PacketDistributor.ALL.noArg() : PacketDistributor.PLAYER.with(() -> player); + channel.send(target, packet); + }; + } + + private static boolean isStringJsonFile(final String filename) { + return filename.endsWith(FILE_NAME + JSON_EXTENSION); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/settings/Constants.java b/src/main/java/nuclearscience/common/settings/Constants.java index f08a5dfc..935edbd8 100644 --- a/src/main/java/nuclearscience/common/settings/Constants.java +++ b/src/main/java/nuclearscience/common/settings/Constants.java @@ -25,32 +25,12 @@ public class Constants { public static int FUSIONREACTOR_MAXSTORAGE = 1024; @IntValue(def = 2500) public static int REACTOR_RADIATION_PER_FUEL = 2500; - @DoubleValue(def = 750) - public static double CHEMICALBOILER_USAGE_PER_TICK = 750.0; - @IntValue(def = 800) - public static int CHEMICALBOILER_REQUIRED_TICKS = 800; - @DoubleValue(def = 750) - public static double CHEMICALEXTRACTOR_USAGE_PER_TICK = 750.0; - @IntValue(def = 400) - public static int CHEMICALEXTRACTOR_REQUIRED_TICKS = 400; @DoubleValue(def = 1500) public static double GASCENTRIFUGE_USAGE_PER_TICK = 1500.0; @IntValue(def = 20) public static int GASCENTRIFUGE_REQUIRED_TICKS_PER_PROCESSING = 20; @DoubleValue(def = 1200.0) - public static double MSRFUELPREPROCESSOR_USAGE_PER_TICK = 1200.0; - @IntValue(def = 200) - public static int MSRFUELPREPROCESSOR_REQUIRED_TICKS = 200; - @DoubleValue(def = 1200.0) public static double FREEZEPLUG_USAGE_PER_TICK = 200.0; - @IntValue(def = 480) - public static int FUELREPROCESSOR_USAGE_PER_TICK = 480; - @DoubleValue(def = 200.0) - public static double FUELREPROCESSOR_REQUIRED_TICKS = 200.0; - @IntValue(def = 480) - public static int RADIOACTIVEPROCESSOR_USAGE_PER_TICK = 480; - @DoubleValue(def = 300.0) - public static double RADIOACTIVEPROCESSOR_REQUIRED_TICKS = 300.0; @DoubleValue(def = 120.0) public static double MOLTENSALTSUPPLIER_VOLTAGE = 120.0; @DoubleValue(def = 200.0) @@ -62,4 +42,4 @@ public class Constants { @IntValue(def = 1200) public static int ATOMICASSEMBLER_REQUIRED_TICKS = 12000; -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tab/ItemGroupNuclearScience.java b/src/main/java/nuclearscience/common/tab/ItemGroupNuclearScience.java index bb1abd08..8599307e 100644 --- a/src/main/java/nuclearscience/common/tab/ItemGroupNuclearScience.java +++ b/src/main/java/nuclearscience/common/tab/ItemGroupNuclearScience.java @@ -2,7 +2,7 @@ import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; +import nuclearscience.registers.NuclearScienceBlocks; public class ItemGroupNuclearScience extends CreativeModeTab { @@ -12,6 +12,6 @@ public ItemGroupNuclearScience(String label) { @Override public ItemStack makeIcon() { - return new ItemStack(DeferredRegisters.blockGasCentrifuge); + return new ItemStack(NuclearScienceBlocks.blockGasCentrifuge); } } \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tags/NuclearScienceTags.java b/src/main/java/nuclearscience/common/tags/NuclearScienceTags.java index 892ec650..4cebb088 100644 --- a/src/main/java/nuclearscience/common/tags/NuclearScienceTags.java +++ b/src/main/java/nuclearscience/common/tags/NuclearScienceTags.java @@ -1,27 +1,64 @@ package nuclearscience.common.tags; -import java.util.ArrayList; -import java.util.List; - -import electrodynamics.common.item.gear.tools.ItemCanister; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.FluidTags; +import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.level.material.Fluid; import nuclearscience.common.fluid.types.FluidAmmonia; import nuclearscience.common.fluid.types.FluidUraniumHexafluoride; -import nuclearscience.common.item.ItemCanisterLead; public class NuclearScienceTags { - public static List> FLUID_TAGS = new ArrayList<>(); - public static void init() { Fluids.init(); + Items.init(); } - public static List> getFluidTags() { - return FLUID_TAGS; + public static class Items { + + public static final TagKey CELL_EMPTY = forgeTag("cells/empty"); + public static final TagKey CELL_HEAVYWATER = forgeTag("cells/heavywater"); + public static final TagKey CELL_DEUTERIUM = forgeTag("cells/deuterium"); + public static final TagKey CELL_TRITIUM = forgeTag("cells/tritium"); + public static final TagKey CELL_ANTIMATTER_SMALL = forgeTag("cells/anti_matter_small"); + public static final TagKey CELL_ANTIMATTER_LARGE = forgeTag("cells/anti_matter_large"); + public static final TagKey CELL_ANTIMATTER_VERY_LARGE = forgeTag("cells/anti_matter_very_large"); + public static final TagKey CELL_DARK_MATTER = forgeTag("cells/dark_matter"); + + public static final TagKey FUELROD_URANIUM_LOW_EN = forgeTag("fuel_rods/leuo2"); + public static final TagKey FUELROD_URANIUM_HIGH_EN = forgeTag("fuel_rods/heuo2"); + public static final TagKey FUELROD_PLUTONIUM = forgeTag("fuel_rods/plutonium"); + public static final TagKey FUELROD_SPENT = forgeTag("fuel_rods/spent"); + + public static final TagKey DUST_THORIUM = forgeTag("dusts/thorium"); + public static final TagKey DUST_FISSILE = forgeTag("dusts/fissile"); + + public static final TagKey SALT_FISSILE = forgeTag("salts/fissile"); + + public static final TagKey OXIDE_PLUTONIUM = forgeTag("oxide/plutonium"); + public static final TagKey OXIDE_ACTINIUM = forgeTag("oxide/actinium"); + + public static final TagKey NUGGET_POLONIUM = forgeTag("nuggets/polonium"); + + public static final TagKey PELLET_URANIUM235 = forgeTag("pellets/uranium235"); + public static final TagKey PELLET_URANIUM238 = forgeTag("pellets/uranium238"); + public static final TagKey PELLET_PLUTONIUM = forgeTag("pellets/plutonium"); + public static final TagKey PELLET_POLONIUM = forgeTag("pellets/polonium"); + public static final TagKey PELLET_LIFHT4PUF3 = forgeTag("pellets/lifht4puf3"); + public static final TagKey PELLET_FLINAK = forgeTag("pellets/flinak"); + public static final TagKey PELLET_ACTINIUM225 = forgeTag("pellets/actinium225"); + + public static final TagKey YELLOW_CAKE = forgeTag("yellow_cake_uranium"); + + private static void init() { + } + + private static TagKey forgeTag(String name) { + return ItemTags.create(new ResourceLocation("forge", name)); + } + } public static class Fluids { @@ -30,16 +67,12 @@ public static class Fluids { public static final TagKey AMMONIA = forgeTag(FluidAmmonia.FORGE_TAG); private static void init() { - FLUID_TAGS.add(URANIUM_HEXAFLUORIDE); - FLUID_TAGS.add(AMMONIA); - - ItemCanister.addTag(AMMONIA); - - ItemCanisterLead.addTag(URANIUM_HEXAFLUORIDE); + } private static TagKey forgeTag(String name) { return FluidTags.create(new ResourceLocation("forge", name)); } } -} + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileAtomicAssembler.java b/src/main/java/nuclearscience/common/tile/TileAtomicAssembler.java index 8ffe0cc4..f0c9e69a 100644 --- a/src/main/java/nuclearscience/common/tile/TileAtomicAssembler.java +++ b/src/main/java/nuclearscience/common/tile/TileAtomicAssembler.java @@ -1,101 +1,143 @@ package nuclearscience.common.tile; -import electrodynamics.api.item.ItemUtils; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.ItemUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.ShulkerBoxBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.items.CapabilityItemHandler; -import nuclearscience.DeferredRegisters; import nuclearscience.common.inventory.container.ContainerAtomicAssembler; +import nuclearscience.common.reloadlistener.AtomicAssemblerBlacklistRegister; import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; public class TileAtomicAssembler extends GenericTile { - public int progress = 0; + + public final Property progress = property(new Property<>(PropertyType.Integer, "progress", 0)); public TileAtomicAssembler(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_ATOMICASSEMBLER.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickCommon(this::tickCommon)); - addComponent(new ComponentPacketHandler().guiPacketWriter(this::writeGuiPacket).guiPacketReader(this::readGuiPacket)); - addComponent(new ComponentElectrodynamic(this).maxJoules(Constants.ATOMICASSEMBLER_USAGE_PER_TICK * 20).voltage(Constants.ATOMICASSEMBLER_VOLTAGE).input(Direction.DOWN)); + super(NuclearScienceBlockTypes.TILE_ATOMICASSEMBLER.get(), pos, state); + + addComponent(new ComponentTickable(this).tickCommon(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).maxJoules(Constants.ATOMICASSEMBLER_USAGE_PER_TICK * 20).voltage(Constants.ATOMICASSEMBLER_VOLTAGE).setInputDirections(Direction.DOWN)); // The slot == 6 has to be there to allow items into the input slot. - addComponent(new ComponentInventory(this).size(8).faceSlots(Direction.UP, 0, 1, 2, 3, 4, 5, 6).slotFaces(6, Direction.DOWN, Direction.WEST, Direction.SOUTH, Direction.NORTH, Direction.EAST).valid((slot, stack, i) -> slot == 6 || slot < 6 && stack.is(DeferredRegisters.ITEM_CELLDARKMATTER.get())).shouldSendInfo()); - addComponent(new ComponentContainerProvider("container.atomicassembler").createMenu((id, player) -> new ContainerAtomicAssembler(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(7).outputs(1)).setSlotsByDirection(Direction.UP, 0, 1, 2, 3, 4, 5).setDirectionsBySlot(6, Direction.EAST, Direction.SOUTH).setDirectionsBySlot(7, Direction.WEST, Direction.NORTH).valid((slot, stack, i) -> slot == 6 || slot < 6 && stack.is(NuclearScienceItems.ITEM_CELLDARKMATTER.get()))); + addComponent(new ComponentContainerProvider("container.atomicassembler", this).createMenu((id, player) -> new ContainerAtomicAssembler(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } - private void tickCommon(ComponentTickable tickable) { - ComponentInventory inv = getComponent(ComponentType.Inventory); - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); + private void tickServer(ComponentTickable tickable) { + + ComponentInventory inv = getComponent(IComponentType.Inventory); + ItemStack input = inv.getItem(6); + + if (input.isEmpty()) { + progress.set(0); + return; + } + ItemStack output = inv.getItem(7); - boolean validItem = (ItemStack.isSame(input, output) && output.getCount() + 1 <= output.getMaxStackSize() || output.isEmpty()) && !input.isEmpty() && !ItemUtils.testItems(input.getItem(), DeferredRegisters.ITEM_CELLDARKMATTER.get()) && !input.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent(); - validItem = validItem && !(input.getItem() instanceof BlockItem bitem && bitem.getBlock() instanceof ShulkerBoxBlock) && input.getItem() != DeferredRegisters.blockQuantumCapacitor.asItem(); - boolean canProcess = electro.getJoulesStored() >= Constants.ATOMICASSEMBLER_USAGE_PER_TICK && validItem; - if (canProcess) { - for (int index = 0; index < 6; index++) { - ItemStack dmSlot = inv.getItem(index); - if (dmSlot.is(DeferredRegisters.ITEM_CELLDARKMATTER.get())) { - if (dmSlot.getDamageValue() >= dmSlot.getMaxDamage()) { - inv.setItem(index, ItemStack.EMPTY); - } - } else { - canProcess = false; - } - } - } else { - progress = 0; + + boolean validItem = validateDupeItem(input) && (output.isEmpty() || ItemStack.isSame(input, output) && output.getCount() + 1 <= output.getMaxStackSize()); + + if (!validItem) { + progress.set(0); + return; } - boolean canProduce = false; - if (canProcess) { - if (progress++ >= Constants.ATOMICASSEMBLER_REQUIRED_TICKS) { - canProduce = true; + for (int index = 0; index < 6; index++) { + + ItemStack dmCell = inv.getItem(index); + + if (dmCell.isEmpty() || dmCell.getItem() != NuclearScienceItems.ITEM_CELLDARKMATTER.get()) { + progress.set(0); + return; } - electro.joules(electro.getJoulesStored() - Constants.ATOMICASSEMBLER_USAGE_PER_TICK); - } - if (canProduce) { - progress = 0; - for (int index = 0; index < 6; index++) { - ItemStack dmSlot = inv.getItem(index); - if (dmSlot.is(DeferredRegisters.ITEM_CELLDARKMATTER.get())) { - if (dmSlot.getDamageValue() >= dmSlot.getMaxDamage()) { - inv.setItem(index, ItemStack.EMPTY); - } - dmSlot.setDamageValue(dmSlot.getDamageValue() + 1); - } + + if (dmCell.getDamageValue() >= dmCell.getMaxDamage()) { + progress.set(0); + inv.setItem(index, ItemStack.EMPTY); + return; } - if (output.isEmpty()) { - inv.setItem(7, input.copy()); - inv.getItem(7).setCount(1); - } else { - output.setCount(output.getCount() + 1); + + } + + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + + if (electro.getJoulesStored() < Constants.ATOMICASSEMBLER_USAGE_PER_TICK) { + return; + } + + progress.set(progress.get() + 1); + + electro.joules(electro.getJoulesStored() - Constants.ATOMICASSEMBLER_USAGE_PER_TICK); + + if (progress.get() < Constants.ATOMICASSEMBLER_REQUIRED_TICKS) { + return; + } + + progress.set(0); + + for (int index = 0; index < 6; index++) { + + ItemStack dmCell = inv.getItem(index); + + dmCell.setDamageValue(dmCell.getDamageValue() + 1); + + if (dmCell.getDamageValue() >= dmCell.getMaxDamage()) { + inv.setItem(index, ItemStack.EMPTY); } } - } - private void tickServer(ComponentTickable tickable) { - if (tickable.getTicks() % 20 == 0) { - this.getComponent(ComponentType.PacketHandler).sendGuiPacketToTracking(); + if (output.isEmpty()) { + + inv.setItem(7, new ItemStack(input.getItem())); + + } else { + + output.setCount(output.getCount() + 1); + } } - private void writeGuiPacket(CompoundTag compound) { - compound.putInt("progress", progress); - } + private boolean validateDupeItem(ItemStack stack) { + + if (stack.hasTag()) { // this should filter out shulker boxes with items + return false; + } + + if (ItemUtils.testItems(stack.getItem(), NuclearScienceItems.ITEM_CELLDARKMATTER.get()) && !stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent()) { + return false; + } + + if (stack.getItem() instanceof BlockItem blockItem) { + + if (blockItem.getBlock() == NuclearScienceBlocks.blockQuantumCapacitor) { + return false; + } + + } + + if (AtomicAssemblerBlacklistRegister.INSTANCE.isBlacklisted(stack.getItem())) { + return false; + } + + return true; - private void readGuiPacket(CompoundTag compound) { - progress = compound.getInt("progress"); } -} + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileChemicalExtractor.java b/src/main/java/nuclearscience/common/tile/TileChemicalExtractor.java index ac6a1e6a..db8e9cc9 100644 --- a/src/main/java/nuclearscience/common/tile/TileChemicalExtractor.java +++ b/src/main/java/nuclearscience/common/tile/TileChemicalExtractor.java @@ -2,24 +2,22 @@ import electrodynamics.api.capability.ElectrodynamicsCapabilities; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; import nuclearscience.common.inventory.container.ContainerChemicalExtractor; import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileChemicalExtractor extends GenericTile { @@ -28,24 +26,25 @@ public class TileChemicalExtractor extends GenericTile { public static final int MAX_TANK_CAPACITY = 5000; public TileChemicalExtractor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_CHEMICALEXTRACTOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).universalInput().voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2).maxJoules(Constants.CHEMICALEXTRACTOR_USAGE_PER_TICK * 10)); - addComponent(new ComponentFluidHandlerMulti(this).setAddFluidsValues(NuclearScienceRecipeInit.CHEMICAL_EXTRACTOR_TYPE.get(), MAX_TANK_CAPACITY, true, false).universalInput()); - addComponent(new ComponentInventory(this).size(6).faceSlots(Direction.UP, 0).faceSlots(Direction.DOWN, 1).slotFaces(2, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST).inputs(1).outputs(1).bucketInputs(1).upgrades(3).processors(1).processorInputs(1).validUpgrades(ContainerChemicalExtractor.VALID_UPGRADES).valid(machineValidator())); - addComponent(new ComponentProcessor(this).setProcessorNumber(0).usage(Constants.CHEMICALEXTRACTOR_USAGE_PER_TICK).requiredTicks(Constants.CHEMICALEXTRACTOR_REQUIRED_TICKS).canProcess(component -> component.consumeBucket().canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.CHEMICAL_EXTRACTOR_TYPE.get())).process(component -> component.processFluidItem2ItemRecipe(component))); - addComponent(new ComponentContainerProvider("container.chemicalextractor").createMenu((id, player) -> new ContainerChemicalExtractor(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); - } - - protected void tickServer(ComponentTickable tick) { - InventoryUtils.handleExperienceUpgrade(this); + super(NuclearScienceBlockTypes.TILE_CHEMICALEXTRACTOR.get(), pos, state); + addComponent(new ComponentTickable(this).tickClient(this::tickClient)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).setInputDirections(Direction.DOWN).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2)); + addComponent(new ComponentFluidHandlerMulti(this).setInputTanks(1, MAX_TANK_CAPACITY).setInputDirections(Direction.UP, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST).setRecipeType(NuclearScienceRecipeInit.CHEMICAL_EXTRACTOR_TYPE.get())); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().processors(1, 1, 1, 0).bucketInputs(1).upgrades(3)).setDirectionsBySlot(0, Direction.UP, Direction.EAST, Direction.WEST, Direction.NORTH, Direction.SOUTH).setDirectionsBySlot(1, Direction.UP, Direction.EAST, Direction.WEST, Direction.NORTH, Direction.SOUTH).validUpgrades(ContainerChemicalExtractor.VALID_UPGRADES) + .valid(machineValidator())); + addComponent(new ComponentProcessor(this).canProcess(component -> component.consumeBucket().canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.CHEMICAL_EXTRACTOR_TYPE.get())).process(component -> component.processFluidItem2ItemRecipe(component))); + addComponent(new ComponentContainerProvider("container.chemicalextractor", this).createMenu((id, player) -> new ContainerChemicalExtractor(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } protected void tickClient(ComponentTickable tickable) { - if (this.getComponent(ComponentType.Processor).operatingTicks > 0 && level.random.nextDouble() < 0.15) { + if (this.getComponent(IComponentType.Processor).isActive() && level.random.nextDouble() < 0.15) { level.addParticle(ParticleTypes.SMOKE, worldPosition.getX() + level.random.nextDouble(), worldPosition.getY() + level.random.nextDouble() * 0.8 + 0.5, worldPosition.getZ() + level.random.nextDouble(), 0.0D, 0.0D, 0.0D); } } -} + + @Override + public int getComparatorSignal() { + return this.getComponent(IComponentType.Processor).isActive() ? 15 : 0; + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileControlRodAssembly.java b/src/main/java/nuclearscience/common/tile/TileControlRodAssembly.java index 49e35d0b..2304c60e 100644 --- a/src/main/java/nuclearscience/common/tile/TileControlRodAssembly.java +++ b/src/main/java/nuclearscience/common/tile/TileControlRodAssembly.java @@ -1,65 +1,98 @@ package nuclearscience.common.tile; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; +import net.minecraft.world.phys.BlockHitResult; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileControlRodAssembly extends GenericTile { - public int insertion = 0; - public boolean isMSR = false; - public Direction direction = Direction.DOWN; + public static final int MAX_EXTENSION = 100; + public static final int EXTENSION_PER_CLICK = 10; + + public static final Direction[] HORIZONTAL_DIRECTIONS = { Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST }; + + public final Property direction = property(new Property<>(PropertyType.Integer, "direction", Direction.DOWN.ordinal())); + public final Property insertion = property(new Property<>(PropertyType.Integer, "insertion", 0)); + public final Property isMSR = property(new Property<>(PropertyType.Boolean, "isMSR", false)); public TileControlRodAssembly(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_CONTROLRODASSEMBLY.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler().customPacketWriter(this::writePacket).customPacketReader(this::readPacket)); + super(NuclearScienceBlockTypes.TILE_CONTROLRODASSEMBLY.get(), pos, state); + addComponent(new ComponentTickable(this)); + addComponent(new ComponentPacketHandler(this)); } - public void tickServer(ComponentTickable tickable) { - if (tickable.getTicks() % 20 == 0) { - isMSR = false; - for (Direction dir : Direction.values()) { - if (dir != Direction.UP && dir != Direction.DOWN) { - BlockEntity tile = level.getBlockEntity(getBlockPos().relative(dir)); - if (tile instanceof TileMSRReactorCore) { - isMSR = true; - direction = dir; - } - } + @Override + public void onNeightborChanged(BlockPos neighbor, boolean blockStateTrigger) { + if (level.isClientSide) { + return; + } + isMSR.set(false); + for (Direction dir : HORIZONTAL_DIRECTIONS) { + BlockEntity tile = level.getBlockEntity(getBlockPos().relative(dir)); + if (tile instanceof TileMSReactorCore) { + isMSR.set(true); + direction.set(dir.ordinal()); + break; } - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); + } - } - public void writePacket(CompoundTag compound) { - compound.putInt("insertion", insertion); - compound.putBoolean("isMSR", isMSR); - compound.putInt("dir", direction.ordinal()); } - public void readPacket(CompoundTag compound) { - insertion = compound.getInt("insertion"); - isMSR = compound.getBoolean("isMSR"); - direction = Direction.from3DDataValue(compound.getInt("dir")); + @Override + public void onPlace(BlockState oldState, boolean isMoving) { + if (level.isClientSide) { + return; + } + isMSR.set(false); + for (Direction dir : HORIZONTAL_DIRECTIONS) { + BlockEntity tile = level.getBlockEntity(getBlockPos().relative(dir)); + if (tile instanceof TileMSReactorCore) { + isMSR.set(true); + direction.set(dir.ordinal()); + break; + } + + } } @Override - public void saveAdditional(CompoundTag compound) { - compound.putInt("insertion", insertion); - super.saveAdditional(compound); + public int getComparatorSignal() { + return (int) (((double) insertion.get() / (double) MAX_EXTENSION) * 15); } @Override - public void load(CompoundTag compound) { - super.load(compound); - insertion = compound.getInt("insertion"); + public InteractionResult use(Player player, InteractionHand hand, BlockHitResult result) { + + if (level.isClientSide()) { + return InteractionResult.CONSUME; + } + + if (player.isShiftKeyDown()) { + insertion.set(insertion.get() - TileControlRodAssembly.EXTENSION_PER_CLICK); + if (insertion.get() < 0) { + insertion.set(TileControlRodAssembly.MAX_EXTENSION); + } + } else { + insertion.set(insertion.get() + TileControlRodAssembly.EXTENSION_PER_CLICK); + if (insertion.get() > TileControlRodAssembly.MAX_EXTENSION) { + insertion.set(0); + } + } + + return InteractionResult.CONSUME; } -} + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileElectromagneticSwitch.java b/src/main/java/nuclearscience/common/tile/TileElectromagneticSwitch.java index a95180df..e2452485 100644 --- a/src/main/java/nuclearscience/common/tile/TileElectromagneticSwitch.java +++ b/src/main/java/nuclearscience/common/tile/TileElectromagneticSwitch.java @@ -1,21 +1,27 @@ package nuclearscience.common.tile; +import org.jetbrains.annotations.NotNull; + import electrodynamics.prefab.tile.GenericTile; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; +import net.minecraft.world.phys.BlockHitResult; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileElectromagneticSwitch extends GenericTile { public Direction lastDirection; public TileElectromagneticSwitch(BlockPos worldPosition, BlockState blockState) { - super(DeferredRegisters.TILE_ELECTROMAGNETICSWITCH.get(), worldPosition, blockState); + super(NuclearScienceBlockTypes.TILE_ELECTROMAGNETICSWITCH.get(), worldPosition, blockState); } @Override - public void saveAdditional(CompoundTag compound) { + public void saveAdditional(@NotNull CompoundTag compound) { if (lastDirection != null) { compound.putInt("lastDirectionOrdinal", lastDirection.ordinal()); } @@ -23,10 +29,16 @@ public void saveAdditional(CompoundTag compound) { } @Override - public void load(CompoundTag compound) { + public void load(@NotNull CompoundTag compound) { super.load(compound); if (compound.contains("lastDirectionOrdinal")) { lastDirection = Direction.from3DDataValue(compound.getInt("lastDirectionOrdinal")); } } -} + + @Override + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileFreezePlug.java b/src/main/java/nuclearscience/common/tile/TileFreezePlug.java deleted file mode 100644 index c2fb5130..00000000 --- a/src/main/java/nuclearscience/common/tile/TileFreezePlug.java +++ /dev/null @@ -1,98 +0,0 @@ -package nuclearscience.common.tile; - -import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.common.block.VoxelShapes; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.tile.components.type.ComponentInventory; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.object.TransferPack; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.inventory.container.ContainerFreezePlug; -import nuclearscience.common.settings.Constants; - -public class TileFreezePlug extends GenericTile { - private boolean isFrozen = false; - - public TileFreezePlug(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_FREEZEPLUG.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentDirection()); - addComponent(new ComponentElectrodynamic(this).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).input(Direction.UP).input(Direction.DOWN).maxJoules(Constants.FREEZEPLUG_USAGE_PER_TICK * 20)); - addComponent(new ComponentInventory(this).size(1).inputs(1).slotFaces(0, Direction.values()).valid((slot, stack, i) -> stack.getItem() == DeferredRegisters.ITEM_FLINAK.get())); - addComponent(new ComponentContainerProvider("container.freezeplug").createMenu((id, player) -> new ContainerFreezePlug(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); - } - - public void tickServer(ComponentTickable tickable) { - ComponentElectrodynamic el = getComponent(ComponentType.Electrodynamic); - ComponentInventory inv = getComponent(ComponentType.Inventory); - if (!inv.getItem(0).isEmpty()) { - isFrozen = el.getJoulesStored() >= Constants.FREEZEPLUG_USAGE_PER_TICK; - if (isFrozen) { - el.extractPower(TransferPack.joulesVoltage(Constants.FREEZEPLUG_USAGE_PER_TICK, 120), false); - } - } else { - isFrozen = false; - } - } - - public boolean isFrozen() { - return isFrozen; - } - - static { - VoxelShape shape = Shapes.empty(); - shape = Shapes.join(shape, Shapes.box(0.25, 0.15625, 0.25, 0.75, 0.28125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.25, 0.3125, 0.6875, 0.8125, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.9375, 0.8125, 0.875, 1, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.9375, 0.125, 0.875, 1, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.875, 0.75, 0.8125, 0.9375, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.8125, 0.25, 0.75, 0.875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.875, 0.1875, 0.8125, 0.9375, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.875, 0.25, 0.25, 0.9375, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.875, 0.25, 0.8125, 0.9375, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.9375, 0.1875, 0.875, 1, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.9375, 0.1875, 0.1875, 1, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.296875, 0.625, 0.296875, 0.703125, 0.6875, 0.703125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.28125, 0.5, 0.28125, 0.71875, 0.5625, 0.71875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.296875, 0.375, 0.296875, 0.703125, 0.4375, 0.703125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.078125, 0, 0.296875, 0.15625, 0.3125, 0.390625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.078125, 0, 0.453125, 0.15625, 0.3125, 0.546875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.078125, 0, 0.609375, 0.15625, 0.3125, 0.703125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.296875, 0, 0.84375, 0.390625, 0.3125, 0.921875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.453125, 0, 0.84375, 0.546875, 0.3125, 0.921875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.609375, 0, 0.84375, 0.703125, 0.3125, 0.921875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.84375, 0, 0.609375, 0.921875, 0.3125, 0.703125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.84375, 0, 0.453125, 0.921875, 0.3125, 0.546875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.84375, 0, 0.296875, 0.921875, 0.3125, 0.390625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.609375, 0, 0.078125, 0.703125, 0.3125, 0.15625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.453125, 0, 0.078125, 0.546875, 0.3125, 0.15625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.296875, 0, 0.078125, 0.390625, 0.3125, 0.15625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.1875, 0.15625, 0.6875, 0.25, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.46875, 0.1875, 0.15625, 0.53125, 0.25, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.15625, 0.375, 0.25, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.15625, 0.1875, 0.3125, 0.25, 0.25, 0.375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.15625, 0.1875, 0.46875, 0.25, 0.25, 0.53125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.15625, 0.1875, 0.625, 0.25, 0.25, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.75, 0.375, 0.25, 0.84375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.46875, 0.1875, 0.75, 0.53125, 0.25, 0.84375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.1875, 0.75, 0.6875, 0.25, 0.84375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.1875, 0.625, 0.84375, 0.25, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.1875, 0.46875, 0.84375, 0.25, 0.53125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.1875, 0.3125, 0.84375, 0.25, 0.375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0, 0.3125, 0.6875, 0.1875, 0.6875), BooleanOp.OR); - - VoxelShapes.registerShape(DeferredRegisters.blockFreezePlug, shape, Direction.EAST); - } -} diff --git a/src/main/java/nuclearscience/common/tile/TileFuelReprocessor.java b/src/main/java/nuclearscience/common/tile/TileFuelReprocessor.java index cb207d1c..9115d81b 100644 --- a/src/main/java/nuclearscience/common/tile/TileFuelReprocessor.java +++ b/src/main/java/nuclearscience/common/tile/TileFuelReprocessor.java @@ -1,125 +1,69 @@ package nuclearscience.common.tile; + import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.api.sound.SoundAPI; -import electrodynamics.common.block.VoxelShapes; import electrodynamics.common.inventory.container.tile.ContainerO2OProcessor; +import electrodynamics.prefab.sound.SoundBarrierMethods; +import electrodynamics.prefab.sound.utils.ITickableSound; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; +import electrodynamics.prefab.utilities.BlockEntityUtils; +import electrodynamics.registers.ElectrodynamicsSounds; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; -import nuclearscience.DeferredRegisters; import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; + +public class TileFuelReprocessor extends GenericTile implements ITickableSound { -public class TileFuelReprocessor extends GenericTile { + private boolean isSoundPlaying = false; public TileFuelReprocessor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_FUELREPROCESSOR.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentElectrodynamic(this).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).relativeInput(Direction.NORTH)); - addComponent(new ComponentInventory(this).size(6).faceSlots(Direction.UP, 0).faceSlots(Direction.DOWN, 1).relativeFaceSlots(Direction.EAST, 1).relativeFaceSlots(Direction.WEST, 2).inputs(1).outputs(1).upgrades(3).processors(1).processorInputs(1).biproducts(1).validUpgrades(ContainerO2OProcessor.VALID_UPGRADES).valid(machineValidator())); - addProcessor(new ComponentProcessor(this).setProcessorNumber(0).canProcess(component -> component.canProcessItem2ItemRecipe(component, NuclearScienceRecipeInit.FUEL_REPROCESSOR_TYPE.get())).process(component -> component.processItem2ItemRecipe(component)).requiredTicks((long) Constants.FUELREPROCESSOR_REQUIRED_TICKS).usage(Constants.FUELREPROCESSOR_USAGE_PER_TICK)); - addComponent(new ComponentContainerProvider("container.fuelreprocessor").createMenu((id, player) -> new ContainerO2OProcessor(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + super(NuclearScienceBlockTypes.TILE_FUELREPROCESSOR.get(), pos, state); + + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentTickable(this).tickClient(this::tickClient)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).setInputDirections(Direction.NORTH)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().processors(1, 1, 1, 1).upgrades(3)).setSlotsByDirection(Direction.UP, 0).setDirectionsBySlot(1, Direction.DOWN, Direction.EAST).setSlotsByDirection(Direction.WEST, 2).validUpgrades(ContainerO2OProcessor.VALID_UPGRADES).valid(machineValidator())); + addProcessor(new ComponentProcessor(this).canProcess(this::shouldProcessRecipe).process(component -> component.processItem2ItemRecipe(component))); + addComponent(new ComponentContainerProvider("container.fuelreprocessor", this).createMenu((id, player) -> new ContainerO2OProcessor(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } - protected void tickServer(ComponentTickable tick) { - InventoryUtils.handleExperienceUpgrade(this); + private boolean shouldProcessRecipe(ComponentProcessor component) { + boolean canProcess = component.canProcessItem2ItemRecipe(component, NuclearScienceRecipeInit.FUEL_REPROCESSOR_TYPE.get()); + if (BlockEntityUtils.isLit(this) ^ canProcess) { + BlockEntityUtils.updateLit(this, canProcess); + } + return canProcess; } public void tickClient(ComponentTickable tickable) { - boolean running = getProcessor(0).operatingTicks > 0; - if (running && tickable.getTicks() % 100 == 0) { - SoundAPI.playSound(electrodynamics.SoundRegister.SOUND_MINERALCRUSHER.get(), SoundSource.BLOCKS, 1, 1, worldPosition); + if (!isSoundPlaying && shouldPlaySound()) { + isSoundPlaying = true; + SoundBarrierMethods.playTileSound(ElectrodynamicsSounds.SOUND_MINERALCRUSHER.get(), this, true); } } - static { - VoxelShape shape = Shapes.empty(); - shape = Shapes.join(shape, Shapes.box(0.875, 0, 0.9375, 1, 1, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0, 0, 1, 1, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0, 0, 0.125, 1, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0, 0.9375, 0.125, 1, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0, 0.875, 0.0625, 1, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0, 0.0625, 0.0625, 1, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0, 0.0625, 1, 1, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0, 0.875, 1, 1, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.4375, 0.8125, 0.1875, 0.5625, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.4375, 0.75, 0.25, 0.5625, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.4375, 0.6875, 0.25, 0.5625, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.4375, 0.75, 0.3125, 0.5625, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.4375, 0.0625, 0.1875, 0.5625, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.4375, 0.125, 0.25, 0.5625, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.4375, 0.1875, 0.3125, 0.5625, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.4375, 0.25, 0.25, 0.5625, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.4375, 0.8125, 0.9375, 0.5625, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.4375, 0.75, 0.875, 0.5625, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.4375, 0.6875, 0.8125, 0.5625, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.4375, 0.75, 0.75, 0.5625, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.4375, 0.0625, 0.9375, 0.5625, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.4375, 0.125, 0.875, 0.5625, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.4375, 0.1875, 0.75, 0.5625, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.4375, 0.25, 0.8125, 0.5625, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.125, 0.3125, 0.8125, 0.875, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.125, 0.6875, 0.3125, 0.875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.125, 0.25, 0.3125, 0.875, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.125, 0.25, 0.75, 0.875, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.125, 0.6875, 0.75, 0.875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.125, 0.6875, 0.6875, 0.875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.125, 0.1875, 0.6875, 0.875, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.9375, 0.25, 0.75, 1, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.875, 0.3125, 0.6875, 0.9375, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0.25, 0.25, 1, 0.75, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.3125, 0.3125, 0.9375, 0.6875, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.125, 0.6875, 0.25, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.1875, 0.3125, 0.875, 0.25, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.1875, 0.6875, 0.8125, 0.25, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.1875, 0.75, 0.75, 0.25, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.1875, 0.1875, 0.75, 0.25, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.1875, 0.25, 0.8125, 0.25, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.1875, 0.25, 0.25, 0.25, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.1875, 0.1875, 0.3125, 0.25, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.1875, 0.75, 0.3125, 0.25, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.1875, 0.6875, 0.25, 0.25, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.1875, 0.3125, 0.1875, 0.25, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.8125, 0.6875, 0.25, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.75, 0.125, 0.6875, 0.8125, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.75, 0.3125, 0.875, 0.8125, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.75, 0.6875, 0.8125, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.75, 0.75, 0.75, 0.8125, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.75, 0.1875, 0.75, 0.8125, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.75, 0.25, 0.8125, 0.8125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.75, 0.25, 0.25, 0.8125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.75, 0.1875, 0.3125, 0.8125, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.75, 0.75, 0.3125, 0.8125, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.75, 0.6875, 0.25, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.75, 0.3125, 0.1875, 0.8125, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.75, 0.8125, 0.6875, 0.8125, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.25, 0.375, 0.1875, 0.75, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.25, 0.125, 0.625, 0.75, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.25, 0.125, 0.4375, 0.75, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.25, 0.8125, 0.4375, 0.75, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.25, 0.8125, 0.625, 0.75, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.25, 0.5625, 0.1875, 0.75, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.6875, 0.5625, 0.875, 0.75, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.6875, 0.375, 0.875, 0.75, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.25, 0.375, 0.875, 0.3125, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.25, 0.5625, 0.875, 0.3125, 0.625), BooleanOp.OR); - VoxelShapes.registerShape(DeferredRegisters.blockFuelReprocessor, shape, Direction.WEST); + @Override + public void setNotPlaying() { + isSoundPlaying = false; + } + + @Override + public boolean shouldPlaySound() { + return isProcessorActive(); + } + + @Override + public int getComparatorSignal() { + return isProcessorActive() ? 15 : 0; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileFusionReactorCore.java b/src/main/java/nuclearscience/common/tile/TileFusionReactorCore.java deleted file mode 100644 index 473dfdc2..00000000 --- a/src/main/java/nuclearscience/common/tile/TileFusionReactorCore.java +++ /dev/null @@ -1,83 +0,0 @@ -package nuclearscience.common.tile; - -import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.settings.Constants; - -public class TileFusionReactorCore extends GenericTile { - public int deuterium; - public int tritium; - private int timeLeft = 0; - - public TileFusionReactorCore(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_FUSIONREACTORCORE.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket)); - addComponent(new ComponentElectrodynamic(this).input(Direction.DOWN).input(Direction.UP).maxJoules(Constants.FUSIONREACTOR_USAGE_PER_TICK * 20.0).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4)); - } - - public void tickServer(ComponentTickable tick) { - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); - if (level.getLevelData().getDayTime() % 20 == 0) { - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - } - if (tritium > 0 && deuterium > 0 && timeLeft <= 0 && electro.getJoulesStored() > Constants.FUSIONREACTOR_USAGE_PER_TICK) { - deuterium -= 1; - tritium -= 1; - timeLeft = 15 * 20; - } - if (timeLeft > 0 && electro.getJoulesStored() > Constants.FUSIONREACTOR_USAGE_PER_TICK) { - for (Direction dir : Direction.values()) { - if (dir != Direction.UP && dir != Direction.DOWN) { - BlockPos offset = worldPosition.relative(dir); - BlockState state = level.getBlockState(offset); - if (state.getBlock() == DeferredRegisters.blockPlasma) { - BlockEntity tile = level.getBlockEntity(offset); - if (tile instanceof TilePlasma plasma && plasma.ticksExisted > 30) { - plasma.ticksExisted = 0; - } - } else if (state.getBlock() == Blocks.AIR) { - level.setBlockAndUpdate(offset, DeferredRegisters.blockPlasma.defaultBlockState()); - } - } - } - electro.joules(electro.getJoulesStored() - Constants.FUSIONREACTOR_USAGE_PER_TICK); - } - timeLeft--; - } - - @Override - public void saveAdditional(CompoundTag compound) { - writeCustomPacket(compound); - super.saveAdditional(compound); - } - - @Override - public void load(CompoundTag compound) { - super.load(compound); - readCustomPacket(compound); - } - - public void writeCustomPacket(CompoundTag nbt) { - nbt.putInt("deuterium", deuterium); - nbt.putInt("tritium", tritium); - } - - public void readCustomPacket(CompoundTag nbt) { - deuterium = nbt.getInt("deuterium"); - tritium = nbt.getInt("tritium"); - } -} diff --git a/src/main/java/nuclearscience/common/tile/TileGasCentrifuge.java b/src/main/java/nuclearscience/common/tile/TileGasCentrifuge.java index a353399b..09c610ec 100644 --- a/src/main/java/nuclearscience/common/tile/TileGasCentrifuge.java +++ b/src/main/java/nuclearscience/common/tile/TileGasCentrifuge.java @@ -1,209 +1,147 @@ package nuclearscience.common.tile; import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.api.sound.SoundAPI; -import electrodynamics.common.block.VoxelShapes; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.sound.SoundBarrierMethods; +import electrodynamics.prefab.sound.utils.ITickableSound; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; import electrodynamics.prefab.utilities.object.Location; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.registries.ForgeRegistries; -import nuclearscience.DeferredRegisters; -import nuclearscience.SoundRegister; import nuclearscience.api.radiation.RadiationSystem; import nuclearscience.common.inventory.container.ContainerGasCentrifuge; import nuclearscience.common.settings.Constants; import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceSounds; + +public class TileGasCentrifuge extends GenericTile implements ITickableSound { -public class TileGasCentrifuge extends GenericTile { public static final int TANKCAPACITY = 5000; - public static final float REQUIRED = 2500; - private static final double PERCENT_U235 = 0.172; - private static final double WASTE_MULTIPLIER = 0.1; - public boolean isRunning = false; - // public long ticks = 0; - public int stored235 = 0; - public int stored238 = 0; - public int storedWaste = 0; - public int spinSpeed; + public static final int REQUIRED = 2500; + public static final double PERCENT_U235 = 0.172; + public static final double WASTE_MULTIPLIER = 0.1; + public Property spinSpeed = property(new Property<>(PropertyType.Integer, "spinSpeed", 0)); + public Property stored235 = property(new Property<>(PropertyType.Double, "stored235", 0.0)); + public Property stored238 = property(new Property<>(PropertyType.Double, "stored238", 0.0)); + public Property storedWaste = property(new Property<>(PropertyType.Double, "storedWaste", 0.0)); + public Property isRunning = property(new Property<>(PropertyType.Boolean, "isRunning", false)); private static final int RADATION_RADIUS_BLOCKS = 5; private static final int RADIATION_STRENGTH = 5000; + private boolean isSoundPlaying = false; + public TileGasCentrifuge(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_GASCENTRIFUGE.get(), pos, state); - addComponent(new ComponentTickable().tickClient(this::tickClient).tickServer(this::tickServer)); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket)); - addComponent(new ComponentFluidHandlerMulti(this).setManualFluids(1, true, TANKCAPACITY, DeferredRegisters.fluidUraniumHexafluoride).relativeInput(Direction.NORTH)); - addComponent(new ComponentElectrodynamic(this).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2).input(Direction.DOWN).maxJoules(Constants.GASCENTRIFUGE_USAGE_PER_TICK * 10)); - addComponent(new ComponentInventory(this).size(6).universalSlots(0, 1, 2).outputs(3).upgrades(3).validUpgrades(ContainerGasCentrifuge.VALID_UPGRADES).valid(machineValidator())); + super(NuclearScienceBlockTypes.TILE_GASCENTRIFUGE.get(), pos, state); + addComponent(new ComponentTickable(this).tickClient(this::tickClient).tickServer(this::tickServer)); + + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentFluidHandlerMulti(this).setInputTanks(1, arr(TANKCAPACITY)).setInputFluidTags(NuclearScienceTags.Fluids.URANIUM_HEXAFLUORIDE).setInputDirections(Direction.NORTH)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2).setInputDirections(Direction.DOWN).maxJoules(Constants.GASCENTRIFUGE_USAGE_PER_TICK * 10)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().outputs(3).upgrades(3)).setSlotsByDirection(Direction.UP, 0, 1, 2).setSlotsByDirection(Direction.EAST, 0, 1, 2).setSlotsByDirection(Direction.WEST, 0, 1, 2).setSlotsByDirection(Direction.SOUTH, 0, 1, 2).validUpgrades(ContainerGasCentrifuge.VALID_UPGRADES).valid(machineValidator())); addComponent(new ComponentProcessor(this).usage(Constants.GASCENTRIFUGE_USAGE_PER_TICK).requiredTicks(Constants.GASCENTRIFUGE_REQUIRED_TICKS_PER_PROCESSING).canProcess(this::canProcess).process(this::process)); - addComponent(new ComponentContainerProvider("container.gascentrifuge").createMenu((id, player) -> new ContainerGasCentrifuge(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + addComponent(new ComponentContainerProvider("container.gascentrifuge", this).createMenu((id, player) -> new ContainerGasCentrifuge(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } public boolean canProcess(ComponentProcessor processor) { - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); - ComponentInventory inv = getComponent(ComponentType.Inventory); - ComponentFluidHandlerMulti tank = getComponent(ComponentType.FluidHandler); - boolean hasFluid = tank.getInputTanks()[0].getFluidAmount() >= REQUIRED / 60.0; - boolean val = electro.getJoulesStored() >= processor.getUsage() && hasFluid && inv.getItem(0).getCount() < inv.getItem(0).getMaxStackSize() && inv.getItem(1).getCount() < inv.getItem(1).getMaxStackSize() && inv.getItem(2).getCount() < inv.getItem(2).getMaxStackSize(); - if (!val && spinSpeed > 0) { - spinSpeed = 0; - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + ComponentInventory inv = getComponent(IComponentType.Inventory); + ComponentFluidHandlerMulti gasHandler = getComponent(IComponentType.FluidHandler); + boolean hasGas = gasHandler.getInputTanks()[0].getFluidAmount() >= REQUIRED / 60.0; + boolean val = electro.getJoulesStored() >= processor.getUsage() && hasGas && inv.getItem(0).getCount() < inv.getItem(0).getMaxStackSize() && inv.getItem(1).getCount() < inv.getItem(1).getMaxStackSize() && inv.getItem(2).getCount() < inv.getItem(2).getMaxStackSize(); + if (!val && spinSpeed.get() > 0) { + spinSpeed.set(0); } - isRunning = val; + isRunning.set(val); return val; } public void process(ComponentProcessor processor) { - ComponentInventory inv = getComponent(ComponentType.Inventory); - ComponentFluidHandlerMulti tank = getComponent(ComponentType.FluidHandler); - spinSpeed = (int) processor.operatingSpeed; - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - int processed = (int) (REQUIRED / 60.0); - for (Fluid fluid : ForgeRegistries.FLUIDS.tags().getTag(NuclearScienceTags.Fluids.URANIUM_HEXAFLUORIDE)) { - FluidTank fTank = tank.getTankFromFluid(fluid, true); - if (fTank.getFluidAmount() >= processed) { - fTank.getFluid().shrink(processed); - break; - } + ComponentInventory inv = getComponent(IComponentType.Inventory); + ComponentFluidHandlerMulti multi = getComponent(IComponentType.FluidHandler); + spinSpeed.set(processor.operatingSpeed.get().intValue()); + int processed = REQUIRED / 60; + FluidTank tank = multi.getInputTanks()[0]; + + if (tank.getFluid().getFluid().is(NuclearScienceTags.Fluids.URANIUM_HEXAFLUORIDE) && tank.getFluidAmount() >= processed) { + tank.drain(processed, FluidAction.EXECUTE); } - stored235 += processed * PERCENT_U235; - stored238 += processed * (1 - PERCENT_U235 - WASTE_MULTIPLIER); - storedWaste += processed * WASTE_MULTIPLIER; - if (stored235 > REQUIRED) { + stored235.set(stored235.get() + processed * PERCENT_U235); + stored238.set(stored238.get() + processed * (1 - PERCENT_U235 - WASTE_MULTIPLIER)); + storedWaste.set(stored235.get() + processed * WASTE_MULTIPLIER); + if (stored235.get() > REQUIRED) { ItemStack stack = inv.getItem(0); if (!stack.isEmpty()) { stack.setCount(stack.getCount() + 1); } else { - inv.setItem(0, new ItemStack(DeferredRegisters.ITEM_URANIUM235.get())); + inv.setItem(0, new ItemStack(NuclearScienceItems.ITEM_URANIUM235.get())); } - stored235 -= REQUIRED; + stored235.set(stored235.get() - REQUIRED); } - if (stored238 > REQUIRED) { + if (stored238.get() > REQUIRED) { ItemStack stack = inv.getItem(1); if (!stack.isEmpty()) { stack.setCount(stack.getCount() + 1); } else { - inv.setItem(1, new ItemStack(DeferredRegisters.ITEM_URANIUM238.get())); + inv.setItem(1, new ItemStack(NuclearScienceItems.ITEM_URANIUM238.get())); } - stored238 -= REQUIRED; + stored238.set(stored238.get() - REQUIRED); } - if (storedWaste > REQUIRED) { + if (storedWaste.get() > REQUIRED) { ItemStack stack = inv.getItem(2); if (!stack.isEmpty()) { stack.grow(1); } else { - inv.setItem(2, new ItemStack(DeferredRegisters.ITEM_FISSILEDUST.get(), 1)); + inv.setItem(2, new ItemStack(NuclearScienceItems.ITEM_FISSILEDUST.get(), 1)); } - storedWaste -= REQUIRED; + storedWaste.set(storedWaste.get() - REQUIRED); } } protected void tickClient(ComponentTickable tickable) { - if (spinSpeed > 0 && tickable.getTicks() % 80 == 0) { - SoundAPI.playSound(SoundRegister.SOUND_GASCENTRIFUGE.get(), SoundSource.BLOCKS, 1, 1, worldPosition); + if (!isSoundPlaying && shouldPlaySound()) { + isSoundPlaying = true; + SoundBarrierMethods.playTileSound(NuclearScienceSounds.SOUND_GASCENTRIFUGE.get(), this, true); } } protected void tickServer(ComponentTickable tickable) { - if (level.getLevelData().getGameTime() % 10 == 0 && isRunning) { + if (level.getLevelData().getGameTime() % 10 == 0 && isRunning.get()) { RadiationSystem.emitRadiationFromLocation(level, new Location(worldPosition), RADATION_RADIUS_BLOCKS, RADIATION_STRENGTH); } - InventoryUtils.handleExperienceUpgrade(this); } @Override - public void saveAdditional(CompoundTag compound) { - compound.putInt("stored235", stored235); - compound.putInt("stored238", stored238); - compound.putInt("storedWaste", storedWaste); - compound.putBoolean("isRunning", isRunning); - // compound.putLong("ticks", ticks); - super.saveAdditional(compound); + public void setNotPlaying() { + isSoundPlaying = false; } @Override - public void load(CompoundTag compound) { - super.load(compound); - stored235 = compound.getInt("stored235"); - stored238 = compound.getInt("stored238"); - storedWaste = compound.getInt("storedWaste"); - isRunning = compound.getBoolean("isRunning"); - // ticks = compound.getLong("ticks"); + public boolean shouldPlaySound() { + return spinSpeed.get() > 0; } - public void writeCustomPacket(CompoundTag tag) { - tag.putInt("spinSpeed", spinSpeed); - tag.putInt("stored235", stored235); - tag.putInt("stored238", stored238); - tag.putInt("storedWaste", storedWaste); - tag.putBoolean("isRunning", isRunning); - // tag.putLong("ticks", ticks); - } - - public void readCustomPacket(CompoundTag nbt) { - spinSpeed = nbt.getInt("spinSpeed"); - stored235 = nbt.getInt("stored235"); - stored238 = nbt.getInt("stored238"); - storedWaste = nbt.getInt("storedWaste"); - isRunning = nbt.getBoolean("isRunning"); - // ticks = nbt.getLong("ticks"); - } - - static { - VoxelShape shape = Shapes.empty(); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.921875, 0.26875, 1.0234375, 1.03125, 0.73125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.0625, 0, 1, 0.125, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0, 0.25, 0.75, 0.0625, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0, 0, 0.0625, 0.0625, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0, 0, 0.9375, 0.0625, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0, 0.9375, 0.9375, 0.0625, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0, 0, 1, 0.0625, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.125, 0.125, 0.875, 0.1875, 0.8715), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.125, 0.28125, 1, 0.8125, 0.71875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.234375, 0.125, 0.25, 0.75, 0.3125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.390625, 0.875, 0.375, 0.5890625, 0.984375, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.7765625, 0.3125, 0.5625, 0.8390625, 0.34375, 0.671875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.2453125, 0.3125, 0.609375, 0.3078125, 0.34375, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.2453125, 0.3125, 0.25, 0.3078125, 0.34375, 0.390625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.7765625, 0.3125, 0.328125, 0.8390625, 0.34375, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.7765625, 0.125, 0.5625, 0.8390625, 0.3125, 0.671875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.7765625, 0.125, 0.328125, 0.8390625, 0.3125, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.2453125, 0.125, 0.609375, 0.3078125, 0.3125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.2453125, 0.125, 0.25, 0.3078125, 0.3125, 0.390625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.3125, 0.5625, 0.4375, 0.4375, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.3125, 0.5625, 0.625, 0.4375, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.4375, 0.3125, 0.4375, 0.5625, 1, 0.5625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.3125, 0.375, 0.625, 0.4375, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.34375, 0.3125, 0.46875, 0.40625, 0.4375, 0.53125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.46875, 0.3125, 0.59375, 0.53125, 0.4375, 0.65625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.46875, 0.3125, 0.34375, 0.53125, 0.4375, 0.40625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.3125, 0.375, 0.4375, 0.4375, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.59375, 0.3125, 0.46875, 0.65625, 0.4375, 0.53125), BooleanOp.OR); - VoxelShapes.registerShape(DeferredRegisters.blockGasCentrifuge, shape, Direction.WEST); + @Override + public int getComparatorSignal() { + return isRunning.get() ? 15 : 0; } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileMSRFuelPreProcessor.java b/src/main/java/nuclearscience/common/tile/TileMSRFuelPreProcessor.java deleted file mode 100644 index 5b3b9b20..00000000 --- a/src/main/java/nuclearscience/common/tile/TileMSRFuelPreProcessor.java +++ /dev/null @@ -1,54 +0,0 @@ -package nuclearscience.common.tile; - -import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; -import electrodynamics.prefab.tile.components.type.ComponentInventory; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentProcessor; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; -import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; - -public class TileMSRFuelPreProcessor extends GenericTile { - public static final int MAX_TANK_CAPACITY = 5000; - public long clientTicks = 0; - - public TileMSRFuelPreProcessor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_MSRFUELPREPROCESSOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).relativeInput(Direction.NORTH).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2).maxJoules(Constants.MSRFUELPREPROCESSOR_USAGE_PER_TICK * 10)); - addComponent(((ComponentFluidHandlerMulti) new ComponentFluidHandlerMulti(this).relativeInput(Direction.EAST).relativeOutput(Direction.WEST)).setAddFluidsValues(NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_TYPE.get(), MAX_TANK_CAPACITY, true, true)); - addComponent(new ComponentInventory(this).size(8).relativeFaceSlots(Direction.EAST, 0, 1, 2).relativeFaceSlots(Direction.UP, 0, 1, 2).relativeSlotFaces(3, Direction.DOWN).inputs(3).outputs(1).bucketInputs(1).upgrades(3).processors(1).processorInputs(3).validUpgrades(ContainerMSRFuelPreProcessor.VALID_UPGRADES).valid(machineValidator())); - addComponent(new ComponentProcessor(this).setProcessorNumber(0).canProcess(component -> component.outputToPipe().consumeBucket().canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_TYPE.get())).process(component -> component.processFluidItem2ItemRecipe(component)).usage(Constants.MSRFUELPREPROCESSOR_USAGE_PER_TICK).requiredTicks(Constants.MSRFUELPREPROCESSOR_REQUIRED_TICKS)); - addComponent(new ComponentContainerProvider("container.msrfuelpreprocessor").createMenu((id, player) -> new ContainerMSRFuelPreProcessor(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); - - } - - protected void tickServer(ComponentTickable tick) { - InventoryUtils.handleExperienceUpgrade(this); - } - - protected void tickClient(ComponentTickable tickable) { - boolean running = this.getComponent(ComponentType.Processor).operatingTicks > 0; - if (running) { - if (level.random.nextDouble() < 0.15) { - level.addParticle(ParticleTypes.SMOKE, worldPosition.getX() + level.random.nextDouble(), worldPosition.getY() + level.random.nextDouble() * 0.4 + 0.5, worldPosition.getZ() + level.random.nextDouble(), 0.0D, 0.0D, 0.0D); - } - clientTicks++; - } - } -} diff --git a/src/main/java/nuclearscience/common/tile/TileMSRReactorCore.java b/src/main/java/nuclearscience/common/tile/TileMSRReactorCore.java deleted file mode 100644 index 8b1d7398..00000000 --- a/src/main/java/nuclearscience/common/tile/TileMSRReactorCore.java +++ /dev/null @@ -1,193 +0,0 @@ -package nuclearscience.common.tile; - -import java.util.ArrayList; - -import electrodynamics.common.block.VoxelShapes; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.object.CachedTileOutput; -import electrodynamics.prefab.utilities.object.Location; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; -import nuclearscience.DeferredRegisters; -import nuclearscience.api.network.moltensalt.IMoltenSaltPipe; -import nuclearscience.api.radiation.RadiationSystem; -import nuclearscience.common.inventory.container.ContainerMSRReactorCore; -import nuclearscience.common.network.MoltenSaltNetwork; - -public class TileMSRReactorCore extends GenericTile { - public static final int MELTDOWN_TEMPERATURE = 900; - public static final double FUEL_CAPACITY = 1000; - public static final double FUEL_USAGE_RATE = 0.01; - public double temperature = TileReactorCore.AIR_TEMPERATURE; - public int ticksOverheating = 0; - public double currentFuel = 0; - private CachedTileOutput outputCache; - public CachedTileOutput plugCache; - - public TileMSRReactorCore(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_MSRREACTORCORE.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket).guiPacketReader(this::readCustomPacket).guiPacketWriter(this::writeCustomPacket)); - addComponent(new ComponentContainerProvider("container.msrreactorcore").createMenu((id, player) -> new ContainerMSRReactorCore(id, player, null, getCoordsArray()))); - } - - protected void writeCustomPacket(CompoundTag tag) { - tag.putDouble("temperature", temperature); - tag.putDouble("currentFuel", currentFuel); - } - - protected void readCustomPacket(CompoundTag nbt) { - temperature = nbt.getDouble("temperature"); - currentFuel = nbt.getDouble("currentFuel"); - } - - @Override - public void saveAdditional(CompoundTag compound) { - writeCustomPacket(compound); - super.saveAdditional(compound); - } - - @Override - public void load(CompoundTag compound) { - readCustomPacket(compound); - super.load(compound); - } - - protected void tickServer(ComponentTickable tick) { - if (outputCache == null) { - outputCache = new CachedTileOutput(level, new BlockPos(worldPosition).relative(Direction.UP)); - } - if (plugCache == null) { - plugCache = new CachedTileOutput(level, new BlockPos(worldPosition).relative(Direction.DOWN)); - } - if (tick.getTicks() % 40 == 0) { - outputCache.update(new BlockPos(worldPosition).relative(Direction.UP)); - plugCache.update(new BlockPos(worldPosition).relative(Direction.DOWN)); - } - double change = (temperature - TileReactorCore.AIR_TEMPERATURE) / 3000.0 + (temperature - TileReactorCore.AIR_TEMPERATURE) / 5000.0; - if (change != 0) { - temperature -= change < 0.001 && change > 0 ? 0.001 : change > -0.001 && change < 0 ? -0.001 : change; - } - if (plugCache.valid() && plugCache.getSafe() instanceof TileFreezePlug freeze && freeze.isFrozen()) { - if (currentFuel > FUEL_USAGE_RATE) { - int insertion = 0; - for (Direction dir : Direction.values()) { - if (dir != Direction.UP && dir != Direction.DOWN) { - BlockEntity tile = level.getBlockEntity(getBlockPos().relative(dir)); - if (tile instanceof TileControlRodAssembly cr) { - TileControlRodAssembly control = cr; - if (control.direction == dir.getOpposite()) { - insertion += control.insertion; - } - } - } - } - if (level.getLevelData().getGameTime() % 10 == 0) { - double totstrength = temperature * Math.pow(3, Math.pow(temperature / MELTDOWN_TEMPERATURE, 9)); - double range = Math.sqrt(totstrength) / (5 * Math.sqrt(2)) * 2; - RadiationSystem.emitRadiationFromLocation(level, new Location(worldPosition), range, totstrength); - } - double insertDecimal = (100 - insertion) / 100.0; - currentFuel -= Math.min(currentFuel, FUEL_USAGE_RATE * insertDecimal * Math.pow(2, Math.pow(temperature / (MELTDOWN_TEMPERATURE - 100), 4))); - temperature += (MELTDOWN_TEMPERATURE * insertDecimal * (1.2 + level.random.nextDouble() / 5.0) - temperature) / 200; - if (outputCache.valid() && outputCache.getSafe() instanceof IMoltenSaltPipe) { - MoltenSaltNetwork net = (MoltenSaltNetwork) outputCache.getSafe().getNetwork(); - net.emit(temperature, new ArrayList<>(), false); - } - } - } - if (tick.getTicks() % 5 == 0) { - this.getComponent(ComponentType.PacketHandler).sendGuiPacketToTracking(); - } - } - - protected void tickClient(ComponentTickable tick) { - if (plugCache == null) { - plugCache = new CachedTileOutput(level, new BlockPos(worldPosition).relative(Direction.DOWN)); - } - } - - static { - VoxelShape shape = Shapes.empty(); - shape = Shapes.join(shape, Shapes.box(0.125, 0, 0.125, 0.875, 0.8125, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.125, 0.1875, 0.125, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.125, 0.1875, 0.9375, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.125, 0.0625, 0.8125, 0.75, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.125, 0.875, 0.8125, 0.75, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.1875, 0.25, 0.0625, 0.6875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.8125, 0.1875, 0.8125, 0.875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.875, 0.3125, 0.6875, 1, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.875, 0.375, 0.3125, 1.125, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.875, 0.5625, 0.3125, 1.125, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.875, 0.5625, 0.75, 1.125, 0.625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.875, 0.375, 0.75, 1.125, 0.4375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.875, 0.25, 0.625, 1.125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.875, 0.25, 0.4375, 1.125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.375, 0.875, 0.6875, 0.4375, 1.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.5625, 0.875, 0.6875, 0.625, 1.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.25, 0.1875, 0.0625, 0.3125, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.40625, 0.1875, 0.0625, 0.46875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.5625, 0.1875, 0.0625, 0.625, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.5625, 0.75, 0.0625, 0.625, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.40625, 0.75, 0.0625, 0.46875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.25, 0.75, 0.0625, 0.3125, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.5625, 0.8125, 0.125, 0.625, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.40625, 0.8125, 0.125, 0.46875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.25, 0.8125, 0.125, 0.3125, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.5625, 0.125, 0.125, 0.625, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.40625, 0.125, 0.125, 0.46875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.25, 0.125, 0.125, 0.3125, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.40625, 0.125, 0.9375, 0.46875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.25, 0.125, 0.9375, 0.3125, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.5625, 0.125, 0.9375, 0.625, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.5625, 0.8125, 0.9375, 0.625, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.40625, 0.8125, 0.9375, 0.46875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.25, 0.8125, 0.9375, 0.3125, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0.5625, 0.1875, 1, 0.625, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0.40625, 0.1875, 1, 0.46875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0.25, 0.1875, 1, 0.3125, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.5625, 0.875, 0.875, 0.625, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.40625, 0.875, 0.875, 0.46875, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.25, 0.875, 0.875, 0.3125, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.5625, 0.875, 0.1875, 0.625, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.40625, 0.875, 0.1875, 0.46875, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.25, 0.875, 0.1875, 0.3125, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.5625, 0.0625, 0.1875, 0.625, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.40625, 0.0625, 0.1875, 0.46875, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.25, 0.0625, 0.1875, 0.3125, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.5625, 0.0625, 0.875, 0.625, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.40625, 0.0625, 0.875, 0.46875, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.25, 0.0625, 0.875, 0.3125, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.5625, 0, 0.8125, 0.625, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.40625, 0, 0.8125, 0.46875, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.25, 0, 0.8125, 0.3125, 0.0625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.5625, 0.9375, 0.8125, 0.625, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.40625, 0.9375, 0.8125, 0.46875, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.25, 0.9375, 0.8125, 0.3125, 1), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, -0.125, 0.6875, 0.125, 0.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, -0.125, 0.875, 0.3125, 0.125, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, -0.0625, 0.75, 0.75, 0, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, -0.125, 0.875, 0.75, 0.125, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, -0.125, 0.6875, 0.9375, 0.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, -0.125, 0.25, 0.9375, 0.125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, -0.125, 0.25, 0.125, 0.125, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, -0.0625, 0.1875, 0.25, 0, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, -0.0625, 0.1875, 0.75, 0, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, -0.0625, 0.1875, 0.8125, 0, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, -0.125, 0.0625, 0.3125, 0.125, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, -0.125, 0.0625, 0.75, 0.125, 0.125), BooleanOp.OR); - VoxelShapes.registerShape(DeferredRegisters.blockMsrReactorCore, shape, Direction.WEST); - } -} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileMoltenSaltSupplier.java b/src/main/java/nuclearscience/common/tile/TileMoltenSaltSupplier.java deleted file mode 100644 index feec3122..00000000 --- a/src/main/java/nuclearscience/common/tile/TileMoltenSaltSupplier.java +++ /dev/null @@ -1,110 +0,0 @@ -package nuclearscience.common.tile; - -import electrodynamics.common.block.VoxelShapes; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; -import electrodynamics.prefab.tile.components.type.ComponentInventory; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.object.CachedTileOutput; -import electrodynamics.prefab.utilities.object.TransferPack; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; -import nuclearscience.DeferredRegisters; -import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; -import nuclearscience.common.settings.Constants; - -public class TileMoltenSaltSupplier extends GenericTile { - - protected CachedTileOutput output; - - public TileMoltenSaltSupplier(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_MOLTENSALTSUPPLIER.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).voltage(Constants.MOLTENSALTSUPPLIER_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).input(Direction.UP).input(Direction.DOWN).maxJoules(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK * 20)); - addComponent(new ComponentInventory(this).size(1).inputs(1).slotFaces(0, Direction.values()).valid((slot, stack, i) -> stack.getItem() == DeferredRegisters.ITEM_LIFHT4PUF3.get())); - addComponent(new ComponentContainerProvider("container.moltensaltsupplier").createMenu((id, player) -> new ContainerMoltenSaltSupplier(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); - } - - public void tickServer(ComponentTickable tickable) { - Direction dir = this.getComponent(ComponentType.Direction).getDirection(); - if (output == null) { - output = new CachedTileOutput(level, worldPosition.relative(dir.getOpposite())); - } - if (tickable.getTicks() % 50 == 0) { - this.getComponent(ComponentType.PacketHandler).sendGuiPacketToTracking(); - } - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); - if (electro.getJoulesStored() > Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK) { - electro.extractPower(TransferPack.joulesVoltage(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK, Constants.MOLTENSALTSUPPLIER_VOLTAGE), false); - if (tickable.getTicks() % 40 == 0) { - output.update(worldPosition.relative(dir.getOpposite())); - ItemStack in = this.getComponent(ComponentType.Inventory).getItem(0); - if (in.getCount() > 0 && output.valid() && output.getSafe() instanceof TileMSRReactorCore core) { - if (core.getComponent(ComponentType.Direction).getDirection() == dir) { - if (TileMSRReactorCore.FUEL_CAPACITY - core.currentFuel >= 250) { - in.shrink(1); - core.currentFuel += 250; - } - } - } - } - } - } - - static { - VoxelShape shape = Shapes.empty(); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.125, 0.25, 0.9375, 0.75, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.1875, 0.1875, 0.9375, 0.6875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.1875, 0.75, 0.9375, 0.6875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0, 0.1875, 0.25, 0.0625, 0.6875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.9375, 0.1875, 0.25, 1, 0.6875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.0625, 0.25, 0.75, 0.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0, 0.3125, 0.6875, 0.0625, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.125, 0.1875, 0.875, 0.1875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.125, 0.75, 0.875, 0.1875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.1875, 0.125, 0.875, 0.6875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.1875, 0.8125, 0.875, 0.6875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.0625, 0.25, 0.875, 0.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.0625, 0.3125, 0.8125, 0.125, 0.375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.0625, 0.625, 0.8125, 0.125, 0.6875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.75, 0.25, 0.875, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.6875, 0.75, 0.875, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.6875, 0.1875, 0.875, 0.75, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.125, 0.1875, 0.6875, 0.1875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.125, 0.75, 0.6875, 0.1875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.1875, 0.125, 0.6875, 0.6875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.1875, 0.8125, 0.6875, 0.6875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.75, 0.25, 0.6875, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.6875, 0.75, 0.6875, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.625, 0.6875, 0.1875, 0.6875, 0.75, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.125, 0.1875, 0.375, 0.1875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.125, 0.75, 0.375, 0.1875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.125, 0.375, 0.6875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.1875, 0.8125, 0.375, 0.6875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.75, 0.25, 0.375, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.6875, 0.75, 0.375, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.3125, 0.6875, 0.1875, 0.375, 0.75, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.125, 0.1875, 0.1875, 0.1875, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.125, 0.75, 0.1875, 0.1875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.1875, 0.125, 0.1875, 0.6875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.1875, 0.8125, 0.1875, 0.6875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.0625, 0.25, 0.1875, 0.125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.75, 0.25, 0.1875, 0.8125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.6875, 0.75, 0.1875, 0.75, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.6875, 0.1875, 0.1875, 0.75, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.0625, 0.3125, 0.25, 0.125, 0.375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.0625, 0.625, 0.25, 0.125, 0.6875), BooleanOp.OR); - VoxelShapes.registerShape(DeferredRegisters.blockMoltenSaltSupplier, shape, Direction.EAST); - } -} diff --git a/src/main/java/nuclearscience/common/tile/TileNuclearBoiler.java b/src/main/java/nuclearscience/common/tile/TileNuclearBoiler.java index 50871630..24733f97 100644 --- a/src/main/java/nuclearscience/common/tile/TileNuclearBoiler.java +++ b/src/main/java/nuclearscience/common/tile/TileNuclearBoiler.java @@ -1,22 +1,21 @@ package nuclearscience.common.tile; import electrodynamics.api.capability.ElectrodynamicsCapabilities; -import electrodynamics.api.sound.SoundAPI; +import electrodynamics.prefab.sound.SoundBarrierMethods; +import electrodynamics.prefab.sound.utils.ITickableSound; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -24,26 +23,26 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.FluidTank; -import nuclearscience.DeferredRegisters; -import nuclearscience.SoundRegister; import nuclearscience.common.inventory.container.ContainerNuclearBoiler; import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceSounds; -public class TileNuclearBoiler extends GenericTile { +public class TileNuclearBoiler extends GenericTile implements ITickableSound { - public static final int MAX_TANK_CAPACITY = 5000; + public static final int MAX_FLUID_TANK_CAPACITY = 5000; + + private boolean isSoundPlaying = false; public TileNuclearBoiler(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_CHEMICALBOILER.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).input(Direction.DOWN).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2).maxJoules(Constants.CHEMICALBOILER_USAGE_PER_TICK * 10)); - addComponent(new ComponentFluidHandlerMulti(this).setAddFluidsValues(NuclearScienceRecipeInit.NUCLEAR_BOILER_TYPE.get(), MAX_TANK_CAPACITY, true, true).relativeInput(Direction.EAST).relativeOutput(Direction.WEST)); - addComponent(new ComponentInventory(this).size(6).relativeSlotFaces(0, Direction.EAST, Direction.UP).relativeSlotFaces(1, Direction.DOWN).inputs(1).bucketInputs(1).bucketOutputs(1).upgrades(3).processors(1).processorInputs(1).validUpgrades(ContainerNuclearBoiler.VALID_UPGRADES).valid(machineValidator())); - addComponent(new ComponentProcessor(this).setProcessorNumber(0).canProcess(component -> component.outputToPipe().consumeBucket().dispenseBucket().canProcessFluidItem2FluidRecipe(component, NuclearScienceRecipeInit.NUCLEAR_BOILER_TYPE.get())).process(component -> component.processFluidItem2FluidRecipe(component)).usage(Constants.CHEMICALBOILER_USAGE_PER_TICK).requiredTicks(Constants.CHEMICALBOILER_REQUIRED_TICKS)); - addComponent(new ComponentContainerProvider("container.nuclearboiler").createMenu((id, player) -> new ContainerNuclearBoiler(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + super(NuclearScienceBlockTypes.TILE_CHEMICALBOILER.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer).tickClient(this::tickClient)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).setInputDirections(Direction.DOWN).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2)); + addComponent(new ComponentFluidHandlerMulti(this).setInputTanks(1, new int[] { MAX_FLUID_TANK_CAPACITY }).setInputDirections(Direction.EAST).setOutputTanks(1, arr(MAX_FLUID_TANK_CAPACITY)).setOutputDirections(Direction.WEST).setRecipeType(NuclearScienceRecipeInit.NUCLEAR_BOILER_TYPE.get())); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().processors(1, 1, 0, 0).bucketInputs(1).gasOutputs(1).upgrades(3)).setDirectionsBySlot(0, Direction.NORTH, Direction.UP).validUpgrades(ContainerNuclearBoiler.VALID_UPGRADES).valid(machineValidator())); + addComponent(new ComponentProcessor(this).canProcess(component -> component.outputToFluidPipe().consumeBucket().dispenseBucket().canProcessFluidItem2FluidRecipe(component, NuclearScienceRecipeInit.NUCLEAR_BOILER_TYPE.get())).process(component -> component.processFluidItem2FluidRecipe(component))); + addComponent(new ComponentContainerProvider("container.nuclearboiler", this).createMenu((id, player) -> new ContainerNuclearBoiler(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } @Override @@ -53,34 +52,42 @@ public AABB getRenderBoundingBox() { protected void tickServer(ComponentTickable tickable) { Level world = getLevel(); - ComponentDirection boilerComponentDir = getComponent(ComponentType.Direction); - Direction centrifugeDir = boilerComponentDir.getDirection().getCounterClockWise(); + + Direction centrifugeDir = getFacing().getCounterClockWise(); BlockEntity tile = world.getBlockEntity(getBlockPos().relative(centrifugeDir)); if (tile != null && tile instanceof TileGasCentrifuge centrifuge) { - ComponentFluidHandlerMulti centrifugeHandler = centrifuge.getComponent(ComponentType.FluidHandler); - if (centrifugeHandler != null) { - ComponentDirection centrifugeComponentDir = centrifuge.getComponent(ComponentType.Direction); - if (centrifugeComponentDir.getDirection() == centrifugeDir) { - ComponentFluidHandlerMulti boilerHandler = getComponent(ComponentType.FluidHandler); - FluidTank boilerTank = boilerHandler.getOutputTanks()[0]; - FluidTank centrifugeTank = centrifugeHandler.getInputTanks()[0]; - int accepted = centrifugeTank.fill(boilerTank.getFluid(), FluidAction.SIMULATE); - centrifugeTank.fill(new FluidStack(boilerTank.getFluid().getFluid(), accepted), FluidAction.EXECUTE); - boilerTank.drain(accepted, FluidAction.EXECUTE); - } + ComponentFluidHandlerMulti centrifugeHandler = centrifuge.getComponent(IComponentType.FluidHandler); + if (centrifugeHandler != null && centrifuge.getFacing() == centrifugeDir) { + ComponentFluidHandlerMulti boilerHandler = getComponent(IComponentType.FluidHandler); + FluidTank boilerTank = boilerHandler.getOutputTanks()[0]; + FluidTank centrifugeTank = centrifugeHandler.getInputTanks()[0]; + int accepted = centrifugeTank.fill(boilerTank.getFluid(), FluidAction.SIMULATE); + centrifugeTank.fill(new FluidStack(boilerTank.getFluid().getFluid(), accepted), FluidAction.EXECUTE); + boilerTank.drain(accepted, FluidAction.EXECUTE); + } } - InventoryUtils.handleExperienceUpgrade(this); } protected void tickClient(ComponentTickable tickable) { - boolean running = this.getComponent(ComponentType.Processor).operatingTicks > 0; + boolean running = this.getComponent(IComponentType.Processor).isActive(); if (running && level.random.nextDouble() < 0.15) { level.addParticle(ParticleTypes.SMOKE, worldPosition.getX() + level.random.nextDouble(), worldPosition.getY() + level.random.nextDouble() * 0.4 + 0.5, worldPosition.getZ() + level.random.nextDouble(), 0.0D, 0.0D, 0.0D); } - if (running && tickable.getTicks() % 100 == 0) { - SoundAPI.playSound(SoundRegister.SOUND_NUCLEARBOILER.get(), SoundSource.BLOCKS, 1, 1, worldPosition); + if (shouldPlaySound() && !isSoundPlaying) { + SoundBarrierMethods.playTileSound(NuclearScienceSounds.SOUND_NUCLEARBOILER.get(), this, true); + isSoundPlaying = true; } } -} + @Override + public void setNotPlaying() { + isSoundPlaying = false; + } + + @Override + public boolean shouldPlaySound() { + return this.getComponent(IComponentType.Processor).isActive(); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileParticleInjector.java b/src/main/java/nuclearscience/common/tile/TileParticleInjector.java index b05b67d5..18571c54 100644 --- a/src/main/java/nuclearscience/common/tile/TileParticleInjector.java +++ b/src/main/java/nuclearscience/common/tile/TileParticleInjector.java @@ -2,11 +2,11 @@ import electrodynamics.api.capability.ElectrodynamicsCapabilities; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; @@ -17,24 +17,24 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import nuclearscience.DeferredRegisters; import nuclearscience.common.entity.EntityParticle; import nuclearscience.common.inventory.container.ContainerParticleInjector; import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceItems; public class TileParticleInjector extends GenericTile { private EntityParticle[] particles = new EntityParticle[2]; private long timeSinceSpawn = 0; public TileParticleInjector(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_PARTICLEINJECTOR.get(), pos, state); - addComponent(new ComponentTickable()); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentInventory(this).size(3).inputs(2).outputs(1).valid((index, stack, i) -> index != 1 || stack.getItem() == DeferredRegisters.ITEM_CELLELECTROMAGNETIC.get()).relativeFaceSlots(Direction.UP, 0, 1).relativeFaceSlots(Direction.WEST, 0, 1).relativeSlotFaces(2, Direction.DOWN, Direction.EAST)); - addComponent(new ComponentElectrodynamic(this).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 8).relativeInput(Direction.NORTH).maxJoules(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE * 10)); + super(NuclearScienceBlockTypes.TILE_PARTICLEINJECTOR.get(), pos, state); + addComponent(new ComponentTickable(this)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(2).outputs(1)).valid((index, stack, i) -> index != 1 || stack.getItem() == NuclearScienceItems.ITEM_CELLELECTROMAGNETIC.get()).setSlotsByDirection(Direction.UP, 0, 1).setSlotsByDirection(Direction.WEST, 0, 1).setDirectionsBySlot(2, Direction.DOWN, Direction.EAST)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 8).setInputDirections(Direction.NORTH).maxJoules(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE * 10)); addComponent(new ComponentProcessor(this).canProcess(this::canProcess).usage(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE).process(this::process)); - addComponent(new ComponentContainerProvider("container.particleinjector").createMenu((id, player) -> new ContainerParticleInjector(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + addComponent(new ComponentContainerProvider("container.particleinjector", this).createMenu((id, player) -> new ContainerParticleInjector(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } protected boolean canProcess(ComponentProcessor processor) { @@ -44,7 +44,7 @@ protected boolean canProcess(ComponentProcessor processor) { if (particles[1] != null && !particles[1].isAlive()) { particles[1] = null; } - ComponentInventory inv = getComponent(ComponentType.Inventory); + ComponentInventory inv = getComponent(IComponentType.Inventory); ItemStack resultStack = inv.getItem(2); timeSinceSpawn--; @@ -58,13 +58,13 @@ protected boolean canProcess(ComponentProcessor processor) { isItem = true; } - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); return timeSinceSpawn < 0 && isItem && (particles[0] == null || particles[1] == null) && inv.getItem(0).getCount() > 0 && resultStack.getCount() < resultStack.getMaxStackSize() && electro.getJoulesStored() >= Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE; } public void checkCollision() { - ComponentInventory inv = getComponent(ComponentType.Inventory); + ComponentInventory inv = getComponent(IComponentType.Inventory); ItemStack resultStack = inv.getItem(2); ItemStack cellStack = inv.getItem(1); if (resultStack.getCount() < resultStack.getMaxStackSize() && cellStack.getCount() > 0 && particles[0] != null && particles[1] != null) { @@ -77,19 +77,19 @@ public void checkCollision() { particles[0] = particles[1] = null; double mod = level.random.nextDouble(); if (speedOfMax > 0.999) { - if (resultStack.getItem() == DeferredRegisters.ITEM_CELLDARKMATTER.get()) { + if (resultStack.getItem() == NuclearScienceItems.ITEM_CELLDARKMATTER.get()) { resultStack.setCount(resultStack.getCount() + 1); cellStack.shrink(1); } else if (resultStack.isEmpty()) { - inv.setItem(2, new ItemStack(DeferredRegisters.ITEM_CELLDARKMATTER.get())); + inv.setItem(2, new ItemStack(NuclearScienceItems.ITEM_CELLDARKMATTER.get())); cellStack.shrink(1); } } else if (speedOfMax > mod) { - if (resultStack.getItem() == DeferredRegisters.ITEM_CELLANTIMATTERSMALL.get()) { + if (resultStack.getItem() == NuclearScienceItems.ITEM_CELLANTIMATTERSMALL.get()) { resultStack.setCount(resultStack.getCount() + 1); cellStack.shrink(1); } else if (resultStack.isEmpty()) { - inv.setItem(2, new ItemStack(DeferredRegisters.ITEM_CELLANTIMATTERSMALL.get())); + inv.setItem(2, new ItemStack(NuclearScienceItems.ITEM_CELLANTIMATTERSMALL.get())); cellStack.shrink(1); } } @@ -98,11 +98,11 @@ public void checkCollision() { } public void process(ComponentProcessor processor) { - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); - electro.joules(electro.getJoulesStored() - Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE); + // ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); + // electro.joules(electro.getJoulesStored() - Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE); timeSinceSpawn = 100; - Direction dir = this.getComponent(ComponentType.Direction).getDirection(); - ItemStack stack = this.getComponent(ComponentType.Inventory).getItem(0); + Direction dir = getFacing(); + ItemStack stack = this.getComponent(IComponentType.Inventory).getItem(0); stack.shrink(1); EntityParticle particle = new EntityParticle(dir, level, new Location(worldPosition.getX() + 0.5f + dir.getStepX() * 1.5f, worldPosition.getY() + 0.5f + dir.getStepY() * 1.5f, worldPosition.getZ() + 0.5f + dir.getStepZ() * 1.5f)); addParticle(particle); @@ -124,4 +124,5 @@ public void addParticle(EntityParticle particle) { public AABB getRenderBoundingBox() { return INFINITE_EXTENT_AABB; } -} + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TilePlasma.java b/src/main/java/nuclearscience/common/tile/TilePlasma.java deleted file mode 100644 index 666efc66..00000000 --- a/src/main/java/nuclearscience/common/tile/TilePlasma.java +++ /dev/null @@ -1,61 +0,0 @@ -package nuclearscience.common.tile; - -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.object.CachedTileOutput; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; -import nuclearscience.api.fusion.IElectromagnet; -import nuclearscience.common.settings.Constants; - -public class TilePlasma extends GenericTile { - public int ticksExisted; - public int spread = 6; - private CachedTileOutput output; - - public TilePlasma(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_PLASMA.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - } - - protected void tickServer(ComponentTickable tickable) { - ticksExisted++; - if (ticksExisted > 80) { - level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); - } - if (ticksExisted == 1 && spread > 0) { - for (Direction dir : Direction.values()) { - BlockPos offset = worldPosition.relative(dir); - BlockState state = level.getBlockState(offset); - boolean didntExist = false; - if (state.getBlock() != getBlockState().getBlock()) { - didntExist = true; - if (state.getDestroySpeed(level, offset) != -1 && !(state.getBlock() instanceof IElectromagnet) && state.getBlock() != DeferredRegisters.blockFusionReactorCore) { - level.setBlockAndUpdate(offset, DeferredRegisters.blockPlasma.defaultBlockState()); - } - } - BlockEntity tile = level.getBlockEntity(offset); - if (tile instanceof TilePlasma plasma) { - if (plasma.ticksExisted > 1 && plasma.spread < spread) { - plasma.ticksExisted = ticksExisted - 1; - } - if (didntExist) { - plasma.spread = spread - 1; - } - } - } - } - if (ticksExisted > 1 && level.getBlockState(getBlockPos().relative(Direction.UP)).getBlock() instanceof IElectromagnet && level.getBlockState(getBlockPos().relative(Direction.UP, 2)).getBlock() == Blocks.WATER) { - if (output == null) { - output = new CachedTileOutput(level, getBlockPos().relative(Direction.UP, 3)); - } else if (output.getSafe() instanceof TileTurbine) { - TileTurbine turbine = output.getSafe(); - turbine.addSteam((int) (Constants.FUSIONREACTOR_MAXENERGYTARGET / (113.0 * 20.0)), Integer.MAX_VALUE); - } - } - } -} diff --git a/src/main/java/nuclearscience/common/tile/TileQuantumCapacitor.java b/src/main/java/nuclearscience/common/tile/TileQuantumCapacitor.java index 6b1e5409..ad064c4e 100644 --- a/src/main/java/nuclearscience/common/tile/TileQuantumCapacitor.java +++ b/src/main/java/nuclearscience/common/tile/TileQuantumCapacitor.java @@ -2,9 +2,14 @@ import java.util.UUID; +import org.jetbrains.annotations.NotNull; + import electrodynamics.api.capability.ElectrodynamicsCapabilities; +import electrodynamics.api.capability.types.electrodynamic.ICapabilityElectrodynamic.LoadProfile; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentInventory; @@ -15,7 +20,6 @@ import electrodynamics.prefab.utilities.object.TransferPack; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.Explosion.BlockInteraction; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -23,31 +27,32 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; -import nuclearscience.DeferredRegisters; import nuclearscience.common.inventory.container.ContainerQuantumCapacitor; import nuclearscience.common.world.QuantumCapacitorData; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileQuantumCapacitor extends GenericTile implements IEnergyStorage { public static final double DEFAULT_MAX_JOULES = Double.MAX_VALUE; public static final double DEFAULT_VOLTAGE = 1920.0; - public double outputJoules = 359.0; - public int frequency = 0; - public UUID uuid = UUID.randomUUID(); + public Property outputJoules = property(new Property<>(PropertyType.Double, "outputJoules", 359.0)); + public Property frequency = property(new Property<>(PropertyType.Integer, "frequency", 0)); + public Property storedJoules = property(new Property<>(PropertyType.Double, "capjoules", 0.0));// Work around for now until we make a capability for the overworld + public Property uuid = property(new Property<>(PropertyType.UUID, "uuid", UUID.randomUUID())); private CachedTileOutput outputCache; private CachedTileOutput outputCache2; public TileQuantumCapacitor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_QUANTUMCAPACITOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler().guiPacketReader(this::readGUIPacket).guiPacketWriter(this::writeGUIPacket)); - addComponent(new ComponentElectrodynamic(this).voltage(16 * ElectrodynamicsCapabilities.DEFAULT_VOLTAGE).output(Direction.DOWN).output(Direction.UP).input(Direction.WEST).input(Direction.EAST).input(Direction.SOUTH).input(Direction.NORTH).receivePower(this::receivePower).setJoules(this::setJoulesStored).getJoules(this::getJoulesStored)); + super(NuclearScienceBlockTypes.TILE_QUANTUMCAPACITOR.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, true, true).voltage(16 * ElectrodynamicsCapabilities.DEFAULT_VOLTAGE).setOutputDirections(Direction.UP, Direction.DOWN).setInputDirections(Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST).receivePower(this::receivePower).setJoules(this::setJoulesStored).getJoules(this::getJoulesStored).getConnectedLoad(this::getConnectedLoad)); addComponent(new ComponentInventory(this)); - addComponent(new ComponentContainerProvider("container.quantumcapacitor").createMenu((id, player) -> new ContainerQuantumCapacitor(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + addComponent(new ComponentContainerProvider("container.quantumcapacitor", this).createMenu((id, player) -> new ContainerQuantumCapacitor(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } public double getOutputJoules() { - return outputJoules; + return outputJoules.get(); } public void tickServer(ComponentTickable tickable) { @@ -63,82 +68,41 @@ public void tickServer(ComponentTickable tickable) { } double joules = getJoulesStored(); if (joules > 0 && outputCache.valid()) { - double sent = ElectricityUtils.receivePower(outputCache.getSafe(), Direction.DOWN, TransferPack.joulesVoltage(Math.min(joules, outputJoules), DEFAULT_VOLTAGE), false).getJoules(); - QuantumCapacitorData.get(level).setJoules(uuid, frequency, getJoulesStored() - sent); + double sent = ElectricityUtils.receivePower(outputCache.getSafe(), Direction.DOWN, TransferPack.joulesVoltage(Math.min(joules, outputJoules.get()), DEFAULT_VOLTAGE), false).getJoules(); + QuantumCapacitorData.get(level).setJoules(uuid.get(), frequency.get(), getJoulesStored() - sent); } joules = getJoulesStored(); if (joules > 0 && outputCache2.valid()) { - double sent = ElectricityUtils.receivePower(outputCache2.getSafe(), Direction.UP, TransferPack.joulesVoltage(Math.min(joules, outputJoules), DEFAULT_VOLTAGE), false).getJoules(); - QuantumCapacitorData.get(level).setJoules(uuid, frequency, getJoulesStored() - sent); - } - if (tickable.getTicks() % 50 == 0) { - this.getComponent(ComponentType.PacketHandler).sendGuiPacketToTracking(); + double sent = ElectricityUtils.receivePower(outputCache2.getSafe(), Direction.UP, TransferPack.joulesVoltage(Math.min(joules, outputJoules.get()), DEFAULT_VOLTAGE), false).getJoules(); + QuantumCapacitorData.get(level).setJoules(uuid.get(), frequency.get(), getJoulesStored() - sent); } - } - - public double joulesClient = 0; - - public void writeGUIPacket(CompoundTag nbt) { - nbt.putDouble("joulesClient", getJoulesStored()); - nbt.putInt("frequency", frequency); - nbt.putUUID("uuid", uuid); - nbt.putDouble("outputJoules", outputJoules); - } - - public void readGUIPacket(CompoundTag nbt) { - joulesClient = nbt.getDouble("joulesClient"); - frequency = nbt.getInt("frequency"); - uuid = nbt.getUUID("uuid"); - outputJoules = nbt.getDouble("outputJoules"); - } - - @Override - public void saveAdditional(CompoundTag compound) { - super.saveAdditional(compound); - compound.putInt("frequency", frequency); - compound.putDouble("outputJoules", outputJoules); - compound.putUUID("uuid", uuid); + storedJoules.set(getJoulesStored()); } @Override - public void load(CompoundTag compound) { - super.load(compound); - outputJoules = compound.getDouble("outputJoules"); - frequency = compound.getInt("frequency"); - if (compound.hasUUID("uuid")) { - uuid = compound.getUUID("uuid"); - } - } - - @Override - public LazyOptional getCapability(Capability capability, Direction facing) { + public @NotNull LazyOptional getCapability(@NotNull Capability capability, Direction facing) { if (capability == CapabilityEnergy.ENERGY) { - lastDir = facing; return (LazyOptional) LazyOptional.of(() -> this); } return super.getCapability(capability, facing); } - private Direction lastDir = null; - public TransferPack receivePower(TransferPack transfer, boolean debug) { double joules = getJoulesStored(); - if (lastDir != Direction.UP && lastDir != Direction.DOWN) { - double received = Math.min(Math.min(DEFAULT_MAX_JOULES, transfer.getJoules()), DEFAULT_MAX_JOULES - joules); - if (!debug) { - if (transfer.getVoltage() == DEFAULT_VOLTAGE) { - joules += received; - } - QuantumCapacitorData.get(level).setJoules(uuid, frequency, joules); - if (transfer.getVoltage() > DEFAULT_VOLTAGE) { - level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); - level.explode(null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), (float) Math.log10(10 + transfer.getVoltage() / DEFAULT_VOLTAGE), BlockInteraction.DESTROY); - return TransferPack.EMPTY; - } + double received = Math.min(Math.min(DEFAULT_MAX_JOULES, transfer.getJoules()), DEFAULT_MAX_JOULES - joules); + if (!debug) { + if (transfer.getVoltage() == DEFAULT_VOLTAGE) { + joules += received; + + } + QuantumCapacitorData.get(level).setJoules(uuid.get(), frequency.get(), joules); + if (transfer.getVoltage() > DEFAULT_VOLTAGE) { + level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); + level.explode(null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), (float) Math.log10(10 + transfer.getVoltage() / DEFAULT_VOLTAGE), BlockInteraction.DESTROY); + return TransferPack.EMPTY; } - return TransferPack.joulesVoltage(received, transfer.getVoltage()); } - return TransferPack.EMPTY; + return TransferPack.joulesVoltage(received, transfer.getVoltage()); } @Override @@ -151,7 +115,7 @@ public int receiveEnergy(int maxReceive, boolean simulate) { @Override public int extractEnergy(int maxExtract, boolean simulate) { int calVoltage = 120; - TransferPack pack = this.getComponent(ComponentType.Electrodynamic).extractPower(TransferPack.joulesVoltage(maxExtract, calVoltage), simulate); + TransferPack pack = this.getComponent(IComponentType.Electrodynamic).extractPower(TransferPack.joulesVoltage(maxExtract, calVoltage), simulate); return (int) Math.min(Integer.MAX_VALUE, pack.getJoules()); } @@ -178,17 +142,21 @@ public boolean canReceive() { public void setJoulesStored(double joules) { QuantumCapacitorData data = QuantumCapacitorData.get(level); if (data != null) { - data.setJoules(uuid, frequency, joules); + data.setJoules(uuid.get(), frequency.get(), joules); } } public double getJoulesStored() { QuantumCapacitorData data = QuantumCapacitorData.get(level); - return data == null ? 0 : data.getJoules(uuid, frequency); + return data == null ? 0 : data.getJoules(uuid.get(), frequency.get()); } public double getMaxJoulesStored() { return DEFAULT_MAX_JOULES; } -} + public TransferPack getConnectedLoad(LoadProfile loadProfile, Direction dir) { + return TransferPack.joulesVoltage(getMaxJoulesStored() - getJoulesStored(), this.getComponent(IComponentType.Electrodynamic).getVoltage()); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileRadioactiveProcessor.java b/src/main/java/nuclearscience/common/tile/TileRadioactiveProcessor.java index e2ef8509..378f49f0 100644 --- a/src/main/java/nuclearscience/common/tile/TileRadioactiveProcessor.java +++ b/src/main/java/nuclearscience/common/tile/TileRadioactiveProcessor.java @@ -2,41 +2,50 @@ import electrodynamics.api.capability.ElectrodynamicsCapabilities; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentProcessor; import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.InventoryUtils; +import electrodynamics.prefab.utilities.BlockEntityUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; import nuclearscience.common.inventory.container.ContainerRadioactiveProcessor; import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileRadioactiveProcessor extends GenericTile { public static final int MAX_TANK_CAPACITY = 5000; public TileRadioactiveProcessor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_RADIOACTIVEPROCESSOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentDirection()); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).maxJoules(Constants.RADIOACTIVEPROCESSOR_USAGE_PER_TICK * 10.0).relativeInput(Direction.NORTH)); - addComponent(new ComponentFluidHandlerMulti(this).setAddFluidsValues(NuclearScienceRecipeInit.RADIOACTIVE_PROCESSOR_TYPE.get(), MAX_TANK_CAPACITY, true, false).input(Direction.UP)); - addComponent(new ComponentInventory(this).size(6).inputs(1).outputs(1).bucketInputs(1).upgrades(3).processors(1).processorInputs(1).validUpgrades(ContainerRadioactiveProcessor.VALID_UPGRADES).valid(machineValidator()).faceSlots(Direction.UP, 0).faceSlots(Direction.DOWN, 1).slotFaces(2, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST)); - addComponent(new ComponentProcessor(this).setProcessorNumber(0).usage(Constants.RADIOACTIVEPROCESSOR_USAGE_PER_TICK).requiredTicks((long) Constants.RADIOACTIVEPROCESSOR_REQUIRED_TICKS).canProcess(component -> component.consumeBucket().canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.RADIOACTIVE_PROCESSOR_TYPE.get())).process(component -> component.processFluidItem2ItemRecipe(component))); - addComponent(new ComponentContainerProvider("container.radioactiveprocessor").createMenu((id, player) -> new ContainerRadioactiveProcessor(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + super(NuclearScienceBlockTypes.TILE_RADIOACTIVEPROCESSOR.get(), pos, state); + addComponent(new ComponentTickable(this)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).setInputDirections(Direction.NORTH)); + addComponent(new ComponentFluidHandlerMulti(this).setInputTanks(1, MAX_TANK_CAPACITY).setInputDirections(Direction.UP).setRecipeType(NuclearScienceRecipeInit.RADIOACTIVE_PROCESSOR_TYPE.get())); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().processors(1, 1, 1, 0).bucketInputs(1).upgrades(3)).validUpgrades(ContainerRadioactiveProcessor.VALID_UPGRADES).valid(machineValidator()).setDirectionsBySlot(0, Direction.EAST).setDirectionsBySlot(1, Direction.WEST, Direction.DOWN)); + addComponent(new ComponentProcessor(this).canProcess(this::shouldProcessRecipe).process(component -> component.processFluidItem2ItemRecipe(component))); + addComponent(new ComponentContainerProvider("container.radioactiveprocessor", this).createMenu((id, player) -> new ContainerRadioactiveProcessor(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } - protected void tickServer(ComponentTickable tick) { - InventoryUtils.handleExperienceUpgrade(this); + private boolean shouldProcessRecipe(ComponentProcessor component) { + component.consumeBucket(); + boolean canProcess = component.canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.RADIOACTIVE_PROCESSOR_TYPE.get()); + if (BlockEntityUtils.isLit(this) ^ canProcess) { + BlockEntityUtils.updateLit(this, canProcess); + } + return canProcess; } -} + + @Override + public int getComparatorSignal() { + return this.getComponent(IComponentType.Processor).isActive() ? 15 : 0; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileRadioisotopeGenerator.java b/src/main/java/nuclearscience/common/tile/TileRadioisotopeGenerator.java index d6c973a5..f61eb80a 100644 --- a/src/main/java/nuclearscience/common/tile/TileRadioisotopeGenerator.java +++ b/src/main/java/nuclearscience/common/tile/TileRadioisotopeGenerator.java @@ -1,37 +1,43 @@ package nuclearscience.common.tile; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; import electrodynamics.prefab.utilities.ElectricityUtils; import electrodynamics.prefab.utilities.object.CachedTileOutput; +import electrodynamics.prefab.utilities.object.Location; import electrodynamics.prefab.utilities.object.TransferPack; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; import nuclearscience.api.radiation.IRadioactiveObject; import nuclearscience.api.radiation.RadiationRegister; +import nuclearscience.api.radiation.RadiationSystem; import nuclearscience.common.inventory.container.ContainerRadioisotopeGenerator; import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileRadioisotopeGenerator extends GenericTile { + public static final double RAD_RADIUS = 10; + protected CachedTileOutput output1; protected CachedTileOutput output2; public TileRadioisotopeGenerator(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_RADIOISOTOPEGENERATOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).voltage(Constants.RADIOISOTOPEGENERATOR_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).output(Direction.UP).output(Direction.DOWN)); - addComponent(new ComponentInventory(this).size(1).slotFaces(0, Direction.values()).valid((slot, stack, i) -> RadiationRegister.get(stack.getItem()) != RadiationRegister.NULL)); - addComponent(new ComponentContainerProvider("container.radioisotopegenerator").createMenu((id, player) -> new ContainerRadioisotopeGenerator(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); + super(NuclearScienceBlockTypes.TILE_RADIOISOTOPEGENERATOR.get(), pos, state); + + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, true, false).voltage(Constants.RADIOISOTOPEGENERATOR_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).setOutputDirections(Direction.DOWN, Direction.UP)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(1)).setDirectionsBySlot(0, Direction.values()).valid((slot, stack, i) -> !RadiationRegister.get(stack.getItem()).isNull())); + addComponent(new ComponentContainerProvider("container.radioisotopegenerator", this).createMenu((id, player) -> new ContainerRadioisotopeGenerator(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); } public void tickServer(ComponentTickable tickable) { @@ -45,9 +51,12 @@ public void tickServer(ComponentTickable tickable) { output1.update(worldPosition.relative(Direction.UP)); output2.update(worldPosition.relative(Direction.DOWN)); } - ItemStack in = this.getComponent(ComponentType.Inventory).getItem(0); + ItemStack in = this.getComponent(IComponentType.Inventory).getItem(0); IRadioactiveObject rad = RadiationRegister.get(in.getItem()); double currentOutput = in.getCount() * Constants.RADIOISOTOPEGENERATOR_OUTPUT_MULTIPLIER * rad.getRadiationStrength(); + + RadiationSystem.emitRadiationFromLocation(getLevel(), new Location(getBlockPos()), ((double) in.getCount() / (double) in.getMaxStackSize()) * RAD_RADIUS, rad.getRadiationStrength()); + if (currentOutput > 0) { TransferPack transfer = TransferPack.ampsVoltage(currentOutput / (Constants.RADIOISOTOPEGENERATOR_VOLTAGE * 2.0), Constants.RADIOISOTOPEGENERATOR_VOLTAGE); if (output1.valid()) { @@ -58,4 +67,17 @@ public void tickServer(ComponentTickable tickable) { } } } -} + + @Override + public int getComparatorSignal() { + + ItemStack stack = this.getComponent(IComponentType.Inventory).getItem(0); + + if (stack.isEmpty()) { + return 0; + } + + return (int) (((double) stack.getCount() / (double) stack.getMaxStackSize()) * 15.0); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileReactorCore.java b/src/main/java/nuclearscience/common/tile/TileReactorCore.java deleted file mode 100644 index bd7e37e8..00000000 --- a/src/main/java/nuclearscience/common/tile/TileReactorCore.java +++ /dev/null @@ -1,343 +0,0 @@ -package nuclearscience.common.tile; - -import java.util.List; - -import electrodynamics.common.block.VoxelShapes; -import electrodynamics.common.recipe.ElectrodynamicsRecipe; -import electrodynamics.common.recipe.categories.item2item.Item2ItemRecipe; -import electrodynamics.common.recipe.recipeutils.CountableIngredient; -import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; -import electrodynamics.prefab.tile.components.type.ComponentDirection; -import electrodynamics.prefab.tile.components.type.ComponentInventory; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; -import electrodynamics.prefab.tile.components.type.ComponentTickable; -import electrodynamics.prefab.utilities.object.Location; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Explosion; -import net.minecraft.world.level.Explosion.BlockInteraction; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.BooleanOp; -import net.minecraft.world.phys.shapes.Shapes; -import net.minecraft.world.phys.shapes.VoxelShape; -import nuclearscience.DeferredRegisters; -import nuclearscience.api.radiation.DamageSourceRadiation; -import nuclearscience.api.radiation.RadiationSystem; -import nuclearscience.common.inventory.container.ContainerReactorCore; -import nuclearscience.common.recipe.NuclearScienceRecipeInit; -import nuclearscience.common.settings.Constants; - -public class TileReactorCore extends GenericTile { - public static final int MELTDOWN_TEMPERATURE_ACTUAL = 5611; - public static final int MELTDOWN_TEMPERATURE_CALC = 4407; - // NB! THE VALUES ABOVE ARE USED FROM THE VERY OLD CALCULATION CODE I MADE BACK - // IN EARLY 2019. READ LINE 51 - // TO SEE WHAT THE ACTUAL "TEMPERATURE" IS. THE VALUES ABOVE ARENT "REAL" - // VALUES. - public static final int WATER_TEMPERATURE = 10; - public static final int AIR_TEMPERATURE = 15; - public static final int MAX_FUEL_COUNT = 3 * 4; - public static final int STEAM_GEN_DIAMETER = 5; - public static final int STEAM_GEN_HEIGHT = 2; - private TileTurbine[][][] cachedTurbines = new TileTurbine[STEAM_GEN_DIAMETER][STEAM_GEN_HEIGHT][STEAM_GEN_DIAMETER]; - public double temperature = AIR_TEMPERATURE; // Actual real temperature is calculated by temp / 4 + 15 in the gui - public boolean hasDeuterium = false; - public int ticksOverheating = 0; - public int fuelCount = 0; - public int ticks = 0; - - private List cachedRecipes; - - public TileReactorCore(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_REACTORCORE.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickCommon(this::tickCommon).tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket).guiPacketReader(this::readCustomPacket).guiPacketWriter(this::writeCustomPacket)); - addComponent(new ComponentInventory(this).inputs(5).outputs(1).size(6).faceSlots(Direction.UP, 0, 1, 2, 3, 4).faceSlots(Direction.DOWN, 5)); - addComponent(new ComponentContainerProvider("container.reactorcore").createMenu((id, player) -> new ContainerReactorCore(id, player, getComponent(ComponentType.Inventory), getCoordsArray()))); - } - - protected void tickServer(ComponentTickable tickable) { - ComponentInventory inv = getComponent(ComponentType.Inventory); - if (tickable.getTicks() % 10 == 0) { - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - } - fuelCount = 0; - for (int i = 0; i < 4; i++) { - ItemStack stack = inv.getItem(i); - fuelCount += stack.getItem() == DeferredRegisters.ITEM_FUELLEUO2.get() ? 2 : stack.getItem() == DeferredRegisters.ITEM_FUELHEUO2.get() ? 3 : stack.getItem() == DeferredRegisters.ITEM_FUELPLUTONIUM.get() ? 2 : 0; - } - hasDeuterium = !inv.getItem(4).isEmpty(); - - double decrease = (temperature - AIR_TEMPERATURE) / 3000.0; - if (fuelCount == 0) { - decrease *= 25; - } - boolean hasWater = !getBlockState().getFluidState().isEmpty(); - if (hasWater) { - decrease += (temperature - WATER_TEMPERATURE) / 5000.0; - } - if (decrease != 0) { - temperature -= decrease < 0.001 && decrease > 0 ? 0.001 : decrease > -0.001 && decrease < 0 ? -0.001 : decrease; - } - if (fuelCount > 0 && ticks > 50) { - BlockEntity tile = level.getBlockEntity(worldPosition.below()); - int insertion = 0; - if (tile instanceof TileControlRodAssembly assembly) { - insertion = assembly.isMSR ? 0 : assembly.insertion; - } - double insertDecimal = (100 - insertion) / 100.0; - if (level.random.nextFloat() < insertDecimal) { - for (int slot = 0; slot < 4; slot++) { - ItemStack fuelRod = inv.getItem(slot); - if (fuelRod != ItemStack.EMPTY && fuelRod.getDamageValue() >= fuelRod.getMaxDamage()) { - inv.setItem(slot, new ItemStack(DeferredRegisters.ITEM_FUELSPENT.get())); - } - fuelRod.setDamageValue((int) (fuelRod.getDamageValue() + 1 + Math.round(temperature) / MELTDOWN_TEMPERATURE_CALC)); - } - } - temperature += (MELTDOWN_TEMPERATURE_CALC * insertDecimal * (0.25 * (fuelCount / 2.0) + level.random.nextDouble() / 5.0) - temperature) / (200 + 20 * (hasWater ? 4.0 : 1)); - if (temperature > MELTDOWN_TEMPERATURE_ACTUAL + level.random.nextInt(50) && fuelCount > 0) { - ticksOverheating++; - // Implement some alarm sounds at this time - if (ticksOverheating > 10 * 20) { - meltdown(); - } - } - } else { - ticksOverheating = 0; - } - temperature = Math.max(AIR_TEMPERATURE, temperature); - if (fuelCount > 0 && level.random.nextFloat() < 1 / (1200.0 * MELTDOWN_TEMPERATURE_CALC / temperature)) { - processFissReact(inv); - } - } - - protected void tickCommon(ComponentTickable tickable) { - ticks = ticks > Integer.MAX_VALUE - 2 ? 0 : ticks + 1; - if (ticks % 20 == 0) { - level.getLightEngine().checkBlock(worldPosition); - } - if (fuelCount > 0 && ticks > 50) { - if (level.getLevelData().getGameTime() % 10 == 0) { - Location source = new Location(worldPosition); - double totstrength = temperature * 10; - double range = Math.sqrt(totstrength) / (5 * Math.sqrt(2)) * 2; - if (level.getLevelData().getGameTime() % 10 == 0) { - RadiationSystem.emitRadiationFromLocation(level, source, range, totstrength); - } - if (temperature > 100) { - AABB bb = AABB.ofSize(new Vec3(source.x(), source.y(), source.z()), 4, 4, 4); - List list = level.getEntitiesOfClass(LivingEntity.class, bb); - for (LivingEntity living : list) { - FluidState state = level.getBlockState(living.getOnPos()).getFluidState(); - if (state.is(Fluids.WATER) || state.is(Fluids.FLOWING_WATER)) { - living.hurt(DamageSource.DROWN, 3); - } - } - } - } - } - produceSteam(); - } - - public void meltdown() { - if (!level.isClientSide) { - int radius = STEAM_GEN_DIAMETER / 2; - level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); - for (int i = -radius; i <= radius; i++) { - for (int j = -radius; j <= radius; j++) { - for (int k = -radius; k <= radius; k++) { - BlockPos ppos = new BlockPos(worldPosition.getX() + i, worldPosition.getY() + j, worldPosition.getZ() + k); - BlockState state = level.getBlockState(ppos); - if (state.getBlock() == Blocks.WATER) { - level.setBlockAndUpdate(ppos, Blocks.AIR.defaultBlockState()); - } - } - } - } - level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); - // Feel free to switch to a different damage source; I figured radiation fitted - // the best - // switch to false if you don't want fire - // for the final null, you can pass in a ExplosionCalculator if you want to do a - // custom explosion - Explosion actual = new Explosion(level, null, DamageSourceRadiation.INSTANCE, null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), 20, true, BlockInteraction.BREAK); - // Explosion actual = new Explosion(level, null, worldPosition.getX(), - // worldPosition.getY(), worldPosition.getZ(), 20, new ArrayList<>()); - radius = 3 * fuelCount; - for (int i = -radius; i <= radius; i++) { - for (int j = -radius; j <= radius; j++) { - for (int k = -radius; k <= radius; k++) { - BlockPos ppos = new BlockPos(worldPosition.getX() + i, worldPosition.getY() + j, worldPosition.getZ() + k); - BlockState state = level.getBlockState(ppos); - if (state.getBlock().getExplosionResistance(state, level, ppos, actual) < radius) { - double distance = Math.sqrt(i * i + j * j + k * k); - if (distance < radius && level.random.nextFloat() < 1 - 0.0001 * distance * distance * distance && level.random.nextFloat() < 0.9) { - level.getBlockState(ppos).onBlockExploded(level, ppos, actual); - } - } - } - } - } - level.explode(null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), 20, BlockInteraction.DESTROY); - level.setBlockAndUpdate(worldPosition, DeferredRegisters.blockMeltedReactor.defaultBlockState()); - } - } - - protected void produceSteam() { - if (temperature <= 400) { - return; - } - for (int i = 0; i < STEAM_GEN_DIAMETER; i++) { - for (int j = 0; j < STEAM_GEN_HEIGHT; j++) { - for (int k = 0; k < STEAM_GEN_DIAMETER; k++) { - boolean isReactor2d = i - STEAM_GEN_DIAMETER / 2 == 0 && k - STEAM_GEN_DIAMETER / 2 == 0; - if (isReactor2d && j == 0) { - if (!level.isClientSide && level.random.nextFloat() < temperature / (MELTDOWN_TEMPERATURE_CALC * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { - if (level.getBlockState(worldPosition).hasProperty(BlockStateProperties.WATERLOGGED)) { - level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); - } - } - continue; - } - int offsetX = worldPosition.getX() + i - STEAM_GEN_DIAMETER / 2; - int offsetY = worldPosition.getY() + j; - int offsetZ = worldPosition.getZ() + k - STEAM_GEN_DIAMETER / 2; - BlockPos offpos = new BlockPos(offsetX, offsetY, offsetZ); - Block offset = level.getBlockState(offpos).getBlock(); - if (offset == Blocks.WATER) { - boolean isFaceWater = level.getBlockState(new BlockPos(offsetX, worldPosition.getY(), worldPosition.getZ())).getBlock() == Blocks.WATER || level.getBlockState(new BlockPos(worldPosition.getX(), worldPosition.getY(), offsetZ)).getBlock() == Blocks.WATER || isReactor2d; - if (isFaceWater) { - if (!level.isClientSide) { - TileTurbine turbine = cachedTurbines[i][j][k]; - if (turbine != null) { - if (turbine.isRemoved()) { - cachedTurbines[i][j][k] = null; - } - turbine.addSteam((int) (Constants.FISSIONREACTOR_MAXENERGYTARGET / (STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * 20.0 * (MELTDOWN_TEMPERATURE_ACTUAL / temperature))), (int) temperature); - } - if (level.random.nextFloat() < temperature / (MELTDOWN_TEMPERATURE_CALC * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { - level.setBlockAndUpdate(offpos, Blocks.AIR.defaultBlockState()); - continue; - } - if (turbine == null || turbine.isRemoved()) { - BlockEntity above = level.getBlockEntity(new BlockPos(offsetX, offsetY + 1, offsetZ)); - if (above instanceof TileTurbine trb) { - cachedTurbines[i][j][k] = trb; - } else { - cachedTurbines[i][j][k] = null; - } - } - } else if (level.isClientSide && level.random.nextFloat() < temperature / (MELTDOWN_TEMPERATURE_ACTUAL * 3)) { - double offsetFX = offsetX + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); - double offsetFY = offsetY + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); - double offsetFZ = offsetZ + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); - level.addParticle(ParticleTypes.BUBBLE, offsetFX + 0.5D, offsetFY + 0.20000000298023224D, offsetFZ + 0.5D, 0.0D, 0.0D, 0.0D); - if (level.random.nextInt(3) == 0) { - level.addParticle(ParticleTypes.SMOKE, offsetFX + 0.5D, offsetFY + 0.5D, offsetFZ + 0.5D, 0.0D, 0.0D, 0.0D); - } - } - } - } - } - } - } - } - - protected void writeCustomPacket(CompoundTag tag) { - ComponentInventory inv = getComponent(ComponentType.Inventory); - tag.putBoolean("hasDeuterium", hasDeuterium); - tag.putDouble("temperature", temperature); - tag.putInt("fuelCount", inv.countItem(DeferredRegisters.ITEM_FUELHEUO2.get()) + inv.countItem(DeferredRegisters.ITEM_FUELLEUO2.get())); - } - - protected void readCustomPacket(CompoundTag nbt) { - hasDeuterium = nbt.getBoolean("hasDeuterium"); - temperature = nbt.getDouble("temperature"); - fuelCount = nbt.getInt("fuelCount"); - } - - public void processFissReact(ComponentInventory inv) { - - int inputSlot = 4; - int outputSlot = 5; - - ItemStack input = inv.getItem(inputSlot); - ItemStack output = inv.getItem(outputSlot); - - if (input != null && !input.isEmpty()) { - if (cachedRecipes == null || cachedRecipes.isEmpty()) { - cachedRecipes = ElectrodynamicsRecipe.findRecipesbyType(NuclearScienceRecipeInit.FISSION_REACTOR_TYPE.get(), level); - } - for (ElectrodynamicsRecipe iRecipe : cachedRecipes) { - Item2ItemRecipe recipe = (Item2ItemRecipe) iRecipe; - for (CountableIngredient ing : recipe.getCountedIngredients()) { - if (ing.testStack(input)) { - if (output.isEmpty()) { - inv.setItem(outputSlot, recipe.getResultItem().copy()); - input.shrink(recipe.getCountedIngredients().get(0).getStackSize()); - } else if (output.getCount() <= output.getMaxStackSize() + recipe.getResultItem().getCount()) { - output.grow(recipe.getResultItem().getCount()); - input.shrink(recipe.getCountedIngredients().get(0).getStackSize()); - } - } - } - - } - } - } - - static { - VoxelShape shape = Shapes.empty(); - - shape = Shapes.join(shape, Shapes.box(0.40625, 0.115675, 0.40625, 0.59375, 0.7088875, 0.59375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.06565, 0.125, 0.75, 0.1148875, 0.1875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.84375, 0.7878, 0.25, 0.90625, 0.8370375, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.8125, 0.06565, 0.25, 0.875, 0.1148875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.72215, 0.125, 0.125, 0.7878, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.06565, 0.875, 0.25, 0.72215, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.06565, 0.0625, 0.25, 0.72215, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.06565, 0.25, 0.3125, 0.72215, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.06565, 0.6875, 0.3125, 0.72215, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.06565, 0.25, 0.75, 0.72215, 0.3125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.6875, 0.06565, 0.6875, 0.75, 0.72215, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.06565, 0.875, 0.8125, 0.72215, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.75, 0.06565, 0.0625, 0.8125, 0.72215, 0.125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.06565, 0.75, 0.125, 0.72215, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0.06565, 0.1875, 0.125, 0.72215, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.06565, 0.75, 0.9375, 0.72215, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.06565, 0.1875, 0.9375, 0.72215, 0.25), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.0625, 0, 0.125, 0.125, 0.06565, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.09375, 0.7878, 0.25, 0.15625, 0.8370375, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.06565, 0.25, 0.1875, 0.1148875, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0, 0.125, 0.9375, 0.06565, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0, 0.0625, 0.875, 0.06565, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.125, 0.72215, 0.0625, 0.875, 0.7878, 0.9375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.15625, 0.7878, 0.15625, 0.84375, 0.8370375, 0.84375), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.06565, 0.1875, 0.8125, 0.1148875, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.1875, 0.8370375, 0.1875, 0.8125, 0.886275, 0.8125), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.886275, 0.25, 0.75, 0.9355125, 0.75), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.7878, 0.84375, 0.75, 0.8370375, 0.90625), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.06565, 0.8125, 0.75, 0.1148875, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.875, 0.72215, 0.125, 0.9375, 0.7878, 0.875), BooleanOp.OR); - shape = Shapes.join(shape, Shapes.box(0.25, 0.7878, 0.09375, 0.75, 0.8370375, 0.15625), BooleanOp.OR); - VoxelShapes.registerShape(DeferredRegisters.blockReactorCore, shape, Direction.NORTH); - } - -} diff --git a/src/main/java/nuclearscience/common/tile/TileSiren.java b/src/main/java/nuclearscience/common/tile/TileSiren.java index 1ffeacb6..4492cb47 100644 --- a/src/main/java/nuclearscience/common/tile/TileSiren.java +++ b/src/main/java/nuclearscience/common/tile/TileSiren.java @@ -6,15 +6,19 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; -import nuclearscience.SoundRegister; +import net.minecraft.world.phys.BlockHitResult; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceSounds; public class TileSiren extends GenericTile { public TileSiren(BlockPos worldPos, BlockState blockState) { - super(DeferredRegisters.TILE_SIREN.get(), worldPos, blockState); - addComponent(new ComponentTickable().tickClient(this::tickClient)); + super(NuclearScienceBlockTypes.TILE_SIREN.get(), worldPos, blockState); + addComponent(new ComponentTickable(this).tickClient(this::tickClient)); } public void tickClient(ComponentTickable tick) { @@ -26,9 +30,14 @@ public void tickClient(ComponentTickable tick) { volume += 2; } } - SoundAPI.playSound(SoundRegister.SOUND_SIREN.get(), SoundSource.BLOCKS, volume, 1, worldPosition); + SoundAPI.playSound(NuclearScienceSounds.SOUND_SIREN.get(), SoundSource.BLOCKS, volume, 1, worldPosition); } } } -} + @Override + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileTeleporter.java b/src/main/java/nuclearscience/common/tile/TileTeleporter.java index a21b489c..6c512c54 100644 --- a/src/main/java/nuclearscience/common/tile/TileTeleporter.java +++ b/src/main/java/nuclearscience/common/tile/TileTeleporter.java @@ -4,11 +4,11 @@ import electrodynamics.api.capability.ElectrodynamicsCapabilities; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; -import electrodynamics.prefab.tile.components.type.ComponentDirection; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.BlockEntityUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -17,8 +17,9 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import nuclearscience.DeferredRegisters; import nuclearscience.common.item.ItemFrequencyCard; +import nuclearscience.registers.NuclearScienceBlockTypes; +import org.jetbrains.annotations.NotNull; public class TileTeleporter extends GenericTile { public int xCoord; @@ -28,11 +29,11 @@ public class TileTeleporter extends GenericTile { public String world; public TileTeleporter(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_TELEPORTER.get(), pos, state); - addComponent(new ComponentDirection()); - addComponent(new ComponentTickable().tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler()); - addComponent(new ComponentElectrodynamic(this).maxJoules(5000000).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).input(Direction.DOWN)); + super(NuclearScienceBlockTypes.TILE_TELEPORTER.get(), pos, state); + + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).maxJoules(5000000).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4).setInputDirections(Direction.DOWN)); } @@ -42,9 +43,10 @@ public AABB getRenderBoundingBox() { } protected void tickServer(ComponentTickable tickable) { - ComponentElectrodynamic electro = getComponent(ComponentType.Electrodynamic); - if (tickable.getTicks() % (electro.getJoulesStored() == 0 ? 40 : 15) == 0) { - this.getComponent(ComponentType.PacketHandler).sendGuiPacketToTracking(); + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + boolean powered = electro.getJoulesStored() > 0; + if (BlockEntityUtils.isLit(this) ^ powered) { + BlockEntityUtils.updateLit(this, powered); } if (cooldown <= 0) { cooldown = 20; @@ -66,7 +68,7 @@ protected void tickServer(ComponentTickable tickable) { } @Override - public void saveAdditional(CompoundTag compound) { + public void saveAdditional(@NotNull CompoundTag compound) { // TODO: Maybe sent information to the client? if (world != null) { compound.putInt("xCoord", xCoord); compound.putInt("yCoord", yCoord); @@ -77,7 +79,7 @@ public void saveAdditional(CompoundTag compound) { } @Override - public void load(CompoundTag compound) { + public void load(@NotNull CompoundTag compound) { super.load(compound); if (compound.contains("world")) { xCoord = compound.getInt("xCoord"); @@ -86,4 +88,4 @@ public void load(CompoundTag compound) { world = compound.getString("world"); } } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileTurbine.java b/src/main/java/nuclearscience/common/tile/TileTurbine.java index c18f80c7..01c94aeb 100644 --- a/src/main/java/nuclearscience/common/tile/TileTurbine.java +++ b/src/main/java/nuclearscience/common/tile/TileTurbine.java @@ -1,8 +1,14 @@ package nuclearscience.common.tile; -import electrodynamics.api.sound.SoundAPI; +import org.jetbrains.annotations.NotNull; + +import electrodynamics.common.tile.machines.quarry.TileQuarry; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.sound.SoundBarrierMethods; +import electrodynamics.prefab.sound.utils.ITickableSound; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; +import electrodynamics.prefab.tile.components.IComponentType; import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; @@ -11,37 +17,46 @@ import electrodynamics.prefab.utilities.object.TransferPack; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import nuclearscience.DeferredRegisters; -import nuclearscience.SoundRegister; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import nuclearscience.api.turbine.ISteamReceiver; import nuclearscience.common.block.BlockTurbine; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceSounds; + +public class TileTurbine extends GenericTile implements ITickableSound, ISteamReceiver { + + public static final double MAX_STEAM = 3000000; + public Property spinSpeed = property(new Property<>(PropertyType.Integer, "spinSpeed", 0)); + public Property hasCore = property(new Property<>(PropertyType.Boolean, "hasCore", false)); + public Property isCore = property(new Property<>(PropertyType.Boolean, "isCore", false)); + public Property coreLocation = property(new Property<>(PropertyType.BlockPos, "coreLocation", TileQuarry.OUT_OF_REACH)); + public Property currentVoltage = property(new Property<>(PropertyType.Integer, "turbinecurvoltage", 0)); + public Property steam = property(new Property<>(PropertyType.Double, "steam", 0.0)); + public Property wait = property(new Property<>(PropertyType.Integer, "wait", 30)); + protected CachedTileOutput output; -public class TileTurbine extends GenericTile { + private boolean isSoundPlaying = false; - public static final int MAX_STEAM = 3000000; - public int spinSpeed = 0; - public boolean isCore; - protected CachedTileOutput output; - protected int currentVoltage = 0; - protected int steam; - protected int wait = 30; - protected boolean hasCore; - protected BlockPos coreLocation = BlockPos.ZERO; + private boolean destroyed = false; @Override public AABB getRenderBoundingBox() { - return isCore ? super.getRenderBoundingBox().inflate(1, 0, 1) : super.getRenderBoundingBox(); + return isCore.get() ? super.getRenderBoundingBox().inflate(1, 0, 1) : super.getRenderBoundingBox(); } public TileTurbine(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_TURBINE.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer).tickClient(this::tickClient)); - addComponent(new ComponentPacketHandler().customPacketWriter(this::writeCustomPacket).customPacketReader(this::readCustomPacket)); - addComponent(new ComponentElectrodynamic(this).output(Direction.UP).setCapabilityTest(() -> (!hasCore || isCore))); + super(NuclearScienceBlockTypes.TILE_TURBINE.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer).tickClient(this::tickClient)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, true, false).setOutputDirections(Direction.UP).setCapabilityTest(() -> (!hasCore.get() || isCore.get()))); } public void constructStructure() { @@ -50,13 +65,13 @@ public void constructStructure() { for (int j = -radius; j <= radius; j++) { if (i != 0 || j != 0) { BlockEntity tile = level.getBlockEntity(new BlockPos(worldPosition.getX() + i, worldPosition.getY(), worldPosition.getZ() + j)); - if (tile instanceof TileTurbine turbine ? turbine.hasCore : true) { + if (tile instanceof TileTurbine turbine ? turbine.hasCore.get() : true) { return; } } } } - isCore = true; + isCore.set(true); for (int i = -radius; i <= radius; i++) { for (int j = -radius; j <= radius; j++) { BlockPos offset = new BlockPos(worldPosition.getX() + i, worldPosition.getY(), worldPosition.getZ() + j); @@ -68,7 +83,7 @@ public void constructStructure() { } public void deconstructStructure() { - if (isCore) { + if (isCore.get()) { int radius = 1; for (int i = -radius; i <= radius; i++) { for (int j = -radius; j <= radius; j++) { @@ -76,8 +91,8 @@ public void deconstructStructure() { BlockPos offset = new BlockPos(worldPosition.getX() + i, worldPosition.getY(), worldPosition.getZ() + j); BlockEntity tile = level.getBlockEntity(offset); if (tile instanceof TileTurbine turbine) { - turbine.hasCore = false; - turbine.coreLocation = new BlockPos(0, 0, 0); + turbine.hasCore.set(false); + turbine.coreLocation.set(new BlockPos(0, 0, 0)); BlockState state = level.getBlockState(offset); if (state.hasProperty(BlockTurbine.RENDER)) { level.setBlockAndUpdate(offset, state.setValue(BlockTurbine.RENDER, true)); @@ -86,112 +101,120 @@ public void deconstructStructure() { } } } - isCore = false; - hasCore = false; - coreLocation = new BlockPos(0, 0, 0); + isCore.set(false); + hasCore.set(false); + coreLocation.set(TileQuarry.OUT_OF_REACH); BlockState state = getBlockState(); - if (state.hasProperty(BlockTurbine.RENDER)) { + if (state.hasProperty(BlockTurbine.RENDER) && !destroyed) { level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockTurbine.RENDER, true)); } - } else if (hasCore) { - TileTurbine core = (TileTurbine) level.getBlockEntity(coreLocation); + } else if (hasCore.get()) { + TileTurbine core = (TileTurbine) level.getBlockEntity(coreLocation.get()); if (core != null) { core.deconstructStructure(); } } - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); } protected void addToStructure(TileTurbine core) { - coreLocation = core.worldPosition; - hasCore = true; - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - } - - public void addSteam(int steam, int temp) { - this.steam = Math.min(MAX_STEAM * (isCore ? 9 : 1), this.steam + steam); - if (temp < 4300) { - currentVoltage = 120; - } else if (temp < 6000) { - currentVoltage = 240; - } else { - currentVoltage = 480; - } - if (!isCore && hasCore) { - BlockEntity core = level.getBlockEntity(coreLocation); - if (core instanceof TileTurbine turbine && ((TileTurbine) core).isCore) { - turbine.addSteam(this.steam, temp); - this.steam = 0; - } - } + coreLocation.set(core.worldPosition); + hasCore.set(true); } public void tickServer(ComponentTickable tickable) { - this.getComponent(ComponentType.Electrodynamic).voltage(currentVoltage); + this.getComponent(IComponentType.Electrodynamic).voltage(currentVoltage.get()); if (output == null) { output = new CachedTileOutput(level, worldPosition.relative(Direction.UP)); } - if (tickable.getTicks() % 30 == 0) { - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - spinSpeed = currentVoltage / 120; - output.update(worldPosition.relative(Direction.UP)); - } - if (hasCore && !isCore) { - currentVoltage = 0; + spinSpeed.set(currentVoltage.get() / 120); + output.update(worldPosition.relative(Direction.UP)); + if (hasCore.get() && !isCore.get()) { + currentVoltage.set(0); return; } - if (steam > 0 && currentVoltage > 0) { - wait = 30; + if (steam.get() > 0 && currentVoltage.get() > 0) { + wait.set(30); if (output.valid()) { - TransferPack transfer = TransferPack.joulesVoltage(steam * (hasCore ? 1.111 : 1), currentVoltage); + TransferPack transfer = TransferPack.joulesVoltage(steam.get() * (hasCore.get() ? 1.111 : 1), currentVoltage.get()); ElectricityUtils.receivePower(output.getSafe(), Direction.DOWN, transfer, false); - steam = Math.max(steam - Math.max(75, steam), 0); + steam.set(Math.max(steam.get() - Math.max(75, steam.get()), 0)); } } else { - if (wait <= 0) { - currentVoltage = 0; - wait = 30; + if (wait.get() <= 0) { + currentVoltage.set(0); + wait.set(30); } - wait--; + wait.set(wait.get() - 1); } } public void tickClient(ComponentTickable tickable) { - if (spinSpeed > 0 && tickable.getTicks() % 200 == 0) { - SoundAPI.playSound(SoundRegister.SOUND_TURBINE.get(), SoundSource.BLOCKS, 1, 1, worldPosition); + if (!isSoundPlaying && shouldPlaySound()) { + isSoundPlaying = true; + SoundBarrierMethods.playTileSound(NuclearScienceSounds.SOUND_TURBINE.get(), this, true); } } - public void writeCustomPacket(CompoundTag tag) { - tag.putInt("spinSpeed", spinSpeed); - tag.putBoolean("hasCore", hasCore); - tag.putBoolean("isCore", isCore); + @Override + public void setNotPlaying() { + isSoundPlaying = false; } - public void readCustomPacket(CompoundTag nbt) { - spinSpeed = nbt.getInt("spinSpeed"); - hasCore = nbt.getBoolean("hasCore"); - isCore = nbt.getBoolean("isCore"); + @Override + public boolean shouldPlaySound() { + return spinSpeed.get() > 0; } @Override - public void saveAdditional(CompoundTag compound) { - compound.putBoolean("hasCore", hasCore); - compound.putBoolean("isCore", isCore); - compound.putInt("coreX", coreLocation.getX()); - compound.putInt("coreY", coreLocation.getY()); - compound.putInt("coreZ", coreLocation.getZ()); - super.saveAdditional(compound); + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; } @Override - public void load(CompoundTag compound) { - super.load(compound); - hasCore = compound.getBoolean("hasCore"); - isCore = compound.getBoolean("isCore"); - coreLocation = new BlockPos(compound.getInt("coreX"), compound.getInt("coreY"), compound.getInt("coreZ")); + public double receiveSteam(double temperature, double amount) { + double room = MAX_STEAM * (isCore.get() ? 9 : 1) - steam.get(); + double accepted = room < amount ? room : amount; + this.steam.set(steam.get() + accepted); + if (temperature < 4300) { + currentVoltage.set(120); + } else if (temperature < 6000) { + currentVoltage.set(240); + } else { + currentVoltage.set(480); + } + if (!isCore.get() && hasCore.get()) { + BlockEntity core = level.getBlockEntity(coreLocation.get()); + if (core instanceof TileTurbine turbine && ((TileTurbine) core).isCore.get()) { + accepted = turbine.receiveSteam(temperature, amount); + this.steam.set(0); + } + } + return accepted; } -} + @Override + public boolean isStillValid() { + return isRemoved(); + } + + @Override + public void onBlockDestroyed() { + super.onBlockDestroyed(); + if (level.isClientSide) { + return; + } + destroyed = true; + deconstructStructure(); + + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, Direction side) { + if(!getBlockState().getValue(BlockTurbine.RENDER) && !isCore.get()) { + return LazyOptional.empty(); + } + return super.getCapability(cap, side); + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/fissionreactor/TileFissionReactorCore.java b/src/main/java/nuclearscience/common/tile/fissionreactor/TileFissionReactorCore.java new file mode 100644 index 00000000..a1531953 --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/fissionreactor/TileFissionReactorCore.java @@ -0,0 +1,393 @@ +package nuclearscience.common.tile.fissionreactor; + + +import java.util.List; + +import electrodynamics.common.recipe.ElectrodynamicsRecipe; +import electrodynamics.common.recipe.categories.item2item.Item2ItemRecipe; +import electrodynamics.common.recipe.recipeutils.CountableIngredient; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; +import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.object.Location; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Explosion.BlockInteraction; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import nuclearscience.api.radiation.RadiationSystem; +import nuclearscience.api.radiation.DamageSourceRadiation; +import nuclearscience.api.turbine.ISteamReceiver; +import nuclearscience.common.inventory.container.ContainerReactorCore; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.settings.Constants; +import nuclearscience.common.tile.TileControlRodAssembly; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class TileFissionReactorCore extends GenericTile { + + public static final int FUEL_ROD_COUNT = 4; + + public static final int DUETERIUM_SLOT = 4; + public static final int OUTPUT_SLOT = 5; + + public static final int MELTDOWN_TEMPERATURE_ACTUAL = 5611; + public static final int MELTDOWN_TEMPERATURE_CALC = 4407; + // NB! THE VALUES ABOVE ARE USED FROM THE VERY OLD CALCULATION CODE I MADE BACK + // IN EARLY 2019. READ LINE 51 + // TO SEE WHAT THE ACTUAL "TEMPERATURE" IS. THE VALUES ABOVE ARENT "REAL" + // VALUES. + public static final double WATER_TEMPERATURE = 10; + public static final double AIR_TEMPERATURE = 15; + public static final int MAX_FUEL_COUNT = 3 * 4; + public static final int STEAM_GEN_DIAMETER = 5; + public static final int STEAM_GEN_HEIGHT = 2; + private ISteamReceiver[][][] cachedReceivers = new ISteamReceiver[STEAM_GEN_DIAMETER][STEAM_GEN_HEIGHT][STEAM_GEN_DIAMETER]; + public Property temperature = property(new Property<>(PropertyType.Double, "temperature", AIR_TEMPERATURE)); + public Property fuelCount = property(new Property<>(PropertyType.Integer, "fuelCount", 0)); + public Property hasDeuterium = property(new Property<>(PropertyType.Boolean, "hasDeuterium", false)); + public int ticksOverheating = 0; + public int ticks = 0; + + private List cachedRecipes; + + public TileFissionReactorCore(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_REACTORCORE.get(), pos, state); + + addComponent(new ComponentTickable(this).tickCommon(this::tickCommon).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(5).outputs(1)).setSlotsByDirection(Direction.UP, 0, 1, 2, 3, 4).setSlotsByDirection(Direction.DOWN, 5)); + addComponent(new ComponentContainerProvider("container.reactorcore", this).createMenu((id, player) -> new ContainerReactorCore(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); + } + + protected void tickServer(ComponentTickable tickable) { + + double decrease = (temperature.get() - AIR_TEMPERATURE) / 3000.0; + + if (fuelCount.get() == 0) { + + decrease *= 25; + + } + + boolean hasWater = !getBlockState().getFluidState().isEmpty(); + + if (hasWater) { + + decrease += (temperature.get() - WATER_TEMPERATURE) / 5000.0; + + } + + if (decrease != 0) { + + temperature.set(temperature.get() - (decrease < 0.001 && decrease > 0 ? 0.001 : decrease > -0.001 && decrease < 0 ? -0.001 : decrease)); + + } + + ComponentInventory inv = getComponent(IComponentType.Inventory); + + if (fuelCount.get() > 0 && ticks > 50) { + + BlockEntity tile = level.getBlockEntity(worldPosition.below()); + + int insertion = 0; + + if (tile instanceof TileControlRodAssembly assembly) { + + insertion = assembly.isMSR.get() ? 0 : assembly.insertion.get(); + + } + + double insertDecimal = (100 - insertion) / 100.0; + + if (level.random.nextFloat() < insertDecimal) { + + for (int slot = 0; slot < FUEL_ROD_COUNT; slot++) { + + ItemStack fuelRod = inv.getItem(slot); + + fuelRod.setDamageValue((int) (fuelRod.getDamageValue() + 1 + Math.round(temperature.get()) / MELTDOWN_TEMPERATURE_CALC)); + + if (!fuelRod.isEmpty() && fuelRod.getDamageValue() >= fuelRod.getMaxDamage()) { + + inv.setItem(slot, new ItemStack(NuclearScienceItems.ITEM_FUELSPENT.get())); + + } + + } + + } + + temperature.set(temperature.get() + (MELTDOWN_TEMPERATURE_CALC * insertDecimal * (0.25 * (fuelCount.get() / 2.0) + level.random.nextDouble() / 5.0) - temperature.get()) / (200 + 20 * (hasWater ? 4.0 : 1))); + + if (temperature.get() > MELTDOWN_TEMPERATURE_ACTUAL + level.random.nextInt(50) && fuelCount.get() > 0) { + + ticksOverheating++; + + // Implement some alarm sounds at this time + if (ticksOverheating > 10 * 20) { + + meltdown(); + + } + + } + + } else { + + ticksOverheating = 0; + + } + + temperature.set(Math.max(AIR_TEMPERATURE, temperature.get())); + + if (hasDeuterium.get() && fuelCount.get() > 0 && level.random.nextFloat() < 1 / (1200.0 * MELTDOWN_TEMPERATURE_CALC / temperature.get())) { + + processFissReact(inv); + + } + + } + + protected void tickCommon(ComponentTickable tickable) { + ticks = ticks > Integer.MAX_VALUE - 2 ? 0 : ticks + 1; + if (ticks % 20 == 0) { + level.getLightEngine().checkBlock(worldPosition); + } + if (fuelCount.get() > 0 && ticks > 50) { + if (level.getLevelData().getGameTime() % 10 == 0) { + Location source = new Location(worldPosition); + double totstrength = temperature.get() * 10; + double range = Math.sqrt(totstrength) / (5 * Math.sqrt(2)) * 2; + if (level.getLevelData().getGameTime() % 10 == 0) { + RadiationSystem.emitRadiationFromLocation(level, source, range, totstrength); + } + if (temperature.get() > 100) { + AABB bb = AABB.ofSize(new Vec3(source.x(), source.y(), source.z()), 4, 4, 4); + List list = level.getEntitiesOfClass(LivingEntity.class, bb); + for (LivingEntity living : list) { + FluidState state = level.getBlockState(living.getOnPos()).getFluidState(); + if (state.is(Fluids.WATER) || state.is(Fluids.FLOWING_WATER)) { + living.hurt(DamageSource.DROWN, 3); + } + } + } + } + } + produceSteam(); + } + + public void meltdown() { + if (!level.isClientSide) { + int radius = STEAM_GEN_DIAMETER / 2; + level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); + for (int i = -radius; i <= radius; i++) { + for (int j = -radius; j <= radius; j++) { + for (int k = -radius; k <= radius; k++) { + BlockPos ppos = new BlockPos(worldPosition.getX() + i, worldPosition.getY() + j, worldPosition.getZ() + k); + BlockState state = level.getBlockState(ppos); + if (state.getBlock() == Blocks.WATER) { + level.setBlockAndUpdate(ppos, Blocks.AIR.defaultBlockState()); + } + } + } + } + level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); + // Feel free to switch to a different damage source; I figured radiation fitted + // the best + // switch to false if you don't want fire + // for the final null, you can pass in a ExplosionCalculator if you want to do a + // custom explosion + Explosion actual = new Explosion(level, null, DamageSourceRadiation.INSTANCE, null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), 20, true, BlockInteraction.NONE); + // Explosion actual = new Explosion(level, null, worldPosition.getX(), + // worldPosition.getY(), worldPosition.getZ(), 20, new ArrayList<>()); + radius = 3 * fuelCount.get(); + for (int i = -radius; i <= radius; i++) { + for (int j = -radius; j <= radius; j++) { + for (int k = -radius; k <= radius; k++) { + BlockPos ppos = new BlockPos(worldPosition.getX() + i, worldPosition.getY() + j, worldPosition.getZ() + k); + BlockState state = level.getBlockState(ppos); + if (state.getBlock().getExplosionResistance(state, level, ppos, actual) < radius) { + double distance = Math.sqrt(i * i + j * j + k * k); + if (distance < radius && level.random.nextFloat() < 1 - 0.0001 * distance * distance * distance && level.random.nextFloat() < 0.9) { + level.getBlockState(ppos).onBlockExploded(level, ppos, actual); + } + } + } + } + } + level.explode(null, worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), 20, BlockInteraction.DESTROY); + level.setBlockAndUpdate(worldPosition, NuclearScienceBlocks.blockMeltedReactor.defaultBlockState()); + } + } + + protected void produceSteam() { + if (temperature.get() <= 400) { + return; + } + for (int i = 0; i < STEAM_GEN_DIAMETER; i++) { + for (int j = 0; j < STEAM_GEN_HEIGHT; j++) { + for (int k = 0; k < STEAM_GEN_DIAMETER; k++) { + boolean isReactor2d = i - STEAM_GEN_DIAMETER / 2 == 0 && k - STEAM_GEN_DIAMETER / 2 == 0; + if (isReactor2d && j == 0) { + if (!level.isClientSide && level.random.nextFloat() < temperature.get() / (MELTDOWN_TEMPERATURE_CALC * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { + if (level.getBlockState(worldPosition).hasProperty(BlockStateProperties.WATERLOGGED)) { + level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); + } + } + continue; + } + int offsetX = worldPosition.getX() + i - STEAM_GEN_DIAMETER / 2; + int offsetY = worldPosition.getY() + j; + int offsetZ = worldPosition.getZ() + k - STEAM_GEN_DIAMETER / 2; + BlockPos offpos = new BlockPos(offsetX, offsetY, offsetZ); + Block offset = level.getBlockState(offpos).getBlock(); + if (offset == Blocks.WATER) { + boolean isFaceWater = level.getBlockState(new BlockPos(offsetX, worldPosition.getY(), worldPosition.getZ())).getBlock() == Blocks.WATER || level.getBlockState(new BlockPos(worldPosition.getX(), worldPosition.getY(), offsetZ)).getBlock() == Blocks.WATER || isReactor2d; + if (isFaceWater) { + if (!level.isClientSide) { + ISteamReceiver turbine = cachedReceivers[i][j][k]; + if (turbine != null) { + if (turbine.isStillValid()) { + cachedReceivers[i][j][k] = null; + } + turbine.receiveSteam(temperature.get(), Constants.FISSIONREACTOR_MAXENERGYTARGET / (STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * 20.0 * (MELTDOWN_TEMPERATURE_ACTUAL / temperature.get()))); + } + if (level.random.nextFloat() < temperature.get() / (MELTDOWN_TEMPERATURE_CALC * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { + level.setBlockAndUpdate(offpos, Blocks.AIR.defaultBlockState()); + continue; + } + if (turbine == null || turbine.isStillValid()) { + BlockEntity above = level.getBlockEntity(new BlockPos(offsetX, offsetY + 1, offsetZ)); + if (above instanceof ISteamReceiver trb) { + cachedReceivers[i][j][k] = trb; + } else { + cachedReceivers[i][j][k] = null; + } + } + } else if (level.isClientSide && level.random.nextFloat() < temperature.get() / (MELTDOWN_TEMPERATURE_ACTUAL * 3)) { + double offsetFX = offsetX + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); + double offsetFY = offsetY + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); + double offsetFZ = offsetZ + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); + level.addParticle(ParticleTypes.BUBBLE, offsetFX + 0.5D, offsetFY + 0.20000000298023224D, offsetFZ + 0.5D, 0.0D, 0.0D, 0.0D); + if (level.random.nextInt(3) == 0) { + level.addParticle(ParticleTypes.SMOKE, offsetFX + 0.5D, offsetFY + 0.5D, offsetFZ + 0.5D, 0.0D, 0.0D, 0.0D); + } + } + } + } + } + } + } + } + + public void processFissReact(ComponentInventory inv) { + + ItemStack input = inv.getItem(DUETERIUM_SLOT); + ItemStack output = inv.getItem(OUTPUT_SLOT); + + if (input.isEmpty()) { + + return; + + } + + if (cachedRecipes == null || cachedRecipes.isEmpty()) { + + cachedRecipes = ElectrodynamicsRecipe.findRecipesbyType(NuclearScienceRecipeInit.FISSION_REACTOR_TYPE.get(), level); + } + + for (ElectrodynamicsRecipe iRecipe : cachedRecipes) { + + Item2ItemRecipe recipe = (Item2ItemRecipe) iRecipe; + + for (CountableIngredient ing : recipe.getCountedIngredients()) { + + if (ing.testStack(input)) { + + if (output.isEmpty()) { + + inv.setItem(OUTPUT_SLOT, recipe.getResultItem().copy()); + + input.shrink(recipe.getCountedIngredients().get(0).getStackSize()); + + } else if (output.getCount() <= output.getMaxStackSize() + recipe.getResultItem().getCount()) { + + output.grow(recipe.getResultItem().getCount()); + + input.shrink(recipe.getCountedIngredients().get(0).getStackSize()); + + } + + } + + } + + } + + } + + @Override + public void onInventoryChange(ComponentInventory inv, int slot) { + if (level.isClientSide()) { + return; + } + + if (slot == -1 || slot < FUEL_ROD_COUNT) { + + fuelCount.set(0); + + for (int i = 0; i < FUEL_ROD_COUNT; i++) { + + ItemStack stack = inv.getItem(i); + + int fuelValue = 0; + + if (stack.getItem() == NuclearScienceItems.ITEM_FUELLEUO2.get()) { + + fuelValue = 2; + + } else if (stack.getItem() == NuclearScienceItems.ITEM_FUELHEUO2.get()) { + + fuelValue = 3; + + } else if (stack.getItem() == NuclearScienceItems.ITEM_FUELPLUTONIUM.get()) { + + fuelValue = 2; + + } + + fuelCount.set(fuelCount.get() + fuelValue); + } + + } + + if (slot == -1 || slot == DUETERIUM_SLOT) { + + hasDeuterium.set(!inv.getItem(DUETERIUM_SLOT).isEmpty()); + + } + + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileMeltedReactor.java b/src/main/java/nuclearscience/common/tile/fissionreactor/TileMeltedReactor.java similarity index 78% rename from src/main/java/nuclearscience/common/tile/TileMeltedReactor.java rename to src/main/java/nuclearscience/common/tile/fissionreactor/TileMeltedReactor.java index fac1dec2..99792ad7 100644 --- a/src/main/java/nuclearscience/common/tile/TileMeltedReactor.java +++ b/src/main/java/nuclearscience/common/tile/fissionreactor/TileMeltedReactor.java @@ -1,17 +1,21 @@ -package nuclearscience.common.tile; +package nuclearscience.common.tile.fissionreactor; import electrodynamics.prefab.tile.GenericTile; import electrodynamics.prefab.tile.components.type.ComponentTickable; import electrodynamics.prefab.utilities.object.Location; import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import nuclearscience.DeferredRegisters; +import net.minecraft.world.phys.BlockHitResult; import nuclearscience.api.radiation.RadiationSystem; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; public class TileMeltedReactor extends GenericTile { public static final float RADIATION_RADIUS = 30; @@ -20,15 +24,15 @@ public class TileMeltedReactor extends GenericTile { public int temperature = 6000; public TileMeltedReactor(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_MELTEDREACTOR.get(), pos, state); - addComponent(new ComponentTickable().tickServer(this::tickServer)); + super(NuclearScienceBlockTypes.TILE_MELTEDREACTOR.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); } protected void tickServer(ComponentTickable tickable) { long ticks = tickable.getTicks(); if (ticks % 3 == 0) { BlockState state = level.getBlockState(worldPosition.below()); - if (state.getMaterial() == Material.AIR || state.getBlock() instanceof LiquidBlock) { + if (state.isAir() || state.getBlock() instanceof LiquidBlock) { level.setBlockAndUpdate(worldPosition.below(), getBlockState()); level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); BlockEntity tile = level.getBlockEntity(worldPosition.below()); @@ -49,11 +53,11 @@ protected void tickServer(ComponentTickable tickable) { double d5 = worldPosition.getZ() - z2; double distanceSq = d3 * d3 + d4 * d4 + d5 * d5; if (distanceSq < RADIATION_RADIUS * RADIATION_RADIUS && level.random.nextDouble() > distanceSq / (RADIATION_RADIUS * RADIATION_RADIUS)) { - BlockPos p = new BlockPos(Math.floor(x2), Math.floor(y2), Math.floor(z2)); + BlockPos p = new BlockPos((int) Math.floor(x2), (int) Math.floor(y2), (int) Math.floor(z2)); BlockState st = level.getBlockState(p); Block block = st.getBlock(); - if (st.getMaterial() == Material.AIR) { - if (level.getBlockState(p.below()).getMaterial() != Material.AIR) { + if (st.isAir()) { + if (!level.getBlockState(p.below()).isAir()) { level.setBlockAndUpdate(p, Blocks.AIR.defaultBlockState()); } } else if (block == Blocks.STONE) { @@ -79,11 +83,11 @@ protected void tickServer(ComponentTickable tickable) { double d5 = worldPosition.getZ() - z2; double distanceSq = d3 * d3 + d4 * d4 + d5 * d5; if (distanceSq < RADIATION_RADIUS * RADIATION_RADIUS && level.random.nextDouble() > distanceSq / (RADIATION_RADIUS * RADIATION_RADIUS)) { - BlockPos p = new BlockPos(Math.floor(x2), Math.floor(y2), Math.floor(z2)); + BlockPos p = new BlockPos((int) Math.floor(x2), (int) Math.floor(y2), (int) Math.floor(z2)); BlockState st = level.getBlockState(p); Block block = st.getBlock(); if (block == Blocks.GRASS_BLOCK || block == Blocks.DIRT) { - level.setBlockAndUpdate(p, DeferredRegisters.blockRadioactiveSoil.defaultBlockState()); + level.setBlockAndUpdate(p, NuclearScienceBlocks.blockRadioactiveSoil.defaultBlockState()); } } } @@ -93,4 +97,9 @@ protected void tickServer(ComponentTickable tickable) { RadiationSystem.emitRadiationFromLocation(level, new Location(worldPosition), range, totstrength); } } -} + + @Override + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/fusionreactor/TileFusionReactorCore.java b/src/main/java/nuclearscience/common/tile/fusionreactor/TileFusionReactorCore.java new file mode 100644 index 00000000..96ed0b8e --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/fusionreactor/TileFusionReactorCore.java @@ -0,0 +1,109 @@ +package nuclearscience.common.tile.fusionreactor; + +import electrodynamics.api.capability.ElectrodynamicsCapabilities; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class TileFusionReactorCore extends GenericTile { + + public final Property deuterium = property(new Property<>(PropertyType.Integer, "deuterium", 0)); + public final Property tritium = property(new Property<>(PropertyType.Integer, "tritium", 0)); + public final Property timeLeft = property(new Property<>(PropertyType.Integer, "timeleft", 0)); + + public TileFusionReactorCore(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_FUSIONREACTORCORE.get(), pos, state); + + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).setInputDirections(Direction.DOWN, Direction.UP).maxJoules(Constants.FUSIONREACTOR_USAGE_PER_TICK * 20.0).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 4)); + } + + public void tickServer(ComponentTickable tick) { + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + + if (tritium.get() > 0 && deuterium.get() > 0 && timeLeft.get() <= 0 && electro.getJoulesStored() > Constants.FUSIONREACTOR_USAGE_PER_TICK) { + deuterium.set(deuterium.get() - 1); + tritium.set(tritium.get() - 1); + timeLeft.set(15 * 20); + } + + if (timeLeft.get() <= 0) { + return; + } + + timeLeft.set(timeLeft.get() - 1); + + if (electro.getJoulesStored() < Constants.FUSIONREACTOR_USAGE_PER_TICK) { + return; + } + + for (Direction dir : Direction.Plane.HORIZONTAL) { + BlockPos offset = worldPosition.relative(dir); + BlockState state = level.getBlockState(offset); + if (state.getBlock() == NuclearScienceBlocks.blockPlasma) { + BlockEntity tile = level.getBlockEntity(offset); + if (tile instanceof TilePlasma plasma && plasma.ticksExisted.get() > 30) { + plasma.ticksExisted.set(0); + } + } else if (state.getBlock() == Blocks.AIR) { + level.setBlockAndUpdate(offset, NuclearScienceBlocks.blockPlasma.defaultBlockState()); + } + } + electro.joules(electro.getJoulesStored() - Constants.FUSIONREACTOR_USAGE_PER_TICK); + } + + @Override + public InteractionResult use(Player player, InteractionHand hand, BlockHitResult result) { + + ItemStack inHand = player.getItemInHand(hand); + + Item itemInHand = inHand.getItem(); + + if (itemInHand == NuclearScienceItems.ITEM_CELLDEUTERIUM.get() || itemInHand == NuclearScienceItems.ITEM_CELLTRITIUM.get()) { + + boolean isTritium = itemInHand == NuclearScienceItems.ITEM_CELLTRITIUM.get(); + + int count = isTritium ? tritium.get() : deuterium.get(); + + int added = Math.min(inHand.getCount(), Constants.FUSIONREACTOR_MAXSTORAGE - count); + + if (added > 0) { + if (!level.isClientSide()) { + inHand.setCount(inHand.getCount() - added); + + if (isTritium) { + tritium.set(tritium.get() + added); + } else { + deuterium.set(deuterium.get() + added); + } + } + + return InteractionResult.CONSUME; + } + + } + + return InteractionResult.PASS; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/fusionreactor/TilePlasma.java b/src/main/java/nuclearscience/common/tile/fusionreactor/TilePlasma.java new file mode 100644 index 00000000..2ffe5d61 --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/fusionreactor/TilePlasma.java @@ -0,0 +1,81 @@ +package nuclearscience.common.tile.fusionreactor; + +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.object.CachedTileOutput; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import nuclearscience.api.fusion.IElectromagnet; +import nuclearscience.api.turbine.ISteamReceiver; +import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; + +public class TilePlasma extends GenericTile { + + public final Property ticksExisted = property(new Property<>(PropertyType.Integer, "existed", 0).setNoUpdateClient()); + public final Property spread = property(new Property<>(PropertyType.Integer, "spread", 6).setNoUpdateClient()); + + private CachedTileOutput output; + + public TilePlasma(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_PLASMA.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + } + + public void tickServer(ComponentTickable tickable) { + + ticksExisted.set(ticksExisted.get() + 1); + + if (ticksExisted.get() > 80) { + level.setBlockAndUpdate(worldPosition, Blocks.AIR.defaultBlockState()); + return; + } + + if (ticksExisted.get() == 1 && spread.get() > 0) { + for (Direction dir : Direction.values()) { + BlockPos offset = worldPosition.relative(dir); + BlockState state = level.getBlockState(offset); + boolean didntExist = false; + if (state.getBlock() != getBlockState().getBlock()) { + didntExist = true; + if (state.getDestroySpeed(level, offset) != -1 && !(state.getBlock() instanceof IElectromagnet) && state.getBlock() != NuclearScienceBlocks.blockFusionReactorCore) { + level.setBlockAndUpdate(offset, NuclearScienceBlocks.blockPlasma.defaultBlockState()); + } + } + BlockEntity tile = level.getBlockEntity(offset); + if (tile instanceof TilePlasma plasma) { + if (plasma.ticksExisted.get() > 1 && plasma.spread.get() < spread.get()) { + plasma.ticksExisted.set(ticksExisted.get() - 1); + } + if (didntExist) { + plasma.spread.set(spread.get() - 1); + } + } + } + } + if (ticksExisted.get() > 1 && level.getBlockState(getBlockPos().relative(Direction.UP)).getBlock() instanceof IElectromagnet && level.getBlockState(getBlockPos().relative(Direction.UP, 2)).getBlock() == Blocks.WATER) { + if (output == null) { + output = new CachedTileOutput(level, getBlockPos().relative(Direction.UP, 3)); + } else if (output.getSafe() instanceof ISteamReceiver) { + ISteamReceiver turbine = output.getSafe(); + turbine.receiveSteam(Double.MAX_VALUE, Constants.FUSIONREACTOR_MAXENERGYTARGET / (113.0 * 20.0)); + } + } + } + + @Override + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/msreactor/TileFreezePlug.java b/src/main/java/nuclearscience/common/tile/msreactor/TileFreezePlug.java new file mode 100644 index 00000000..ed6b4f68 --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/msreactor/TileFreezePlug.java @@ -0,0 +1,74 @@ +package nuclearscience.common.tile.msreactor; + +import electrodynamics.api.capability.ElectrodynamicsCapabilities; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; +import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; +import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.object.TransferPack; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import nuclearscience.common.inventory.container.ContainerFreezePlug; +import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceItems; + +public class TileFreezePlug extends GenericTile { + + public final Property isFrozen = property(new Property<>(PropertyType.Boolean, "isfrozen", false)); + public final Property saltBonus = property(new Property<>(PropertyType.Double, "saltbonus", 1.0)); + + public TileFreezePlug(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_FREEZEPLUG.get(), pos, state); + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).setInputDirections(Direction.DOWN).maxJoules(Constants.FREEZEPLUG_USAGE_PER_TICK * 20)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(1)).valid((slot, stack, i) -> stack.getItem() == NuclearScienceItems.ITEM_FLINAK.get())); + addComponent(new ComponentContainerProvider("container.freezeplug", this).createMenu((id, player) -> new ContainerFreezePlug(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); + } + + public void tickServer(ComponentTickable tickable) { + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + ComponentInventory inv = getComponent(IComponentType.Inventory); + + ItemStack stack = inv.getItem(0); + + if (stack.isEmpty()) { + isFrozen.set(false); + saltBonus.set(0); + return; + } + + if (electro.getJoulesStored() < Constants.FREEZEPLUG_USAGE_PER_TICK) { + isFrozen.set(false); + saltBonus.set(0); + return; + } + + electro.joules(electro.getJoulesStored() - Constants.FREEZEPLUG_USAGE_PER_TICK); + + isFrozen.set(true); + + double bonus = 1.0 + ((stack.getCount() - 1) / 63.0); + + saltBonus.set(bonus); + + } + + public boolean isFrozen() { + return isFrozen.get(); + } + + public double getSaltBonus() { + return saltBonus.get(); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/TileHeatExchanger.java b/src/main/java/nuclearscience/common/tile/msreactor/TileHeatExchanger.java similarity index 65% rename from src/main/java/nuclearscience/common/tile/TileHeatExchanger.java rename to src/main/java/nuclearscience/common/tile/msreactor/TileHeatExchanger.java index 2607e978..122353ec 100644 --- a/src/main/java/nuclearscience/common/tile/TileHeatExchanger.java +++ b/src/main/java/nuclearscience/common/tile/msreactor/TileHeatExchanger.java @@ -1,17 +1,20 @@ -package nuclearscience.common.tile; +package nuclearscience.common.tile.msreactor; import java.util.List; +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.ComponentType; import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.tile.components.type.ComponentTickable; import electrodynamics.prefab.utilities.object.Location; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; @@ -20,40 +23,38 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import nuclearscience.DeferredRegisters; +import nuclearscience.api.turbine.ISteamReceiver; import nuclearscience.common.settings.Constants; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileHeatExchanger extends GenericTile { public static final int STEAM_GEN_DIAMETER = 5; public static final int STEAM_GEN_HEIGHT = 2; - private TileTurbine[][][] cachedTurbines = new TileTurbine[STEAM_GEN_DIAMETER][STEAM_GEN_HEIGHT][STEAM_GEN_DIAMETER]; - private double temperature; + private ISteamReceiver[][][] cachedReceivers = new ISteamReceiver[STEAM_GEN_DIAMETER][STEAM_GEN_HEIGHT][STEAM_GEN_DIAMETER]; + public Property temperature = property(new Property<>(PropertyType.Double, "temperature", 0.0)); public TileHeatExchanger(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_HEATEXCHANGER.get(), pos, state); - addComponent(new ComponentTickable().tickCommon(this::tickCommon).tickServer(this::tickServer)); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket).guiPacketReader(this::readCustomPacket).guiPacketWriter(this::writeCustomPacket)); - } + super(NuclearScienceBlockTypes.TILE_HEATEXCHANGER.get(), pos, state); - protected void tickServer(ComponentTickable tickable) { - if (tickable.getTicks() % 10 == 0) { - this.getComponent(ComponentType.PacketHandler).sendCustomPacket(); - } + addComponent(new ComponentTickable(this).tickCommon(this::tickCommon)); + addComponent(new ComponentPacketHandler(this)); } protected void tickCommon(ComponentTickable tickable) { - if (temperature > 100) { + if (temperature.get() > 100) { produceSteam(); } - temperature *= 0.9; + temperature.set(temperature.get() * 0.9); } /** - * Mostly copied from {@link TileReactorCore#produceSteam()} with some changes to fit the exchanger + * Mostly copied from {@link TileFissionReactorCore#produceSteam()} with some changes to fit the exchanger */ protected void produceSteam() { - if (temperature > 100) { + if (temperature.get() > 100) { Location source = new Location(worldPosition.getX() + 0.5f, worldPosition.getY() + 0.5f, worldPosition.getZ() + 0.5f); AABB bb = AABB.ofSize(new Vec3(source.x(), source.y(), source.z()), 4, 4, 4); List list = level.getEntitiesOfClass(LivingEntity.class, bb); @@ -69,7 +70,7 @@ protected void produceSteam() { for (int k = 0; k < STEAM_GEN_DIAMETER; k++) { boolean isReactor2d = i - STEAM_GEN_DIAMETER / 2 == 0 && k - STEAM_GEN_DIAMETER / 2 == 0; if (isReactor2d && j == 0) { - if (!level.isClientSide && level.random.nextFloat() < temperature / (TileMSRReactorCore.MELTDOWN_TEMPERATURE * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { + if (!level.isClientSide && level.random.nextFloat() < temperature.get() / (TileMSReactorCore.MELTDOWN_TEMPERATURE * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { if (level.getBlockState(worldPosition).hasProperty(BlockStateProperties.WATERLOGGED)) { level.setBlockAndUpdate(worldPosition, getBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); } @@ -85,26 +86,26 @@ protected void produceSteam() { boolean isFaceWater = level.getBlockState(new BlockPos(offsetX, worldPosition.getY(), worldPosition.getZ())).getBlock() == Blocks.WATER || level.getBlockState(new BlockPos(worldPosition.getX(), worldPosition.getY(), offsetZ)).getBlock() == Blocks.WATER || isReactor2d; if (isFaceWater) { if (!level.isClientSide) { - TileTurbine turbine = cachedTurbines[i][j][k]; + ISteamReceiver turbine = cachedReceivers[i][j][k]; if (turbine != null) { - if (turbine.isRemoved()) { - cachedTurbines[i][j][k] = null; + if (turbine.isStillValid()) { + cachedReceivers[i][j][k] = null; } - turbine.addSteam((int) (Constants.MSRREACTOR_MAXENERGYTARGET / (STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * 20.0 * (TileMSRReactorCore.MELTDOWN_TEMPERATURE / temperature))), (int) temperature); + turbine.receiveSteam(Constants.MSRREACTOR_MAXENERGYTARGET / (STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * 20.0 * (TileMSReactorCore.MELTDOWN_TEMPERATURE / temperature.get())), temperature.get()); } - if (level.random.nextFloat() < temperature / (TileMSRReactorCore.MELTDOWN_TEMPERATURE * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { + if (level.random.nextFloat() < temperature.get() / (TileMSReactorCore.MELTDOWN_TEMPERATURE * 20.0 * STEAM_GEN_DIAMETER * STEAM_GEN_DIAMETER * STEAM_GEN_HEIGHT)) { level.setBlockAndUpdate(offpos, Blocks.AIR.defaultBlockState()); continue; } - if (turbine == null || turbine.isRemoved()) { + if (turbine == null || turbine.isStillValid()) { BlockEntity above = level.getBlockEntity(new BlockPos(offsetX, offsetY + 1, offsetZ)); - if (above instanceof TileTurbine ab) { - cachedTurbines[i][j][k] = ab; + if (above instanceof ISteamReceiver ab) { + cachedReceivers[i][j][k] = ab; } else { - cachedTurbines[i][j][k] = null; + cachedReceivers[i][j][k] = null; } } - } else if (level.isClientSide && level.random.nextFloat() < temperature / (TileMSRReactorCore.MELTDOWN_TEMPERATURE * 3)) { + } else if (level.isClientSide && level.random.nextFloat() < temperature.get() / (TileMSReactorCore.MELTDOWN_TEMPERATURE * 3)) { double offsetFX = offsetX + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); double offsetFY = offsetY + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); double offsetFZ = offsetZ + level.random.nextDouble() / 2.0 * (level.random.nextBoolean() ? -1 : 1); @@ -120,16 +121,14 @@ protected void produceSteam() { } } - protected void writeCustomPacket(CompoundTag tag) { - tag.putDouble("temperature", temperature); + public Double receiveHeat(Double perReceiver) { + temperature.set(perReceiver); + return perReceiver; } - protected void readCustomPacket(CompoundTag nbt) { - temperature = nbt.getDouble("temperature"); + @Override + public InteractionResult use(Player arg0, InteractionHand arg1, BlockHitResult arg2) { + return InteractionResult.PASS; } - public Double receiveHeat(Double perReceiver) { - temperature = perReceiver; - return perReceiver; - } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/msreactor/TileMSRFuelPreProcessor.java b/src/main/java/nuclearscience/common/tile/msreactor/TileMSRFuelPreProcessor.java new file mode 100644 index 00000000..53c2fa1c --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/msreactor/TileMSRFuelPreProcessor.java @@ -0,0 +1,52 @@ +package nuclearscience.common.tile.msreactor; + +import electrodynamics.api.capability.ElectrodynamicsCapabilities; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; +import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; +import electrodynamics.prefab.tile.components.type.ComponentFluidHandlerMulti; +import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentProcessor; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.level.block.state.BlockState; +import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.registers.NuclearScienceBlockTypes; + +public class TileMSRFuelPreProcessor extends GenericTile { + public static final int MAX_TANK_CAPACITY = 5000; + public long clientTicks = 0; + + public TileMSRFuelPreProcessor(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_MSRFUELPREPROCESSOR.get(), pos, state); + addComponent(new ComponentTickable(this).tickClient(this::tickClient)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).setInputDirections(Direction.NORTH).voltage(ElectrodynamicsCapabilities.DEFAULT_VOLTAGE * 2)); + addComponent(new ComponentFluidHandlerMulti(this).setTanks(1, 1, new int[] { MAX_TANK_CAPACITY }, new int[] { MAX_TANK_CAPACITY }).setInputDirections(Direction.EAST).setRecipeType(NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_TYPE.get())); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().processors(1, 3, 1, 0).bucketInputs(1).upgrades(3)).setSlotsByDirection(Direction.UP, 0).setSlotsByDirection(Direction.WEST, 1).setDirectionsBySlot(2, Direction.NORTH).setDirectionsBySlot(3, Direction.DOWN).validUpgrades(ContainerMSRFuelPreProcessor.VALID_UPGRADES).valid(machineValidator())); + addComponent(new ComponentProcessor(this).canProcess(component -> component.consumeBucket().canProcessFluidItem2ItemRecipe(component, NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_TYPE.get())).process(component -> component.processFluidItem2ItemRecipe(component))); + addComponent(new ComponentContainerProvider("container.msrfuelpreprocessor", this).createMenu((id, player) -> new ContainerMSRFuelPreProcessor(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); + + } + + protected void tickClient(ComponentTickable tickable) { + boolean running = this.getComponent(IComponentType.Processor).isActive(); + if (running) { + if (level.random.nextDouble() < 0.15) { + level.addParticle(ParticleTypes.SMOKE, worldPosition.getX() + level.random.nextDouble(), worldPosition.getY() + level.random.nextDouble() * 0.4 + 0.5, worldPosition.getZ() + level.random.nextDouble(), 0.0D, 0.0D, 0.0D); + } + clientTicks++; + } + } + + @Override + public int getComparatorSignal() { + return this.getComponent(IComponentType.Processor).isActive() ? 15 : 0; + } +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/msreactor/TileMSReactorCore.java b/src/main/java/nuclearscience/common/tile/msreactor/TileMSReactorCore.java new file mode 100644 index 00000000..7b24fc3b --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/msreactor/TileMSReactorCore.java @@ -0,0 +1,131 @@ +package nuclearscience.common.tile.msreactor; + + +import java.util.ArrayList; + +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.object.CachedTileOutput; +import electrodynamics.prefab.utilities.object.Location; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import nuclearscience.api.network.moltensalt.IMoltenSaltPipe; +import nuclearscience.api.radiation.RadiationSystem; +import nuclearscience.common.inventory.container.ContainerMSRReactorCore; +import nuclearscience.common.network.MoltenSaltNetwork; +import nuclearscience.common.tile.TileControlRodAssembly; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; +import nuclearscience.registers.NuclearScienceBlockTypes; + +public class TileMSReactorCore extends GenericTile { + + public static final int MELTDOWN_TEMPERATURE = 1000; + public static final double FUEL_CAPACITY = 1000; + public static final double FUEL_USAGE_RATE = 0.01; + + public static final double WASTE_CAP = 1000; + public static final double WASTE_PER_MB = 0.01; + + public Property temperature = property(new Property<>(PropertyType.Double, "temperature", TileFissionReactorCore.AIR_TEMPERATURE)); + public Property currentFuel = property(new Property<>(PropertyType.Double, "currentfuel", 0.0)); + public Property currentWaste = property(new Property<>(PropertyType.Double, "currentwaste", 0.0)); + + public Property wasteIsFull = property(new Property<>(PropertyType.Boolean, "wasteisfull", false)); + + public int ticksOverheating = 0; + private CachedTileOutput outputCache; + public CachedTileOutput plugCache; + + public TileMSReactorCore(BlockPos pos, BlockState state) { + super(NuclearScienceBlockTypes.TILE_MSRREACTORCORE.get(), pos, state); + + addComponent(new ComponentTickable(this).tickServer(this::tickServer).tickCommon(this::tickCommon)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentContainerProvider("container.msrreactorcore", this).createMenu((id, player) -> new ContainerMSRReactorCore(id, player, null, getCoordsArray()))); + } + + public void tickServer(ComponentTickable tick) { + + double change = (temperature.get() - TileFissionReactorCore.AIR_TEMPERATURE) / 3000.0 + (temperature.get() - TileFissionReactorCore.AIR_TEMPERATURE) / 5000.0; + if (change != 0) { + temperature.set(temperature.get() - (change < 0.001 && change > 0 ? 0.001 : change > -0.001 && change < 0 ? -0.001 : change)); + } + if (!plugCache.valid() || !(plugCache.getSafe() instanceof TileFreezePlug freeze && freeze.isFrozen())) { + return; + } + + if (currentFuel.get() < FUEL_USAGE_RATE) { + return; + } + + int insertion = 0; + for (Direction dir : Direction.values()) { + if (dir != Direction.UP && dir != Direction.DOWN) { + BlockEntity tile = level.getBlockEntity(getBlockPos().relative(dir)); + if (tile instanceof TileControlRodAssembly cr) { + TileControlRodAssembly control = cr; + if (Direction.values()[control.direction.get()] == dir.getOpposite()) { + insertion += control.insertion.get(); + } + } + } + } + + double insertDecimal = (100 - insertion) / 100.0; + + double fuelUse = Math.min(currentFuel.get(), FUEL_USAGE_RATE * insertDecimal * Math.pow(2, Math.pow(temperature.get() / (MELTDOWN_TEMPERATURE - 100), 4))); + + double wasteProduced = Math.min(currentFuel.get(), WASTE_PER_MB * insertDecimal * Math.pow(2, Math.pow(temperature.get() / (MELTDOWN_TEMPERATURE - 100), 4))); + + if (currentWaste.get() > WASTE_CAP - wasteProduced) { + wasteIsFull.set(true); + return; + } + + wasteIsFull.set(false); + + currentWaste.set(currentWaste.get() + wasteProduced); + + currentFuel.set(currentFuel.get() - fuelUse); + temperature.set((temperature.get() + (MELTDOWN_TEMPERATURE * insertDecimal * (1.2 + level.random.nextDouble() / 5.0) - temperature.get()) / 600.0)); + if (outputCache.valid() && outputCache.getSafe() instanceof IMoltenSaltPipe) { + + MoltenSaltNetwork net = (MoltenSaltNetwork) outputCache.getSafe().getNetwork(); + net.emit(temperature.get() * ((TileFreezePlug) plugCache.getSafe()).getSaltBonus(), new ArrayList<>(), false); + } + + } + + protected void tickCommon(ComponentTickable tick) { + if (outputCache == null) { + outputCache = new CachedTileOutput(level, new BlockPos(worldPosition).relative(Direction.UP)); + } + if (plugCache == null) { + plugCache = new CachedTileOutput(level, new BlockPos(worldPosition).relative(Direction.DOWN)); + } + if (tick.getTicks() % 40 == 0) { + outputCache.update(new BlockPos(worldPosition).relative(Direction.UP)); + plugCache.update(new BlockPos(worldPosition).relative(Direction.DOWN)); + } + + if (!plugCache.valid() || !(plugCache.getSafe() instanceof TileFreezePlug freeze && freeze.isFrozen())) { + return; + } + + if (currentFuel.get() < FUEL_USAGE_RATE) { + return; + } + if (level.getLevelData().getGameTime() % 10 == 0) { + double totstrength = temperature.get() * Math.pow(3, Math.pow(temperature.get() / MELTDOWN_TEMPERATURE, 9)); + double range = Math.sqrt(totstrength) / (5 * Math.sqrt(2)) * 2; + RadiationSystem.emitRadiationFromLocation(level, new Location(worldPosition), range, totstrength); + } + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/msreactor/TileMoltenSaltSupplier.java b/src/main/java/nuclearscience/common/tile/msreactor/TileMoltenSaltSupplier.java new file mode 100644 index 00000000..03599ef2 --- /dev/null +++ b/src/main/java/nuclearscience/common/tile/msreactor/TileMoltenSaltSupplier.java @@ -0,0 +1,114 @@ +package nuclearscience.common.tile.msreactor; + +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; +import electrodynamics.prefab.tile.GenericTile; +import electrodynamics.prefab.tile.components.IComponentType; +import electrodynamics.prefab.tile.components.type.ComponentContainerProvider; +import electrodynamics.prefab.tile.components.type.ComponentElectrodynamic; +import electrodynamics.prefab.tile.components.type.ComponentInventory; +import electrodynamics.prefab.tile.components.type.ComponentInventory.InventoryBuilder; +import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; +import electrodynamics.prefab.tile.components.type.ComponentTickable; +import electrodynamics.prefab.utilities.BlockEntityUtils; +import electrodynamics.prefab.utilities.object.CachedTileOutput; +import electrodynamics.prefab.utilities.object.TransferPack; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; +import nuclearscience.common.settings.Constants; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceItems; + +public class TileMoltenSaltSupplier extends GenericTile { + + public static final double AMT_PER_SALT = 250; + public static final double AMT_PER_WASTE = 300; + + protected CachedTileOutput output; + + public final Property reactorWaste = property(new Property<>(PropertyType.Double, "reactorwaste", 0.0).setNoSave()); + + public TileMoltenSaltSupplier(BlockPos pos, BlockState state) { + + super(NuclearScienceBlockTypes.TILE_MOLTENSALTSUPPLIER.get(), pos, state); + + addComponent(new ComponentTickable(this).tickServer(this::tickServer)); + addComponent(new ComponentPacketHandler(this)); + addComponent(new ComponentElectrodynamic(this, false, true).voltage(Constants.MOLTENSALTSUPPLIER_VOLTAGE).extractPower((x, y) -> TransferPack.EMPTY).setInputDirections(Direction.DOWN).maxJoules(Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK * 20)); + addComponent(new ComponentInventory(this, InventoryBuilder.newInv().inputs(1).outputs(1)).setDirectionsBySlot(0, Direction.NORTH, Direction.UP).setDirectionsBySlot(1, Direction.EAST, Direction.WEST).valid((slot, stack, i) -> stack.getItem() == NuclearScienceItems.ITEM_LIFHT4PUF3.get())); + addComponent(new ComponentContainerProvider("container.moltensaltsupplier", this).createMenu((id, player) -> new ContainerMoltenSaltSupplier(id, player, getComponent(IComponentType.Inventory), getCoordsArray()))); + + reactorWaste.setNoSave(); + } + + public void tickServer(ComponentTickable tickable) { + Direction dir = getFacing(); + if (output == null) { + output = new CachedTileOutput(level, worldPosition.relative(dir.getOpposite())); + } + ComponentElectrodynamic electro = getComponent(IComponentType.Electrodynamic); + boolean enoughPower = electro.getJoulesStored() >= Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK; + if (!enoughPower) { + return; + } + + if (BlockEntityUtils.isLit(this) ^ enoughPower) { + BlockEntityUtils.updateLit(this, enoughPower); + } + + electro.joules(electro.getJoulesStored() - Constants.MOLTENSALTSUPPLIER_USAGE_PER_TICK); + + if (tickable.getTicks() % 40 == 0) { + output.update(worldPosition.relative(dir.getOpposite())); + } + + ComponentInventory inv = getComponent(IComponentType.Inventory); + + ItemStack fuel = inv.getItem(0); + + if (!output.valid() || !(output.getSafe() instanceof TileMSReactorCore)) { + reactorWaste.set(0); + return; + } + + TileMSReactorCore core = output.getSafe(); + reactorWaste.set(core.currentWaste.get()); + + if (fuel.isEmpty()) { + return; + } + + if (core.getFacing() != dir) { + return; + } + + if (TileMSReactorCore.FUEL_CAPACITY - core.currentFuel.get() >= AMT_PER_SALT) { + fuel.shrink(1); + core.currentFuel.set(core.currentFuel.get() + AMT_PER_SALT); + } + + if (core.currentWaste.get() < AMT_PER_WASTE) { + return; + } + + ItemStack waste = inv.getItem(1); + + if (waste.getCount() >= waste.getMaxStackSize()) { + return; + } + + if (waste.isEmpty()) { + inv.setItem(1, new ItemStack(NuclearScienceItems.ITEM_FISSILE_SALT.get())); + } else { + waste.grow(1); + inv.setItem(1, waste); + } + + core.currentWaste.set(core.currentWaste.get() - AMT_PER_WASTE); + + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/generic/GenericTileMoltenSaltPipe.java b/src/main/java/nuclearscience/common/tile/saltpipe/GenericTileMoltenSaltPipe.java similarity index 89% rename from src/main/java/nuclearscience/common/tile/generic/GenericTileMoltenSaltPipe.java rename to src/main/java/nuclearscience/common/tile/saltpipe/GenericTileMoltenSaltPipe.java index aaa745e1..42c3c7fd 100644 --- a/src/main/java/nuclearscience/common/tile/generic/GenericTileMoltenSaltPipe.java +++ b/src/main/java/nuclearscience/common/tile/saltpipe/GenericTileMoltenSaltPipe.java @@ -1,4 +1,5 @@ -package nuclearscience.common.tile.generic; +package nuclearscience.common.tile.saltpipe; + import java.util.ArrayList; import java.util.HashSet; @@ -7,17 +8,15 @@ import electrodynamics.prefab.network.AbstractNetwork; import electrodynamics.prefab.tile.GenericTile; -import electrodynamics.prefab.tile.components.type.ComponentPacketHandler; import electrodynamics.prefab.utilities.Scheduler; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import nuclearscience.api.network.moltensalt.IMoltenSaltPipe; import nuclearscience.common.network.MoltenSaltNetwork; -import nuclearscience.common.tile.TileHeatExchanger; +import nuclearscience.common.tile.msreactor.TileHeatExchanger; public abstract class GenericTileMoltenSaltPipe extends GenericTile implements IMoltenSaltPipe { @@ -30,15 +29,14 @@ public abstract class GenericTileMoltenSaltPipe extends GenericTile implements I protected GenericTileMoltenSaltPipe(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { super(tileEntityTypeIn, pos, state); - addComponent(new ComponentPacketHandler().customPacketReader(this::readCustomPacket).customPacketWriter(this::writeCustomPacket)); } private HashSet getConnectedConductors() { HashSet set = new HashSet<>(); for (Direction dir : Direction.values()) { BlockEntity facing = level.getBlockEntity(new BlockPos(worldPosition).relative(dir)); - if (facing instanceof IMoltenSaltPipe) { - set.add((IMoltenSaltPipe) facing); + if (facing instanceof IMoltenSaltPipe pipe) { + set.add(pipe); } } return set; @@ -166,9 +164,4 @@ public void onLoad() { super.onLoad(); Scheduler.schedule(1, this::refreshNetwork); } - - protected abstract void writeCustomPacket(CompoundTag nbt); - - protected abstract void readCustomPacket(CompoundTag nbt); - -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/tile/network/TileMoltenSaltPipe.java b/src/main/java/nuclearscience/common/tile/saltpipe/TileMoltenSaltPipe.java similarity index 59% rename from src/main/java/nuclearscience/common/tile/network/TileMoltenSaltPipe.java rename to src/main/java/nuclearscience/common/tile/saltpipe/TileMoltenSaltPipe.java index 4fc0c6ea..c644d87d 100644 --- a/src/main/java/nuclearscience/common/tile/network/TileMoltenSaltPipe.java +++ b/src/main/java/nuclearscience/common/tile/saltpipe/TileMoltenSaltPipe.java @@ -1,18 +1,21 @@ -package nuclearscience.common.tile.network; +package nuclearscience.common.tile.saltpipe; +import org.jetbrains.annotations.NotNull; + +import electrodynamics.prefab.properties.Property; +import electrodynamics.prefab.properties.PropertyType; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.state.BlockState; -import nuclearscience.DeferredRegisters; import nuclearscience.common.block.connect.BlockMoltenSaltPipe; import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; -import nuclearscience.common.tile.generic.GenericTileMoltenSaltPipe; +import nuclearscience.registers.NuclearScienceBlockTypes; public class TileMoltenSaltPipe extends GenericTileMoltenSaltPipe { - public double transmit = 0; + public Property transmit = property(new Property<>(PropertyType.Double, "transmit", 0.0)); public TileMoltenSaltPipe(BlockPos pos, BlockState state) { - super(DeferredRegisters.TILE_MOLTENSALTPIPE.get(), pos, state); + super(NuclearScienceBlockTypes.TILE_MOLTENSALTPIPE.get(), pos, state); } public SubtypeMoltenSaltPipe pipe = null; @@ -26,24 +29,14 @@ public SubtypeMoltenSaltPipe getPipeType() { } @Override - public void saveAdditional(CompoundTag compound) { + public void saveAdditional(@NotNull CompoundTag compound) { compound.putInt("ord", getPipeType().ordinal()); super.saveAdditional(compound); } @Override - public void load(CompoundTag compound) { + public void load(@NotNull CompoundTag compound) { super.load(compound); pipe = SubtypeMoltenSaltPipe.values()[compound.getInt("ord")]; } - - @Override - protected void writeCustomPacket(CompoundTag nbt) { - nbt.putDouble("transmit", transmit); - } - - @Override - protected void readCustomPacket(CompoundTag nbt) { - transmit = nbt.getDouble("transmit"); - } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/common/world/QuantumCapacitorData.java b/src/main/java/nuclearscience/common/world/QuantumCapacitorData.java index 492d19b0..21641016 100644 --- a/src/main/java/nuclearscience/common/world/QuantumCapacitorData.java +++ b/src/main/java/nuclearscience/common/world/QuantumCapacitorData.java @@ -96,4 +96,4 @@ public void setJoules(UUID uuid, int frequency, double value) { powermapping.get(uuid).put(frequency, value); } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/compatibility/jei/NuclearSciencePlugin.java b/src/main/java/nuclearscience/compatibility/jei/NuclearSciencePlugin.java index d444a57d..d74b9948 100644 --- a/src/main/java/nuclearscience/compatibility/jei/NuclearSciencePlugin.java +++ b/src/main/java/nuclearscience/compatibility/jei/NuclearSciencePlugin.java @@ -6,7 +6,7 @@ import electrodynamics.client.screen.tile.ScreenO2OProcessor; import electrodynamics.compatibility.jei.ElectrodynamicsJEIPlugin; -import electrodynamics.compatibility.jei.recipecategories.psuedo.PsuedoItem2ItemRecipe; +import electrodynamics.compatibility.jei.recipecategories.utils.psuedorecipes.types.PsuedoItem2ItemRecipe; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.helpers.IGuiHelper; @@ -20,12 +20,12 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeManager; import nuclearscience.client.screen.ScreenChemicalExtractor; +import nuclearscience.client.screen.ScreenFissionReactorCore; import nuclearscience.client.screen.ScreenGasCentrifuge; import nuclearscience.client.screen.ScreenMSRFuelPreProcessor; import nuclearscience.client.screen.ScreenNuclearBoiler; import nuclearscience.client.screen.ScreenParticleInjector; import nuclearscience.client.screen.ScreenRadioactiveProcessor; -import nuclearscience.client.screen.ScreenReactorCore; import nuclearscience.common.recipe.NuclearScienceRecipeInit; import nuclearscience.common.recipe.categories.fluiditem2fluid.specificmachines.NuclearBoilerRecipe; import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.ChemicalExtractorRecipe; @@ -93,7 +93,7 @@ public void registerRecipes(IRecipeRegistration registration) { List antiMatterRecipes = new ArrayList<>(NuclearSciencePsuedoRecipes.ANTI_MATTER_RECIPES); registration.addRecipes(ParticleAcceleratorAntiMatterRecipeCategory.RECIPE_TYPE, antiMatterRecipes); - // Dark Matter + // Dark Mattere List darkMatterRecipes = new ArrayList<>(NuclearSciencePsuedoRecipes.DARK_MATTER_RECIPES); registration.addRecipes(ParticleAcceleratorDarkMatterRecipeCategory.RECIPE_TYPE, darkMatterRecipes); @@ -136,8 +136,8 @@ public void registerGuiHandlers(IGuiHandlerRegistration registry) { registry.addRecipeClickArea(ScreenRadioactiveProcessor.class, 97, 31, 22, 15, RadioactiveProcessorRecipeCategory.RECIPE_TYPE); registry.addRecipeClickArea(ScreenChemicalExtractor.class, 97, 31, 22, 15, ChemicalExtractorRecipeCategory.RECIPE_TYPE); registry.addRecipeClickArea(ScreenGasCentrifuge.class, 105, 13, 20, 54, GasCentrifugeRecipeCategory.RECIPE_TYPE); - registry.addRecipeClickArea(ScreenReactorCore.class, 117, 43, 14, 13, FissionReactorRecipeCategory.RECIPE_TYPE); - registry.addRecipeClickArea(ScreenParticleInjector.class, 102, 33, 28, 14, ParticleAcceleratorAntiMatterRecipeCategory.RECIPE_TYPE, ParticleAcceleratorDarkMatterRecipeCategory.RECIPE_TYPE); + registry.addRecipeClickArea(ScreenFissionReactorCore.class, 117, 53, 14, 13, FissionReactorRecipeCategory.RECIPE_TYPE); + registry.addRecipeClickArea(ScreenParticleInjector.class, 102, 43, 28, 14, ParticleAcceleratorAntiMatterRecipeCategory.RECIPE_TYPE, ParticleAcceleratorDarkMatterRecipeCategory.RECIPE_TYPE); registry.addRecipeClickArea(ScreenMSRFuelPreProcessor.class, 98, 40, 16, 16, MSRProcessorRecipeCategory.RECIPE_TYPE); } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2fluid/specificmachines/NuclearBoilerRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2fluid/specificmachines/NuclearBoilerRecipeCategory.java index 103dfab1..69a19b4d 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2fluid/specificmachines/NuclearBoilerRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2fluid/specificmachines/NuclearBoilerRecipeCategory.java @@ -1,68 +1,58 @@ package nuclearscience.compatibility.jei.recipecategories.fluiditem2fluid.specificmachines; import electrodynamics.compatibility.jei.recipecategories.fluiditem2fluid.FluidItem2FluidRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowLeftAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowRightAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.fluid.DefaultFluidGaugeWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.BucketSlotWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.PowerLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.gui.types.fluidgauge.FluidGaugeObject; +import electrodynamics.compatibility.jei.utils.label.types.PowerLabelWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.TimeLabelWrapperElectroRecipe; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.IconType; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; import nuclearscience.References; import nuclearscience.common.recipe.categories.fluiditem2fluid.specificmachines.NuclearBoilerRecipe; -import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class NuclearBoilerRecipeCategory extends FluidItem2FluidRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 64); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 64); - private static DefaultItemSlotWrapper INPUT_SLOT = new DefaultItemSlotWrapper(57, 16); - private static BucketSlotWrapper INPUT_BUCKET_SLOT = new BucketSlotWrapper(57, 36); - private static BucketSlotWrapper OUTPUT_BUCKET_SLOT = new BucketSlotWrapper(88, 36); + public static final ItemSlotObject INPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 16, RecipeIngredientRole.INPUT); + public static final ItemSlotObject INPUT_BUCKET_SLOT = new ItemSlotObject(SlotType.NORMAL, IconType.FLUID_DARK, 57, 36, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_BUCKET_SLOT = new ItemSlotObject(SlotType.NORMAL, IconType.FLUID_DARK, 88, 36, RecipeIngredientRole.OUTPUT); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_1 = new ArrowRightAnimatedWrapper(30, 17); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_2 = new ArrowRightAnimatedWrapper(80, 17); - private static ArrowLeftAnimatedWrapper ANIM_LEFT_ARROW = new ArrowLeftAnimatedWrapper(30, 37); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_1 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 30, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_2 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 80, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_LEFT_ARROW = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_LEFT, 30, 37, StartDirection.RIGHT); - private static DefaultFluidGaugeWrapper IN_GAUGE = new DefaultFluidGaugeWrapper(10, 5, 5000); - private static DefaultFluidGaugeWrapper OUT_GAUGE = new DefaultFluidGaugeWrapper(108, 5, 5000); + public static final FluidGaugeObject IN_GAUGE = new FluidGaugeObject(10, 5, 5000); + public static final FluidGaugeObject OUT_GAUGE = new FluidGaugeObject(108, 5, 5000); - private static PowerLabelWrapper POWER_LABEL = new PowerLabelWrapper(2, 55, Constants.CHEMICALBOILER_USAGE_PER_TICK, 240); + public static final PowerLabelWrapperElectroRecipe POWER_LABEL = new PowerLabelWrapperElectroRecipe(2, 55, 240); + public static final TimeLabelWrapperElectroRecipe TIME_LABEL = new TimeLabelWrapperElectroRecipe(130, 55); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = electrodynamics.api.References.ID; - private static String RECIPE_GROUP = "nuclearboiler"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockNuclearBoiler); - public static ItemStack INPUT_MACHINE = new ItemStack(DeferredRegisters.blockNuclearBoiler); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, NuclearBoilerRecipe.RECIPE_GROUP, NuclearBoilerRecipe.class); public NuclearBoilerRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, NuclearBoilerRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(NuclearBoilerRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); setInputSlots(guiHelper, INPUT_SLOT, INPUT_BUCKET_SLOT); setOutputSlots(guiHelper, OUTPUT_BUCKET_SLOT); setFluidInputs(guiHelper, IN_GAUGE); setFluidOutputs(guiHelper, OUT_GAUGE); setAnimatedArrows(guiHelper, ANIM_LEFT_ARROW, ANIM_RIGHT_ARROW_1, ANIM_RIGHT_ARROW_2); - setLabels(POWER_LABEL); - } - - @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; + setLabels(POWER_LABEL, TIME_LABEL); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/ChemicalExtractorRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/ChemicalExtractorRecipeCategory.java index f36b2876..ed978b5a 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/ChemicalExtractorRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/ChemicalExtractorRecipeCategory.java @@ -1,66 +1,56 @@ package nuclearscience.compatibility.jei.recipecategories.fluiditem2item.specificmachines; -import electrodynamics.api.References; import electrodynamics.compatibility.jei.recipecategories.fluiditem2item.FluidItem2ItemRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowLeftAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowRightAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.fluid.DefaultFluidGaugeWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.BucketSlotWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.PowerLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.gui.types.fluidgauge.FluidGaugeObject; +import electrodynamics.compatibility.jei.utils.label.types.PowerLabelWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.TimeLabelWrapperElectroRecipe; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.IconType; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; +import nuclearscience.References; import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.ChemicalExtractorRecipe; -import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class ChemicalExtractorRecipeCategory extends FluidItem2ItemRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 64); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 64); - private static DefaultItemSlotWrapper INPUT_SLOT = new DefaultItemSlotWrapper(57, 16); - private static BucketSlotWrapper INPUT_BUCKET_SLOT = new BucketSlotWrapper(57, 36); - private static DefaultItemSlotWrapper OUTPUT_SLOT = new DefaultItemSlotWrapper(107, 16); + public static final ItemSlotObject INPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 16, RecipeIngredientRole.INPUT); + public static final ItemSlotObject INPUT_BUCKET_SLOT = new ItemSlotObject(SlotType.NORMAL, IconType.FLUID_DARK, 57, 36, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 107, 16, RecipeIngredientRole.OUTPUT); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_1 = new ArrowRightAnimatedWrapper(30, 17); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_2 = new ArrowRightAnimatedWrapper(80, 17); - private static ArrowLeftAnimatedWrapper ANIM_LEFT_ARROW = new ArrowLeftAnimatedWrapper(30, 37); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_1 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 30, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_2 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 80, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_LEFT_ARROW = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_LEFT, 30, 37, StartDirection.RIGHT); - private static DefaultFluidGaugeWrapper IN_GAUGE = new DefaultFluidGaugeWrapper(10, 5, 5000); + public static final FluidGaugeObject IN_GAUGE = new FluidGaugeObject(10, 5, 5000); - private static PowerLabelWrapper POWER_LABEL = new PowerLabelWrapper(2, 55, Constants.CHEMICALEXTRACTOR_USAGE_PER_TICK, 240); + public static final PowerLabelWrapperElectroRecipe POWER_LABEL = new PowerLabelWrapperElectroRecipe(2, 55, 240); + public static final TimeLabelWrapperElectroRecipe TIME_LABEL = new TimeLabelWrapperElectroRecipe(130, 55); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "chemicalextractor"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockChemicalExtractor); - public static ItemStack INPUT_MACHINE = new ItemStack(DeferredRegisters.blockChemicalExtractor); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, ChemicalExtractorRecipe.RECIPE_GROUP, ChemicalExtractorRecipe.class); public ChemicalExtractorRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, ChemicalExtractorRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(ChemicalExtractorRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); setInputSlots(guiHelper, INPUT_SLOT, INPUT_BUCKET_SLOT); setOutputSlots(guiHelper, OUTPUT_SLOT); setFluidInputs(guiHelper, IN_GAUGE); setAnimatedArrows(guiHelper, ANIM_LEFT_ARROW, ANIM_RIGHT_ARROW_1, ANIM_RIGHT_ARROW_2); - setLabels(POWER_LABEL); - } - - @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; + setLabels(POWER_LABEL, TIME_LABEL); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/MSRProcessorRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/MSRProcessorRecipeCategory.java index 5f1dbb9f..ca52f9e2 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/MSRProcessorRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/MSRProcessorRecipeCategory.java @@ -1,66 +1,57 @@ package nuclearscience.compatibility.jei.recipecategories.fluiditem2item.specificmachines; -import electrodynamics.api.References; import electrodynamics.compatibility.jei.recipecategories.fluiditem2item.FluidItem2ItemRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowRightAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.fluid.DefaultFluidGaugeWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.BucketSlotWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.PowerLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.gui.types.fluidgauge.FluidGaugeObject; +import electrodynamics.compatibility.jei.utils.label.types.PowerLabelWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.TimeLabelWrapperElectroRecipe; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.IconType; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; +import nuclearscience.References; import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.MSRFuelPreProcessorRecipe; -import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class MSRProcessorRecipeCategory extends FluidItem2ItemRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 64); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 64); - private static DefaultItemSlotWrapper INPUT_SLOT_1 = new DefaultItemSlotWrapper(58, 2); - private static DefaultItemSlotWrapper INPUT_SLOT_2 = new DefaultItemSlotWrapper(58, 23); - private static DefaultItemSlotWrapper INPUT_SLOT_3 = new DefaultItemSlotWrapper(58, 44); - private static DefaultItemSlotWrapper OUTPUT_SLOT = new DefaultItemSlotWrapper(107, 23); - private static BucketSlotWrapper INPUT_BUCKET_SLOT = new BucketSlotWrapper(27, 36); + public static final ItemSlotObject INPUT_SLOT_1 = new ItemSlotObject(SlotType.NORMAL, 58, 2, RecipeIngredientRole.INPUT); + public static final ItemSlotObject INPUT_SLOT_2 = new ItemSlotObject(SlotType.NORMAL, 58, 23, RecipeIngredientRole.INPUT); + public static final ItemSlotObject INPUT_SLOT_3 = new ItemSlotObject(SlotType.NORMAL, 58, 44, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 107, 23, RecipeIngredientRole.OUTPUT); + public static final ItemSlotObject INPUT_BUCKET_SLOT = new ItemSlotObject(SlotType.NORMAL, IconType.FLUID_DARK, 27, 36, RecipeIngredientRole.INPUT); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_1 = new ArrowRightAnimatedWrapper(30, 17); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_2 = new ArrowRightAnimatedWrapper(80, 24); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_1 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 30, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_2 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 80, 24, StartDirection.LEFT); - private static DefaultFluidGaugeWrapper IN_GAUGE = new DefaultFluidGaugeWrapper(10, 5, 5000); + public static final FluidGaugeObject IN_GAUGE = new FluidGaugeObject(10, 5, 5000); - private static PowerLabelWrapper POWER_LABEL = new PowerLabelWrapper(0, 55, Constants.MSRFUELPREPROCESSOR_USAGE_PER_TICK, 240); + public static final PowerLabelWrapperElectroRecipe POWER_LABEL = new PowerLabelWrapperElectroRecipe(0, 55, 240); + public static final TimeLabelWrapperElectroRecipe TIME_LABEL = new TimeLabelWrapperElectroRecipe(130, 55); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "msrfuelpreprocessor"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockMSRFuelPreProcessor); - public static ItemStack INPUT_MACHINE = new ItemStack(DeferredRegisters.blockMSRFuelPreProcessor); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, MSRFuelPreProcessorRecipe.RECIPE_GROUP, MSRFuelPreProcessorRecipe.class); public MSRProcessorRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, MSRFuelPreProcessorRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(MSRFuelPreProcessorRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); setInputSlots(guiHelper, INPUT_SLOT_1, INPUT_SLOT_2, INPUT_SLOT_3, INPUT_BUCKET_SLOT); setOutputSlots(guiHelper, OUTPUT_SLOT); setFluidInputs(guiHelper, IN_GAUGE); setAnimatedArrows(guiHelper, ANIM_RIGHT_ARROW_1, ANIM_RIGHT_ARROW_2); - setLabels(POWER_LABEL); - } - - @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; + setLabels(POWER_LABEL, TIME_LABEL); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/RadioactiveProcessorRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/RadioactiveProcessorRecipeCategory.java index eca7e56a..9ecd0c34 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/RadioactiveProcessorRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/fluiditem2item/specificmachines/RadioactiveProcessorRecipeCategory.java @@ -1,66 +1,56 @@ package nuclearscience.compatibility.jei.recipecategories.fluiditem2item.specificmachines; -import electrodynamics.api.References; import electrodynamics.compatibility.jei.recipecategories.fluiditem2item.FluidItem2ItemRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowLeftAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowRightAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.fluid.DefaultFluidGaugeWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.BucketSlotWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.PowerLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.gui.types.fluidgauge.FluidGaugeObject; +import electrodynamics.compatibility.jei.utils.label.types.PowerLabelWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.TimeLabelWrapperElectroRecipe; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.IconType; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; +import nuclearscience.References; import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.RadioactiveProcessorRecipe; -import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class RadioactiveProcessorRecipeCategory extends FluidItem2ItemRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 64); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 64); - private static DefaultItemSlotWrapper INPUT_SLOT = new DefaultItemSlotWrapper(57, 16); - private static BucketSlotWrapper INPUT_BUCKET_SLOT = new BucketSlotWrapper(57, 36); - private static DefaultItemSlotWrapper OUTPUT_SLOT = new DefaultItemSlotWrapper(107, 16); + public static final ItemSlotObject INPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 16, RecipeIngredientRole.INPUT); + public static final ItemSlotObject INPUT_BUCKET_SLOT = new ItemSlotObject(SlotType.NORMAL, IconType.FLUID_DARK, 57, 36, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 107, 16, RecipeIngredientRole.OUTPUT); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_1 = new ArrowRightAnimatedWrapper(30, 17); - private static ArrowRightAnimatedWrapper ANIM_RIGHT_ARROW_2 = new ArrowRightAnimatedWrapper(80, 17); - private static ArrowLeftAnimatedWrapper ANIM_LEFT_ARROW = new ArrowLeftAnimatedWrapper(30, 37); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_1 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 30, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW_2 = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 80, 17, StartDirection.LEFT); + public static final ArrowAnimatedObject ANIM_LEFT_ARROW = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_LEFT, 30, 37, StartDirection.RIGHT); - private static DefaultFluidGaugeWrapper IN_GAUGE = new DefaultFluidGaugeWrapper(10, 5, 5000); + public static final FluidGaugeObject IN_GAUGE = new FluidGaugeObject(10, 5, 5000); - private static PowerLabelWrapper POWER_LABEL = new PowerLabelWrapper(2, 55, Constants.RADIOACTIVEPROCESSOR_USAGE_PER_TICK, 480); + public static final PowerLabelWrapperElectroRecipe POWER_LABEL = new PowerLabelWrapperElectroRecipe(2, 55, 480); + public static final TimeLabelWrapperElectroRecipe TIME_LABEL = new TimeLabelWrapperElectroRecipe(130, 55); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "radioactiveprocessor"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockRadioactiveProcessor); - public static ItemStack INPUT_MACHINE = new ItemStack(DeferredRegisters.blockRadioactiveProcessor); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, RadioactiveProcessorRecipe.RECIPE_GROUP, RadioactiveProcessorRecipe.class); public RadioactiveProcessorRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, RadioactiveProcessorRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(RadioactiveProcessorRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); setInputSlots(guiHelper, INPUT_SLOT, INPUT_BUCKET_SLOT); setOutputSlots(guiHelper, OUTPUT_SLOT); setFluidInputs(guiHelper, IN_GAUGE); setAnimatedArrows(guiHelper, ANIM_LEFT_ARROW, ANIM_RIGHT_ARROW_1, ANIM_RIGHT_ARROW_2); - setLabels(POWER_LABEL); - } - - @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; + setLabels(POWER_LABEL, TIME_LABEL); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FissionReactorRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FissionReactorRecipeCategory.java index dfa36d11..7d3b719b 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FissionReactorRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FissionReactorRecipeCategory.java @@ -4,49 +4,50 @@ import java.util.Collections; import java.util.List; -import electrodynamics.api.References; -import electrodynamics.common.recipe.ElectrodynamicsRecipe; import electrodynamics.common.recipe.categories.item2item.Item2ItemRecipe; import electrodynamics.common.recipe.recipeutils.CountableIngredient; import electrodynamics.compatibility.jei.recipecategories.item2item.Item2ItemRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.FeynmanDiagramAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.GenericLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.label.types.LabelWrapperGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressTextures; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import nuclearscience.References; import nuclearscience.common.recipe.categories.item2item.specificmachines.FissionReactorRecipe; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; public class FissionReactorRecipeCategory extends Item2ItemRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 132); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 132); - private static DefaultItemSlotWrapper INPUT_SLOT = new DefaultItemSlotWrapper(57, 25); - private static DefaultItemSlotWrapper CELL_SLOT_1 = new DefaultItemSlotWrapper(15, 15); - private static DefaultItemSlotWrapper CELL_SLOT_2 = new DefaultItemSlotWrapper(15, 99); - private static DefaultItemSlotWrapper CELL_SLOT_3 = new DefaultItemSlotWrapper(99, 15); - private static DefaultItemSlotWrapper CELL_SLOT_4 = new DefaultItemSlotWrapper(99, 99); - private static DefaultItemSlotWrapper OUTPUT_SLOT = new DefaultItemSlotWrapper(57, 88); + public static final ItemSlotObject INPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 25, RecipeIngredientRole.INPUT); + public static final ItemSlotObject CELL_SLOT_1 = new ItemSlotObject(SlotType.NORMAL, 15, 15, RecipeIngredientRole.INPUT); + public static final ItemSlotObject CELL_SLOT_2 = new ItemSlotObject(SlotType.NORMAL, 15, 99, RecipeIngredientRole.INPUT); + public static final ItemSlotObject CELL_SLOT_3 = new ItemSlotObject(SlotType.NORMAL, 99, 15, RecipeIngredientRole.INPUT); + public static final ItemSlotObject CELL_SLOT_4 = new ItemSlotObject(SlotType.NORMAL, 99, 99, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 89, RecipeIngredientRole.OUTPUT); - private static FeynmanDiagramAnimatedWrapper ARROW = new FeynmanDiagramAnimatedWrapper(35, 40); + public static final ArrowAnimatedObject ARROW = new ArrowAnimatedObject(ProgressTextures.FEYNMAN_DIAGRAM_OFF, ProgressTextures.FEYNMAN_DIAGRAM_ON, 35, 43, StartDirection.TOP); - private static GenericLabelWrapper POWER_LABEL = new GenericLabelWrapper(0xFF808080, 122, 2, "reactorcore.info.temp"); + public static final LabelWrapperGeneric POWER_LABEL = new LabelWrapperGeneric(0xFF808080, 122, 2, false, NuclearTextUtils.jeiTranslated("gui.reactorcore.info.temp")); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "reactorcore"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockFissionReactorCore); - public static ItemStack INPUT_MACHINE = new ItemStack(nuclearscience.DeferredRegisters.blockReactorCore); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, FissionReactorRecipe.RECIPE_GROUP, FissionReactorRecipe.class); public FissionReactorRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, FissionReactorRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(FissionReactorRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); setInputSlots(guiHelper, INPUT_SLOT, CELL_SLOT_1, CELL_SLOT_2, CELL_SLOT_3, CELL_SLOT_4); setOutputSlots(guiHelper, OUTPUT_SLOT); setAnimatedArrows(guiHelper, ARROW); @@ -54,21 +55,10 @@ public FissionReactorRecipeCategory(IGuiHelper guiHelper) { } @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; - } - - @Override - public List> getItemInputs(ElectrodynamicsRecipe electro) { - Item2ItemRecipe recipe = (Item2ItemRecipe) electro; - ItemStack u235Cell = new ItemStack(nuclearscience.DeferredRegisters.ITEM_FUELHEUO2.get(), 1); - ItemStack u238Cell = new ItemStack(nuclearscience.DeferredRegisters.ITEM_FUELLEUO2.get(), 1); - ItemStack plutoniumCell = new ItemStack(nuclearscience.DeferredRegisters.ITEM_FUELPLUTONIUM.get(), 1); + public List> getItemInputs(Item2ItemRecipe recipe) { + ItemStack u235Cell = new ItemStack(NuclearScienceItems.ITEM_FUELHEUO2.get(), 1); + ItemStack u238Cell = new ItemStack(NuclearScienceItems.ITEM_FUELLEUO2.get(), 1); + ItemStack plutoniumCell = new ItemStack(NuclearScienceItems.ITEM_FUELPLUTONIUM.get(), 1); List fuels = new ArrayList<>(); fuels.add(u238Cell); diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FuelReprocessorRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FuelReprocessorRecipeCategory.java index 12e780dc..c5df80d4 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FuelReprocessorRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/item2item/FuelReprocessorRecipeCategory.java @@ -1,61 +1,53 @@ package nuclearscience.compatibility.jei.recipecategories.item2item; -import electrodynamics.api.References; import electrodynamics.compatibility.jei.ElectrodynamicsJEIPlugin; import electrodynamics.compatibility.jei.recipecategories.item2item.Item2ItemRecipeCategory; -import electrodynamics.compatibility.jei.utils.gui.arrows.animated.ArrowRightAnimatedWrapper; -import electrodynamics.compatibility.jei.utils.gui.backgroud.BackgroundWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.BigItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.gui.item.DefaultItemSlotWrapper; -import electrodynamics.compatibility.jei.utils.label.BiproductPercentWrapper; -import electrodynamics.compatibility.jei.utils.label.PowerLabelWrapper; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.label.types.BiproductPercentWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.PowerLabelWrapperElectroRecipe; +import electrodynamics.compatibility.jei.utils.label.types.TimeLabelWrapperElectroRecipe; +import electrodynamics.prefab.screen.component.types.ScreenComponentProgress.ProgressBars; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import nuclearscience.References; import nuclearscience.common.recipe.categories.item2item.specificmachines.FuelReprocessorRecipe; -import nuclearscience.common.settings.Constants; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; public class FuelReprocessorRecipeCategory extends Item2ItemRecipeCategory { // JEI Window Parameters - private static BackgroundWrapper BACK_WRAP = new BackgroundWrapper(132, 58); + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 58); - private static DefaultItemSlotWrapper INPUT_SLOT = new DefaultItemSlotWrapper(17, 20); - private static BigItemSlotWrapper OUTPUT_SLOT = new BigItemSlotWrapper(69, 16); - private static DefaultItemSlotWrapper BIPRODUCT_SLOT = new DefaultItemSlotWrapper(100, 20); + public static final ItemSlotObject INPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 17, 20, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 69, 16, RecipeIngredientRole.OUTPUT); + public static final ItemSlotObject BIPRODUCT_SLOT = new ItemSlotObject(SlotType.NORMAL, 100, 20, RecipeIngredientRole.OUTPUT); - private static ArrowRightAnimatedWrapper ANIM_ARROW = new ArrowRightAnimatedWrapper(41, 23); + public static final ArrowAnimatedObject ANIM_ARROW = new ArrowAnimatedObject(ProgressBars.PROGRESS_ARROW_RIGHT, 41, 23, StartDirection.LEFT); - private static PowerLabelWrapper POWER_LABEL = new PowerLabelWrapper(2, 48, Constants.FUELREPROCESSOR_REQUIRED_TICKS, 480); - private static BiproductPercentWrapper ITEM_LABEL = new BiproductPercentWrapper(100, 40, false); + public static final PowerLabelWrapperElectroRecipe POWER_LABEL = new PowerLabelWrapperElectroRecipe(2, 48, 480); + public static final BiproductPercentWrapperElectroRecipe ITEM_LABEL = new BiproductPercentWrapperElectroRecipe(100, 40, false); + public static final TimeLabelWrapperElectroRecipe TIME_LABEL = new TimeLabelWrapperElectroRecipe(130, 48); - private static int ANIM_TIME = 50; + public static final int ANIM_TIME = 50; - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "fuelreprocessor"; + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockFuelReprocessor); - public static ItemStack INPUT_MACHINE = new ItemStack(nuclearscience.DeferredRegisters.blockFuelReprocessor); - - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, FuelReprocessorRecipe.RECIPE_GROUP, FuelReprocessorRecipe.class); public FuelReprocessorRecipeCategory(IGuiHelper guiHelper) { - super(guiHelper, MOD_ID, RECIPE_GROUP, INPUT_MACHINE, BACK_WRAP, FuelReprocessorRecipe.class, ANIM_TIME); + super(guiHelper, NuclearTextUtils.jeiTranslated(FuelReprocessorRecipe.RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); ElectrodynamicsJEIPlugin.addO2OClickArea(RECIPE_TYPE); setInputSlots(guiHelper, INPUT_SLOT); setOutputSlots(guiHelper, OUTPUT_SLOT, BIPRODUCT_SLOT); setAnimatedArrows(guiHelper, ANIM_ARROW); - setLabels(POWER_LABEL, ITEM_LABEL); - } - - @Override - public ResourceLocation getUid() { - return UID; + setLabels(POWER_LABEL, ITEM_LABEL, TIME_LABEL); } - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; - } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/GasCentrifugeRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/GasCentrifugeRecipeCategory.java index f8d5c6d5..bbcd0d7d 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/GasCentrifugeRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/GasCentrifugeRecipeCategory.java @@ -1,127 +1,85 @@ package nuclearscience.compatibility.jei.recipecategories.psuedo.specificmachines; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.mojang.blaze3d.vertex.PoseStack; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableAnimated; +import java.util.ArrayList; +import java.util.List; + +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.api.electricity.formatting.DisplayUnit; +import electrodynamics.compatibility.jei.recipecategories.utils.AbstractRecipeCategory; +import electrodynamics.compatibility.jei.utils.gui.ScreenObject; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.gui.types.fluidgauge.FluidGaugeObject; +import electrodynamics.compatibility.jei.utils.label.types.LabelWrapperGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; -import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import nuclearscience.DeferredRegisters; +import net.minecraftforge.fluids.FluidStack; import nuclearscience.References; +import nuclearscience.common.settings.Constants; +import nuclearscience.common.tile.TileGasCentrifuge; +import nuclearscience.compatibility.jei.utils.NuclearJeiTextures; import nuclearscience.compatibility.jei.utils.psuedorecipes.PsuedoGasCentrifugeRecipe; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; -public class GasCentrifugeRecipeCategory implements IRecipeCategory { +public class GasCentrifugeRecipeCategory extends AbstractRecipeCategory { - public static final int INPUT_FLUID_STACK_SLOT = 0; - public static final int OUTPUT_1_ITEM_SLOT = 1; - public static final int OUTPUT_2_ITEM_SLOT = 2; - public static final int BIPRODUCT_ITEM_SLOT = 3; + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 68); - private static int[] GUI_BACKGROUND = { 0, 0, 132, 68 }; + public static final ScreenObject GASCENTRIFUGE_ARROW_STATIC = new ScreenObject(NuclearJeiTextures.GASCENTRIFUGE_ARROW_STATIC, 19, 5); - private static int ANIMATION_TIME = 100; + public static final ItemSlotObject OUTPUT_SLOT_1 = new ItemSlotObject(SlotType.NORMAL, 113, 2, RecipeIngredientRole.OUTPUT); + public static final ItemSlotObject OUTPUT_SLOT_2 = new ItemSlotObject(SlotType.NORMAL, 113, 22, RecipeIngredientRole.OUTPUT); + public static final ItemSlotObject BIPRODUCT_SLOT = new ItemSlotObject(SlotType.NORMAL, 113, 42, RecipeIngredientRole.OUTPUT); - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "gascentrifuge"; - private static String GUI_TEXTURE = "textures/gui/jei/gascentrifuge.png"; + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW = new ArrowAnimatedObject(NuclearJeiTextures.GASCENTRIFUGE_ARROW_OFF, NuclearJeiTextures.GASCENTRIFUGE_ARROW_ON, 64, 4, StartDirection.LEFT); - public static ItemStack INPUT_MACHINE = new ItemStack(DeferredRegisters.blockGasCentrifuge); + public static final FluidGaugeObject IN_GAUGE = new FluidGaugeObject(2, 6, 5000); - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); + public static final LabelWrapperGeneric U235 = new LabelWrapperGeneric(0xFF616161, 7, 36, false, ChatFormatter.getChatDisplayShort(TileGasCentrifuge.PERCENT_U235 * 100, DisplayUnit.PERCENTAGE)); + public static final LabelWrapperGeneric U238 = new LabelWrapperGeneric(0xFF616161, 28, 36, false, ChatFormatter.getChatDisplayShort((1 - TileGasCentrifuge.PERCENT_U235) * 100, DisplayUnit.PERCENTAGE)); + public static final LabelWrapperGeneric BIPROD = new LabelWrapperGeneric(0xFF616161, 49, 36, false, ChatFormatter.getChatDisplayShort(TileGasCentrifuge.WASTE_MULTIPLIER * 100, DisplayUnit.PERCENTAGE)); - private IDrawable BACKGROUND; - private IDrawable ICON; + public static final LabelWrapperGeneric POWER_LABEL = new LabelWrapperGeneric(0xFF808080, 58, 2, false, ChatFormatter.getChatDisplayShort(960, DisplayUnit.VOLTAGE).append(" ").append(ChatFormatter.getChatDisplayShort(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE, DisplayUnit.JOULES))); - private LoadingCache cachedArrows; - private static StartDirection ARROW_START_DIRECTION = IDrawableAnimated.StartDirection.LEFT; + public static final int ANIM_TIME = 100; - public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, "gas_centrifuge", PsuedoGasCentrifugeRecipe.class); + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockGasCentrifuge); - public GasCentrifugeRecipeCategory(IGuiHelper guiHelper) { - - ICON = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, INPUT_MACHINE); - BACKGROUND = guiHelper.createDrawable(new ResourceLocation(MOD_ID, GUI_TEXTURE), GUI_BACKGROUND[0], GUI_BACKGROUND[1], GUI_BACKGROUND[2], GUI_BACKGROUND[3]); - - cachedArrows = CacheBuilder.newBuilder().maximumSize(1).build(new CacheLoader() { - @Override - public IDrawableAnimated load(Integer cookTime) { - return guiHelper.drawableBuilder(new ResourceLocation(MOD_ID, GUI_TEXTURE), 0, 68, 47, 54).buildAnimated(cookTime, ARROW_START_DIRECTION, false); - } - }); - } - - @Override - public ResourceLocation getUid() { - return UID; - } - - @Override - public Class getRecipeClass() { - return PsuedoGasCentrifugeRecipe.class; - } + public static final String RECIPE_GROUP = "gascentrifuge"; - @Override - public Component getTitle() { - return new TranslatableComponent("jei.gui." + RECIPE_GROUP); - } + public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, RECIPE_GROUP, PsuedoGasCentrifugeRecipe.class); - @Override - public IDrawable getBackground() { - return BACKGROUND; - } + public GasCentrifugeRecipeCategory(IGuiHelper guiHelper) { + super(guiHelper, NuclearTextUtils.jeiTranslated(RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); - @Override - public IDrawable getIcon() { - return ICON; - } + setOutputSlots(guiHelper, OUTPUT_SLOT_1, OUTPUT_SLOT_2, BIPRODUCT_SLOT); + setFluidInputs(guiHelper, IN_GAUGE); + setAnimatedArrows(guiHelper, ANIM_RIGHT_ARROW); + setScreenObjects(guiHelper, GASCENTRIFUGE_ARROW_STATIC); + setLabels(U235, U238, BIPROD, POWER_LABEL); - @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; } @Override - public void setRecipe(IRecipeLayoutBuilder builder, PsuedoGasCentrifugeRecipe recipe, IFocusGroup focuses) { - builder.addSlot(RecipeIngredientRole.INPUT, 3, 7).addIngredient(ForgeTypes.FLUID_STACK, recipe.inputFluidStack).setFluidRenderer(5000, false, 12, 47); - builder.addSlot(RecipeIngredientRole.OUTPUT, 114, 3).addItemStack(recipe.output1); - builder.addSlot(RecipeIngredientRole.OUTPUT, 114, 23).addItemStack(recipe.output2); - builder.addSlot(RecipeIngredientRole.OUTPUT, 114, 43).addItemStack(recipe.biproduct); + public List getItemOutputs(PsuedoGasCentrifugeRecipe recipe) { + List outputs = new ArrayList<>(); + outputs.add(recipe.output1); + outputs.add(recipe.output2); + outputs.add(recipe.biproduct); + return outputs; } @Override - public void draw(PsuedoGasCentrifugeRecipe recipe, PoseStack matrixStack, double mouseX, double mouseY) { - - IDrawableAnimated arrow = cachedArrows.getUnchecked(ANIMATION_TIME); - arrow.draw(matrixStack, 64, 4); - - int animTimeSeconds = ANIMATION_TIME / 20; - - TranslatableComponent percentU235String = new TranslatableComponent("jei.gui." + RECIPE_GROUP + ".info.percent_u235", animTimeSeconds); - TranslatableComponent percentU238String = new TranslatableComponent("jei.gui." + RECIPE_GROUP + ".info.percent_u238", animTimeSeconds); - TranslatableComponent percentBiproductString = new TranslatableComponent("jei.gui." + RECIPE_GROUP + ".info.percent_biproduct", animTimeSeconds); - - Minecraft minecraft = Minecraft.getInstance(); - Font fontRenderer = minecraft.font; - - fontRenderer.draw(matrixStack, percentU235String, 36, 7, 0xFF616161); - fontRenderer.draw(matrixStack, percentU238String, 36, 28, 0xFF616161); - fontRenderer.draw(matrixStack, percentBiproductString, 36, 49, 0xFF616161); + public List> getFluidInputs(PsuedoGasCentrifugeRecipe recipe) { + List> inputs = new ArrayList<>(); + inputs.add(recipe.inputFluidStack.getMatchingFluids()); + return inputs; } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorAntiMatterRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorAntiMatterRecipeCategory.java index ec551dea..2e4c9a14 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorAntiMatterRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorAntiMatterRecipeCategory.java @@ -4,149 +4,85 @@ import java.util.Arrays; import java.util.List; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.mojang.blaze3d.vertex.PoseStack; - -import electrodynamics.compatibility.jei.recipecategories.psuedo.PsuedoItem2ItemRecipe; -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableAnimated; +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.api.electricity.formatting.DisplayUnit; +import electrodynamics.compatibility.jei.recipecategories.utils.AbstractRecipeCategory; +import electrodynamics.compatibility.jei.recipecategories.utils.psuedorecipes.types.PsuedoItem2ItemRecipe; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.label.types.LabelWrapperGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; -import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.AirItem; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.registries.ForgeRegistries; import nuclearscience.References; +import nuclearscience.common.settings.Constants; +import nuclearscience.compatibility.jei.utils.NuclearJeiTextures; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; -public class ParticleAcceleratorAntiMatterRecipeCategory implements IRecipeCategory { +public class ParticleAcceleratorAntiMatterRecipeCategory extends AbstractRecipeCategory { - private static int[] GUI_BACKGROUND = { 0, 0, 132, 66 }; - private static int[] PROCESSING_ARROW_COORDS = { 0, 67, 82, 47 }; + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 66); - private static int[] PROCESSING_ARROW_OFFSET = { 17, 6 }; + public static final ItemSlotObject MATTER_SLOT = new ItemSlotObject(SlotType.NORMAL, 12, 2, RecipeIngredientRole.INPUT); + public static final ItemSlotObject CELL_SLOT = new ItemSlotObject(SlotType.NORMAL, 12, 39, RecipeIngredientRole.INPUT); + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 101, 20, RecipeIngredientRole.OUTPUT); - private static int ANIM_TIME = 50; - private static int DESC_Y_HEIGHT = 58; + public static final ArrowAnimatedObject ANIM_RIGHT_ARROW = new ArrowAnimatedObject(NuclearJeiTextures.PARTICLEACCELERATOR_AMARROW_OFF, NuclearJeiTextures.PARTICLEACCELERATOR_AMARROW_ON, 17, 6, StartDirection.LEFT); - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "particalaccelerator.antimatter"; - private static String GUI_TEXTURE = "textures/gui/jei/particle_accelerator_antimatter_gui.png"; + public static final LabelWrapperGeneric POWER_LABEL = new LabelWrapperGeneric(0xFF808080, 58, 2, false, ChatFormatter.getChatDisplayShort(960, DisplayUnit.VOLTAGE).append(" ").append(ChatFormatter.getChatDisplayShort(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE, DisplayUnit.JOULES))); + // public static final LabelWrapperGeneric COLLISION_LABEL = new LabelWrapperGeneric(0xFF808080, 58, 132, true, NuclearTextUtils.jeiTranslated("particalaccelerator.antimatter.collision")); - public static ItemStack INPUT_MACHINE = new ItemStack(nuclearscience.DeferredRegisters.blockParticleInjector); - private LoadingCache cachedArrows; - private static StartDirection ARROW_START_DIRECTION = IDrawableAnimated.StartDirection.LEFT; + public static final int ANIM_TIME = 50; - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockParticleInjector); - private IDrawable BACKGROUND; - private IDrawable ICON; + public static final String RECIPE_GROUP = "particalacceleratorantimatter"; - public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, "anti_matter_recipe", PsuedoItem2ItemRecipe.class); + public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, RECIPE_GROUP, PsuedoItem2ItemRecipe.class); public ParticleAcceleratorAntiMatterRecipeCategory(IGuiHelper guiHelper) { + super(guiHelper, NuclearTextUtils.jeiTranslated(RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); - ICON = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, INPUT_MACHINE); - BACKGROUND = guiHelper.createDrawable(new ResourceLocation(MOD_ID, GUI_TEXTURE), GUI_BACKGROUND[0], GUI_BACKGROUND[1], GUI_BACKGROUND[2], GUI_BACKGROUND[3]); - - cachedArrows = CacheBuilder.newBuilder().maximumSize(1).build(new CacheLoader() { - @Override - public IDrawableAnimated load(Integer cookTime) { - return guiHelper.drawableBuilder(new ResourceLocation(MOD_ID, GUI_TEXTURE), PROCESSING_ARROW_COORDS[0], PROCESSING_ARROW_COORDS[1], PROCESSING_ARROW_COORDS[2], PROCESSING_ARROW_COORDS[3]).buildAnimated(cookTime, ARROW_START_DIRECTION, false); - } - }); - } - - @Override - public ResourceLocation getUid() { - return UID; + setInputSlots(guiHelper, MATTER_SLOT, CELL_SLOT); + setOutputSlots(guiHelper, OUTPUT_SLOT); + setAnimatedArrows(guiHelper, ANIM_RIGHT_ARROW); + setLabels(POWER_LABEL); } @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; - } + public List> getItemInputs(PsuedoItem2ItemRecipe recipe) { + List> inputs = new ArrayList<>(); - @Override - public Class getRecipeClass() { - return PsuedoItem2ItemRecipe.class; - } + inputs.add(getMatterItems()); + inputs.add(Arrays.asList(recipe.INPUTS.get(0).getItems())); - @Override - public Component getTitle() { - return new TranslatableComponent("jei.gui." + RECIPE_GROUP); + return inputs; } - @Override - public IDrawable getBackground() { - return BACKGROUND; - } + public static List getMatterItems() { + List items = new ArrayList<>(ForgeRegistries.ITEMS.getValues()); + List matter = new ArrayList<>(); - @Override - public IDrawable getIcon() { - return ICON; - } + items.forEach(item -> { + if (!(item instanceof AirItem)) { + matter.add(new ItemStack(item)); + } + }); - @Override - public void setRecipe(IRecipeLayoutBuilder builder, PsuedoItem2ItemRecipe recipe, IFocusGroup focuses) { - builder.addSlot(RecipeIngredientRole.INPUT, 13, 40).addItemStacks(Arrays.asList(recipe.INPUTS.get(0).getItems())); - builder.addSlot(RecipeIngredientRole.INPUT, 13, 3).addItemStacks(filterItems(recipe)); - builder.addSlot(RecipeIngredientRole.OUTPUT, 102, 21).addItemStack(recipe.OUTPUT); + return matter; } @Override - public void draw(PsuedoItem2ItemRecipe recipe, PoseStack matrixStack, double mouseX, double mouseY) { - IDrawableAnimated arrow = cachedArrows.getUnchecked(ANIM_TIME); - arrow.draw(matrixStack, PROCESSING_ARROW_OFFSET[0], PROCESSING_ARROW_OFFSET[1]); - - int animTimeSeconds = ANIM_TIME / 20; - TranslatableComponent timeString = new TranslatableComponent("jei.gui." + RECIPE_GROUP + ".info.power", animTimeSeconds); - Minecraft minecraft = Minecraft.getInstance(); - Font fontRenderer = minecraft.font; - float stringWidth = fontRenderer.width(timeString); - fontRenderer.draw(matrixStack, timeString, getBackground().getWidth() - stringWidth, DESC_Y_HEIGHT, 0xFF808080); - } - - protected static List filterItems(PsuedoItem2ItemRecipe recipe) { - int i = 0; - List allItems = new ArrayList<>(ForgeRegistries.ITEMS.getValues()); - List vanillaItems = new ArrayList<>(); - CreativeModeTab[] vanillaItemGroups = { CreativeModeTab.TAB_BREWING, CreativeModeTab.TAB_BUILDING_BLOCKS, CreativeModeTab.TAB_COMBAT, CreativeModeTab.TAB_DECORATIONS, CreativeModeTab.TAB_FOOD, CreativeModeTab.TAB_MISC, CreativeModeTab.TAB_REDSTONE, CreativeModeTab.TAB_TOOLS, CreativeModeTab.TAB_TRANSPORTATION }; - for (Item item : allItems) { - for (i = 0; i < vanillaItemGroups.length; i++) { - if (item.getItemCategory() == vanillaItemGroups[i]) { - vanillaItems.add(item); - break; - } - } - } - // Filters out Air item; breaks JEI category if left! - for (Item item : vanillaItems) { - if (item instanceof AirItem) { - vanillaItems.remove(item); - } - } - - List vanillaItemStacks = new ArrayList<>(); - for (Item item : vanillaItems) { - vanillaItemStacks.add(new ItemStack(item)); - } - - return vanillaItemStacks; - + public List getItemOutputs(PsuedoItem2ItemRecipe recipe) { + return Arrays.asList(recipe.OUTPUT); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorDarkMatterRecipeCategory.java b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorDarkMatterRecipeCategory.java index 8e154215..e3320794 100644 --- a/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorDarkMatterRecipeCategory.java +++ b/src/main/java/nuclearscience/compatibility/jei/recipecategories/psuedo/specificmachines/ParticleAcceleratorDarkMatterRecipeCategory.java @@ -1,126 +1,95 @@ package nuclearscience.compatibility.jei.recipecategories.psuedo.specificmachines; -import java.util.ArrayList; import java.util.Arrays; +import java.util.List; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; import com.mojang.blaze3d.vertex.PoseStack; -import electrodynamics.compatibility.jei.recipecategories.psuedo.PsuedoItem2ItemRecipe; -import mezz.jei.api.constants.VanillaTypes; +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.api.electricity.formatting.DisplayUnit; +import electrodynamics.api.screen.ITexture; +import electrodynamics.compatibility.jei.recipecategories.utils.AbstractRecipeCategory; +import electrodynamics.compatibility.jei.recipecategories.utils.psuedorecipes.types.PsuedoItem2ItemRecipe; +import electrodynamics.compatibility.jei.utils.gui.ScreenObject; +import electrodynamics.compatibility.jei.utils.gui.types.ArrowAnimatedObject; +import electrodynamics.compatibility.jei.utils.gui.types.BackgroundObject; +import electrodynamics.compatibility.jei.utils.gui.types.ItemSlotObject; +import electrodynamics.compatibility.jei.utils.label.types.LabelWrapperGeneric; +import electrodynamics.prefab.screen.component.types.ScreenComponentSlot.SlotType; +import electrodynamics.prefab.utilities.RenderingUtils; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableAnimated.StartDirection; import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.world.item.ItemStack; import nuclearscience.References; +import nuclearscience.common.settings.Constants; +import nuclearscience.compatibility.jei.utils.NuclearJeiTextures; +import nuclearscience.prefab.utils.NuclearTextUtils; +import nuclearscience.registers.NuclearScienceBlocks; -public class ParticleAcceleratorDarkMatterRecipeCategory implements IRecipeCategory { +public class ParticleAcceleratorDarkMatterRecipeCategory extends AbstractRecipeCategory { - public static final int OUTPUT_SLOT = 0; + public static final BackgroundObject BACK_WRAP = new BackgroundObject(132, 132); - private static int[] GUI_BACKGROUND = { 0, 0, 132, 132 }; + public static final ScreenObject ATOM_TOP = new ScreenObject(NuclearJeiTextures.PARTICLEACCELERATOR_DMATOM, 60, 16); + public static final ScreenObject ATOM_BOTTOM = new ScreenObject(NuclearJeiTextures.PARTICLEACCELERATOR_DMATOM, 55, 101); - public static int ANIM_TIME = 50; - private static int DESC_Y_HEIGHT = 122; + public static final ItemSlotObject OUTPUT_SLOT = new ItemSlotObject(SlotType.NORMAL, 57, 57, RecipeIngredientRole.OUTPUT); - private static String MOD_ID = References.ID; - private static String RECIPE_GROUP = "particalaccelerator.darkmatter"; - private static String GUI_TEXTURE = "textures/gui/jei/particle_accelerator_dark_matter_gui.png"; + public static final ArrowAnimatedObject ANIM_RIGHT_LEFT = new ArrowAnimatedObject(NuclearJeiTextures.PARTICLEACCELERATOR_DMARROWOFF_LEFT, NuclearJeiTextures.PARTICLEACCELERATOR_DMARROWON_LEFT, 25, 22, StartDirection.TOP); + public static final ArrowAnimatedObject ANIM_RIGHT_RIGHT = new ArrowAnimatedObject(NuclearJeiTextures.PARTICLEACCELERATOR_DMARROWOFF_RIGHT, NuclearJeiTextures.PARTICLEACCELERATOR_DMARROWON_RIGHT, 72, 39, StartDirection.BOTTOM); - public static ItemStack INPUT_MACHINE = new ItemStack(nuclearscience.DeferredRegisters.blockParticleInjector); + public static final LabelWrapperGeneric POWER_LABEL = new LabelWrapperGeneric(0xFF808080, 124, 2, false, ChatFormatter.getChatDisplayShort(960, DisplayUnit.VOLTAGE).append(" ").append(ChatFormatter.getChatDisplayShort(Constants.PARTICLEINJECTOR_USAGE_PER_PARTICLE, DisplayUnit.JOULES))); - private LoadingCache> cachedArrows; + public static final int ANIM_TIME = 50; - public static ResourceLocation UID = new ResourceLocation(MOD_ID, RECIPE_GROUP); + public static ItemStack INPUT_MACHINE = new ItemStack(NuclearScienceBlocks.blockParticleInjector); - private IDrawable BACKGROUND; - private IDrawable ICON; + public static final String RECIPE_GROUP = "particalacceleratordarkmatter"; - public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, "dark_matter_recipe", PsuedoItem2ItemRecipe.class); + public static final RecipeType RECIPE_TYPE = RecipeType.create(References.ID, RECIPE_GROUP, PsuedoItem2ItemRecipe.class); public ParticleAcceleratorDarkMatterRecipeCategory(IGuiHelper guiHelper) { + super(guiHelper, NuclearTextUtils.jeiTranslated(RECIPE_GROUP), INPUT_MACHINE, BACK_WRAP, RECIPE_TYPE, ANIM_TIME); - ICON = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, INPUT_MACHINE); - BACKGROUND = guiHelper.createDrawable(new ResourceLocation(MOD_ID, GUI_TEXTURE), GUI_BACKGROUND[0], GUI_BACKGROUND[1], GUI_BACKGROUND[2], GUI_BACKGROUND[3]); - - ResourceLocation guiTexture = new ResourceLocation(MOD_ID, GUI_TEXTURE); - - cachedArrows = CacheBuilder.newBuilder().maximumSize(2).build(new CacheLoader>() { - @Override - public ArrayList load(Integer cookTime) { - - IDrawableAnimated majorArrowBottom = guiHelper.drawableBuilder(guiTexture, 179, 17, 37, 75).buildAnimated(cookTime, IDrawableAnimated.StartDirection.BOTTOM, false); - - IDrawableAnimated majorArrowTop = guiHelper.drawableBuilder(guiTexture, 132, 0, 37, 75).buildAnimated(cookTime, IDrawableAnimated.StartDirection.TOP, false); - - IDrawableAnimated[] arrows = { majorArrowBottom, majorArrowTop }; - return new ArrayList<>(Arrays.asList(arrows)); - } - }); + setOutputSlots(guiHelper, OUTPUT_SLOT); + setAnimatedArrows(guiHelper, ANIM_RIGHT_LEFT, ANIM_RIGHT_RIGHT); + setScreenObjects(guiHelper, ATOM_TOP, ATOM_BOTTOM); + setLabels(POWER_LABEL); } @Override - public ResourceLocation getUid() { - return UID; + public List getItemOutputs(PsuedoItem2ItemRecipe recipe) { + return Arrays.asList(recipe.OUTPUT); } @Override - public RecipeType getRecipeType() { - return RECIPE_TYPE; + public void setRecipe(IRecipeLayoutBuilder builder, PsuedoItem2ItemRecipe recipe, IFocusGroup focuses) { + builder.addInvisibleIngredients(RecipeIngredientRole.INPUT).addItemStacks(ParticleAcceleratorAntiMatterRecipeCategory.getMatterItems()); + builder.addInvisibleIngredients(RecipeIngredientRole.INPUT).addItemStacks(Arrays.asList(recipe.INPUTS.get(0).getItems())); + super.setRecipe(builder, recipe, focuses); } @Override - public Class getRecipeClass() { - return PsuedoItem2ItemRecipe.class; - } + public void drawPre(PoseStack stack, PsuedoItem2ItemRecipe recipe) { - @Override - public Component getTitle() { - return new TranslatableComponent("jei.gui." + RECIPE_GROUP); - } + stack.pushPose(); - @Override - public IDrawable getBackground() { - return BACKGROUND; - } + ITexture texture = NuclearJeiTextures.PARTICLEACCELERATOR_DMBLACKHOLE; + + RenderingUtils.bindTexture(texture.getLocation()); + + Screen.blit(stack, 28, 28, texture.textureU(), texture.textureV(), texture.textureWidth(), texture.textureHeight(), texture.imageWidth(), texture.imageHeight()); - @Override - public IDrawable getIcon() { - return ICON; - } + RenderingUtils.resetShaderColor(); - @Override - public void setRecipe(IRecipeLayoutBuilder builder, PsuedoItem2ItemRecipe recipe, IFocusGroup focuses) { - builder.addInvisibleIngredients(RecipeIngredientRole.INPUT).addItemStacks(ParticleAcceleratorAntiMatterRecipeCategory.filterItems(recipe)); - builder.addInvisibleIngredients(RecipeIngredientRole.INPUT).addItemStacks(Arrays.asList(recipe.INPUTS.get(0).getItems())); - builder.addSlot(RecipeIngredientRole.OUTPUT, 58, 58).addItemStack(recipe.OUTPUT); - } + stack.popPose(); - @Override - public void draw(PsuedoItem2ItemRecipe recipe, PoseStack matrixStack, double mouseX, double mouseY) { - ArrayList arrow = cachedArrows.getUnchecked(ANIM_TIME); - arrow.get(0).draw(matrixStack, 70, 38); - arrow.get(1).draw(matrixStack, 23, 21); - - int animTimeSeconds = ANIM_TIME / 20; - TranslatableComponent timeString = new TranslatableComponent("jei.gui." + RECIPE_GROUP + ".info.power", animTimeSeconds); - Minecraft minecraft = Minecraft.getInstance(); - Font fontRenderer = minecraft.font; - float stringWidth = fontRenderer.width(timeString); - fontRenderer.draw(matrixStack, timeString, getBackground().getWidth() - stringWidth, DESC_Y_HEIGHT, 0xFF808080); } } diff --git a/src/main/java/nuclearscience/compatibility/jei/utils/NuclearJeiTextures.java b/src/main/java/nuclearscience/compatibility/jei/utils/NuclearJeiTextures.java new file mode 100644 index 00000000..3516ee52 --- /dev/null +++ b/src/main/java/nuclearscience/compatibility/jei/utils/NuclearJeiTextures.java @@ -0,0 +1,77 @@ +package nuclearscience.compatibility.jei.utils; + +import electrodynamics.api.screen.ITexture; +import net.minecraft.resources.ResourceLocation; +import nuclearscience.References; + +public enum NuclearJeiTextures implements ITexture { + + GASCENTRIFUGE_ARROW_OFF(47, 54, 0, 0, 47, 54, new ResourceLocation(References.ID + ":textures/screen/jei/gascentrifugearrowoff.png")), + GASCENTRIFUGE_ARROW_ON(47, 54, 0, 0, 47, 54, new ResourceLocation(References.ID + ":textures/screen/jei/gascentrifugearrowon.png")), + GASCENTRIFUGE_ARROW_STATIC(43, 53, 0, 0, 43, 53, new ResourceLocation(References.ID + ":textures/screen/jei/gascentrifugearrowstatic.png")), + + PARTICLEACCELERATOR_AMARROW_OFF(82, 47, 0, 0, 82, 47, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_amarrowoff.png")), + PARTICLEACCELERATOR_AMARROW_ON(82, 47, 0, 0, 82, 47, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_amarrowon.png")), + + PARTICLEACCELERATOR_DMARROWOFF_LEFT(34, 72, 0, 0, 34, 72, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_dmarrowoff_left.png")), + PARTICLEACCELERATOR_DMARROWOFF_RIGHT(34, 72, 0, 0, 34, 72, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_dmarrowoff_right.png")), + PARTICLEACCELERATOR_DMARROWON_LEFT(34, 72, 0, 0, 34, 72, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_dmarrowon_left.png")), + PARTICLEACCELERATOR_DMARROWON_RIGHT(34, 72, 0, 0, 34, 72, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_dmarrowon_right.png")), + PARTICLEACCELERATOR_DMATOM(16, 16, 0, 0, 16, 16, new ResourceLocation(References.ID + ":textures/screen/jei/particleaccelerator_dmatom.png")), + PARTICLEACCELERATOR_DMBLACKHOLE(77, 76, 0, 0, 77, 76, new ResourceLocation(References.ID + ":textures/custom/particleaccelerator_dmblackhole.png")); + + private final int textureWidth; + private final int textureHeight; + private final int textureU; + private final int textureV; + private final int imageWidth; + private final int imageHeight; + private final ResourceLocation loc; + + private NuclearJeiTextures(int textureWidth, int textureHeight, int textureU, int textureV, int imageWidth, int imageHeight, ResourceLocation loc) { + + this.textureWidth = textureWidth; + this.textureHeight = textureHeight; + this.textureU = textureU; + this.textureV = textureV; + this.imageWidth = imageWidth; + this.imageHeight = imageHeight; + this.loc = loc; + } + + @Override + public ResourceLocation getLocation() { + return loc; + } + + @Override + public int imageHeight() { + return imageHeight; + } + + @Override + public int imageWidth() { + return imageWidth; + } + + @Override + public int textureHeight() { + return textureHeight; + } + + @Override + public int textureU() { + return textureU; + } + + @Override + public int textureV() { + return textureV; + } + + @Override + public int textureWidth() { + return textureWidth; + } + +} diff --git a/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/NuclearSciencePsuedoRecipes.java b/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/NuclearSciencePsuedoRecipes.java index b2dbd6c8..3c7fd413 100644 --- a/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/NuclearSciencePsuedoRecipes.java +++ b/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/NuclearSciencePsuedoRecipes.java @@ -3,17 +3,16 @@ import java.util.ArrayList; import java.util.Arrays; -import electrodynamics.compatibility.jei.recipecategories.psuedo.PsuedoItem2ItemRecipe; +import electrodynamics.common.recipe.recipeutils.FluidIngredient; +import electrodynamics.compatibility.jei.recipecategories.utils.psuedorecipes.types.PsuedoItem2ItemRecipe; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import nuclearscience.DeferredRegisters; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceItems; public class NuclearSciencePsuedoRecipes { private static ArrayList> NUCLEAR_SCIENCE_ITEMS = new ArrayList<>(); - private static ArrayList NUCLEAR_SCIENCE_FLUIDS = new ArrayList<>(); public static ArrayList GAS_CENTRIFUGE_RECIPES = new ArrayList<>(); public static ArrayList ANTI_MATTER_RECIPES = new ArrayList<>(); @@ -21,29 +20,24 @@ public class NuclearSciencePsuedoRecipes { public static void addNuclearScienceRecipes() { - addNuclearScienceFluids(); addNuclearScienceItems(); - GAS_CENTRIFUGE_RECIPES.add(new PsuedoGasCentrifugeRecipe(new FluidStack(NUCLEAR_SCIENCE_FLUIDS.get(0), 5000), NUCLEAR_SCIENCE_ITEMS.get(0).get(2), NUCLEAR_SCIENCE_ITEMS.get(0).get(1), new ItemStack(DeferredRegisters.ITEM_FISSILEDUST.get()))); + GAS_CENTRIFUGE_RECIPES.add(new PsuedoGasCentrifugeRecipe(new FluidIngredient(NuclearScienceTags.Fluids.URANIUM_HEXAFLUORIDE, 5000), NUCLEAR_SCIENCE_ITEMS.get(0).get(2), NUCLEAR_SCIENCE_ITEMS.get(0).get(1), new ItemStack(NuclearScienceItems.ITEM_FISSILEDUST.get()))); - ANTI_MATTER_RECIPES.add(new PsuedoItem2ItemRecipe(Arrays.asList(new ItemStack[] { NUCLEAR_SCIENCE_ITEMS.get(1).get(4) }), NUCLEAR_SCIENCE_ITEMS.get(1).get(5))); + ANTI_MATTER_RECIPES.add(new PsuedoItem2ItemRecipe(Arrays.asList(NUCLEAR_SCIENCE_ITEMS.get(1).get(4)), NUCLEAR_SCIENCE_ITEMS.get(1).get(5))); - DARK_MATTER_RECIPES.add(new PsuedoItem2ItemRecipe(Arrays.asList(new ItemStack[] { NUCLEAR_SCIENCE_ITEMS.get(1).get(4) }), NUCLEAR_SCIENCE_ITEMS.get(1).get(7))); - } - - private static void addNuclearScienceFluids() { - NUCLEAR_SCIENCE_FLUIDS.add(nuclearscience.DeferredRegisters.fluidUraniumHexafluoride); + DARK_MATTER_RECIPES.add(new PsuedoItem2ItemRecipe(Arrays.asList(NUCLEAR_SCIENCE_ITEMS.get(1).get(4)), NUCLEAR_SCIENCE_ITEMS.get(1).get(7))); } private static void addNuclearScienceItems() { // Uranium and Derivatives : 0 - Item[] uraniumMisc = { nuclearscience.DeferredRegisters.ITEM_YELLOWCAKE.get(), nuclearscience.DeferredRegisters.ITEM_URANIUM238.get(), nuclearscience.DeferredRegisters.ITEM_URANIUM235.get() }; + Item[] uraniumMisc = { NuclearScienceItems.ITEM_YELLOWCAKE.get(), NuclearScienceItems.ITEM_URANIUM238.get(), NuclearScienceItems.ITEM_URANIUM235.get() }; NUCLEAR_SCIENCE_ITEMS.add(formItemStacks(uraniumMisc, 1)); // Cells : 1 - Item[] cells = { nuclearscience.DeferredRegisters.ITEM_CELLEMPTY.get(), nuclearscience.DeferredRegisters.ITEM_CELLHEAVYWATER.get(), nuclearscience.DeferredRegisters.ITEM_CELLDEUTERIUM.get(), nuclearscience.DeferredRegisters.ITEM_CELLTRITIUM.get(), nuclearscience.DeferredRegisters.ITEM_CELLELECTROMAGNETIC.get(), nuclearscience.DeferredRegisters.ITEM_CELLANTIMATTERSMALL.get(), nuclearscience.DeferredRegisters.ITEM_CELLANTIMATTERLARGE.get(), nuclearscience.DeferredRegisters.ITEM_CELLDARKMATTER.get() }; + Item[] cells = { NuclearScienceItems.ITEM_CELLEMPTY.get(), NuclearScienceItems.ITEM_CELLHEAVYWATER.get(), NuclearScienceItems.ITEM_CELLDEUTERIUM.get(), NuclearScienceItems.ITEM_CELLTRITIUM.get(), NuclearScienceItems.ITEM_CELLELECTROMAGNETIC.get(), NuclearScienceItems.ITEM_CELLANTIMATTERSMALL.get(), NuclearScienceItems.ITEM_CELLANTIMATTERLARGE.get(), NuclearScienceItems.ITEM_CELLDARKMATTER.get() }; NUCLEAR_SCIENCE_ITEMS.add(formItemStacks(cells, 1)); diff --git a/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/PsuedoGasCentrifugeRecipe.java b/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/PsuedoGasCentrifugeRecipe.java index 1572603f..e625b199 100644 --- a/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/PsuedoGasCentrifugeRecipe.java +++ b/src/main/java/nuclearscience/compatibility/jei/utils/psuedorecipes/PsuedoGasCentrifugeRecipe.java @@ -1,17 +1,17 @@ package nuclearscience.compatibility.jei.utils.psuedorecipes; +import electrodynamics.common.recipe.recipeutils.FluidIngredient; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; public class PsuedoGasCentrifugeRecipe { - public FluidStack inputFluidStack; + public FluidIngredient inputFluidStack; public ItemStack output1; public ItemStack output2; public ItemStack biproduct; - public PsuedoGasCentrifugeRecipe(FluidStack inputFluid, ItemStack output1, ItemStack output2, ItemStack biproduct) { - inputFluidStack = inputFluid; + public PsuedoGasCentrifugeRecipe(FluidIngredient inputGas, ItemStack output1, ItemStack output2, ItemStack biproduct) { + inputFluidStack = inputGas; this.output1 = output1; this.output2 = output2; this.biproduct = biproduct; diff --git a/src/main/java/nuclearscience/datagen/DataGenerators.java b/src/main/java/nuclearscience/datagen/DataGenerators.java new file mode 100644 index 00000000..f861adf5 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/DataGenerators.java @@ -0,0 +1,46 @@ +package nuclearscience.datagen; + +import electrodynamics.datagen.client.ElectrodynamicsLangKeyProvider.Locale; +import net.minecraft.data.DataGenerator; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; +import nuclearscience.References; +import nuclearscience.datagen.client.NuclearScienceBlockStateProvider; +import nuclearscience.datagen.client.NuclearScienceItemModelsProvider; +import nuclearscience.datagen.client.NuclearScienceLangKeyProvider; +import nuclearscience.datagen.client.NuclearScienceSoundProvider; +import nuclearscience.datagen.server.NuclearScienceBlockTagsProvider; +import nuclearscience.datagen.server.NuclearScienceFluidTagsProvider; +import nuclearscience.datagen.server.NuclearScienceItemTagsProvider; +import nuclearscience.datagen.server.NuclearScienceLootTablesProvider; +import nuclearscience.datagen.server.radiation.RadioactiveItemsProvider; +import nuclearscience.datagen.server.recipe.NuclearScienceRecipeProvider; + +@Mod.EventBusSubscriber(modid = References.ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class DataGenerators { + + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + + DataGenerator generator = event.getGenerator(); + if (event.includeServer()) { + + NuclearScienceBlockTagsProvider blockProvider = new NuclearScienceBlockTagsProvider(generator, event.getExistingFileHelper()); + generator.addProvider(blockProvider); + generator.addProvider(new NuclearScienceItemTagsProvider(generator, blockProvider, event.getExistingFileHelper())); + generator.addProvider(new NuclearScienceFluidTagsProvider(generator, event.getExistingFileHelper())); + generator.addProvider(new NuclearScienceLootTablesProvider(generator)); + generator.addProvider(new NuclearScienceRecipeProvider(generator)); + generator.addProvider(new RadioactiveItemsProvider(generator)); + + } + if (event.includeClient()) { + generator.addProvider(new NuclearScienceBlockStateProvider(generator, event.getExistingFileHelper())); + generator.addProvider(new NuclearScienceItemModelsProvider(generator, event.getExistingFileHelper())); + generator.addProvider(new NuclearScienceLangKeyProvider(generator, Locale.EN_US)); + generator.addProvider(new NuclearScienceSoundProvider(generator, event.getExistingFileHelper())); + } + } + +} diff --git a/src/main/java/nuclearscience/datagen/client/NuclearScienceBlockStateProvider.java b/src/main/java/nuclearscience/datagen/client/NuclearScienceBlockStateProvider.java new file mode 100644 index 00000000..27d98b5a --- /dev/null +++ b/src/main/java/nuclearscience/datagen/client/NuclearScienceBlockStateProvider.java @@ -0,0 +1,88 @@ +package nuclearscience.datagen.client; + +import electrodynamics.datagen.client.ElectrodynamicsBlockStateProvider; +import electrodynamics.prefab.block.GenericEntityBlock; +import net.minecraft.core.Direction; +import net.minecraft.data.DataGenerator; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.ItemModelBuilder; +import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.common.data.ExistingFileHelper; +import nuclearscience.References; +import nuclearscience.common.block.BlockElectromagneticBooster; +import nuclearscience.common.block.facing.FacingDirection; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.registers.NuclearScienceBlocks; + +public class NuclearScienceBlockStateProvider extends ElectrodynamicsBlockStateProvider { + + public NuclearScienceBlockStateProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { + super(gen, exFileHelper, References.ID); + } + + @Override + protected void registerStatesAndModels() { + + simpleBlock(NuclearScienceBlocks.blocklead, blockLoc("blocklead"), true); + simpleColumnBlock(NuclearScienceBlocks.blockElectromagnet, blockLoc("electromagnet"), blockLoc("electromagnettop"), true); + simpleBlock(NuclearScienceBlocks.blockElectromagneticGlass, blockLoc("electromagneticglass"), true); + simpleBlock(NuclearScienceBlocks.blockFreezePlug, existingBlock(NuclearScienceBlocks.blockFreezePlug), true); + simpleBlock(NuclearScienceBlocks.blockPlasma, blockLoc("plasma"), true); + airBlock(NuclearScienceBlocks.blockRadioactiveAir, "block/plasma", true); + snowyBlock(NuclearScienceBlocks.blockRadioactiveSoil, cubeAll(NuclearScienceBlocks.blockRadioactiveSoil), existingBlock(new ResourceLocation("block/grass_block_snow")), true); + simpleBlock(NuclearScienceBlocks.blockMeltedReactor, existingBlock(NuclearScienceBlocks.blockMeltedReactor), true); + simpleBlock(NuclearScienceBlocks.blockRadioisotopeGenerator, existingBlock(NuclearScienceBlocks.blockRadioisotopeGenerator), true); + simpleBlock(NuclearScienceBlocks.blockSiren, blockLoc("siren"), true); + simpleBlock(NuclearScienceBlocks.blockTurbine, existingBlock(blockLoc("turbinecasing")), false); + simpleBlock(NuclearScienceBlocks.blockElectromagneticSwitch, existingBlock(NuclearScienceBlocks.blockElectromagneticSwitch), true); + + horrRotatedBlock(NuclearScienceBlocks.blockAtomicAssembler, existingBlock(NuclearScienceBlocks.blockAtomicAssembler), false); + horrRotatedBlock(NuclearScienceBlocks.blockChemicalExtractor, existingBlock(NuclearScienceBlocks.blockChemicalExtractor), true); + horrRotatedBlock(NuclearScienceBlocks.blockControlRodAssembly, existingBlock(NuclearScienceBlocks.blockControlRodAssembly), 180, 0, false); + rotatedLeftRightBlock(NuclearScienceBlocks.blockElectromagneticBooster, existingBlock(blockLoc("electromagneticbooster")), existingBlock(blockLoc("electromagneticboosterleft")), existingBlock(blockLoc("electromagneticboosterright")), 90, true); + horrRotatedLitBlock(NuclearScienceBlocks.blockFuelReprocessor, existingBlock(NuclearScienceBlocks.blockFuelReprocessor), existingBlock(blockLoc("fuelreprocessoron")), true); + horrRotatedBlock(NuclearScienceBlocks.blockFusionReactorCore, existingBlock(NuclearScienceBlocks.blockFusionReactorCore), true); + horrRotatedBlock(NuclearScienceBlocks.blockGasCentrifuge, existingBlock(blockLoc("gascentrifugeoutline")), 180, 0, false); + horrRotatedBlock(NuclearScienceBlocks.blockHeatExchanger, existingBlock(NuclearScienceBlocks.blockHeatExchanger), true); + horrRotatedLitBlock(NuclearScienceBlocks.blockMoltenSaltSupplier, existingBlock(NuclearScienceBlocks.blockMoltenSaltSupplier), existingBlock(blockLoc("moltensaltsupplieron")), true); + horrRotatedBlock(NuclearScienceBlocks.blockMSRFuelPreProcessor, existingBlock(NuclearScienceBlocks.blockMSRFuelPreProcessor), true); + horrRotatedBlock(NuclearScienceBlocks.blockMSReactorCore, existingBlock(NuclearScienceBlocks.blockMSReactorCore), 180, 0, true); + horrRotatedBlock(NuclearScienceBlocks.blockNuclearBoiler, existingBlock(NuclearScienceBlocks.blockNuclearBoiler), 180, 0, true); + horrRotatedBlock(NuclearScienceBlocks.blockParticleInjector, existingBlock(NuclearScienceBlocks.blockParticleInjector), 180, 0, false); + horrRotatedBlock(NuclearScienceBlocks.blockQuantumCapacitor, existingBlock(NuclearScienceBlocks.blockQuantumCapacitor), true); + horrRotatedLitBlock(NuclearScienceBlocks.blockRadioactiveProcessor, existingBlock(NuclearScienceBlocks.blockRadioactiveProcessor), existingBlock(blockLoc("radioactiveprocessoron")), true); + horrRotatedBlock(NuclearScienceBlocks.blockFissionReactorCore, existingBlock(NuclearScienceBlocks.blockFissionReactorCore), true); + horrRotatedLitBlock(NuclearScienceBlocks.blockTeleporter, existingBlock(NuclearScienceBlocks.blockTeleporter), existingBlock(blockLoc("teleporteron")), true); + + genPipes(); + + } + + private void genPipes() { + + String parent = "parent/"; + String name = "block/pipe/"; + String texture = "pipe/"; + + for (SubtypeMoltenSaltPipe pipe : SubtypeMoltenSaltPipe.values()) { + wire(NuclearScienceBlocks.getBlock(pipe), models().withExistingParent(name + pipe.tag() + "_none", modLoc(parent + "pipe_none")).texture("texture", blockLoc(texture + pipe.tag())).texture("particle", "#texture"), models().withExistingParent(name + pipe.tag() + "_side", modLoc(parent + "pipe_side")).texture("texture", blockLoc(texture + pipe.tag())).texture("particle", "#texture"), false); + } + + } + + public ItemModelBuilder rotatedLeftRightBlock(Block block, ModelFile none, ModelFile left, ModelFile right, boolean registerItem) { + return rotatedLeftRightBlock(block, none, left, right, 0, registerItem); + } + + public ItemModelBuilder rotatedLeftRightBlock(Block block, ModelFile none, ModelFile left, ModelFile right, int rotationOffset, boolean registerItem) { + getVariantBuilder(block).partialState().with(GenericEntityBlock.FACING, Direction.NORTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.NONE).modelForState().modelFile(none).rotationY((270 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.EAST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.NONE).modelForState().modelFile(none).rotationY((0 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.SOUTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.NONE).modelForState().modelFile(none).rotationY((90 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.WEST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.NONE).modelForState().modelFile(none).rotationY((180 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.NORTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.LEFT).modelForState().modelFile(left).rotationY((270 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.EAST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.LEFT).modelForState().modelFile(left).rotationY((0 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.SOUTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.LEFT).modelForState().modelFile(left).rotationY((90 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.WEST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.LEFT).modelForState().modelFile(left).rotationY((180 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.NORTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.RIGHT).modelForState().modelFile(right).rotationY((270 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.EAST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.RIGHT).modelForState().modelFile(right).rotationY((0 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.SOUTH).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.RIGHT).modelForState().modelFile(right).rotationY((90 + rotationOffset) % 360).addModel().partialState().with(GenericEntityBlock.FACING, Direction.WEST).with(BlockElectromagneticBooster.FACINGDIRECTION, FacingDirection.RIGHT).modelForState().modelFile(right).rotationY((180 + rotationOffset) % 360).addModel(); + + if (registerItem) { + return blockItem(block, none); + } + return null; + + } + +} diff --git a/src/main/java/nuclearscience/datagen/client/NuclearScienceItemModelsProvider.java b/src/main/java/nuclearscience/datagen/client/NuclearScienceItemModelsProvider.java new file mode 100644 index 00000000..5e13a82f --- /dev/null +++ b/src/main/java/nuclearscience/datagen/client/NuclearScienceItemModelsProvider.java @@ -0,0 +1,74 @@ +package nuclearscience.datagen.client; + +import electrodynamics.datagen.client.ElectrodynamicsItemModelsProvider; +import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; +import net.minecraft.data.DataGenerator; +import net.minecraftforge.common.data.ExistingFileHelper; +import nuclearscience.References; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceItemModelsProvider extends ElectrodynamicsItemModelsProvider { + + public NuclearScienceItemModelsProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator, existingFileHelper, References.ID); + } + + @Override + protected void registerModels() { + + layeredItem(NuclearScienceItems.ITEM_URANIUM235, Parent.GENERATED, itemLoc("uranium235")); + layeredItem(NuclearScienceItems.ITEM_URANIUM238, Parent.GENERATED, itemLoc("uranium238")); + layeredItem(NuclearScienceItems.ITEM_PLUTONIUM239, Parent.GENERATED, itemLoc("plutonium239")); + layeredItem(NuclearScienceItems.ITEM_POLONIUM210, Parent.GENERATED, itemLoc("polonium210")); + layeredItem(NuclearScienceItems.ITEM_ACTINIUM225, Parent.GENERATED, itemLoc("actinium225")); + layeredItem(NuclearScienceItems.ITEM_POLONIUM210_CHUNK, Parent.GENERATED, itemLoc("polonium210chunk")); + layeredItem(NuclearScienceItems.ITEM_LIFHT4PUF3, Parent.GENERATED, itemLoc("lifthf4uf4")); + layeredItem(NuclearScienceItems.ITEM_FLINAK, Parent.GENERATED, itemLoc("flinak")); + layeredItem(NuclearScienceItems.ITEM_YELLOWCAKE, Parent.GENERATED, itemLoc("yellowcake")); + layeredItem(NuclearScienceItems.ITEM_FISSILEDUST, Parent.GENERATED, itemLoc("fissiledust")); + layeredItem(NuclearScienceItems.ITEM_PLUTONIUMOXIDE, Parent.GENERATED, itemLoc("plutoniumoxide")); + layeredItem(NuclearScienceItems.ITEM_ACTINIUMOXIDE, Parent.GENERATED, itemLoc("actiniumoxide")); + layeredItem(NuclearScienceItems.ITEM_FISSILE_SALT, Parent.GENERATED, itemLoc("fissilesalt")); + layeredItem(NuclearScienceItems.ITEM_THORIANITEDUST, Parent.GENERATED, itemLoc("thorianitedust")); + + layeredItem(NuclearScienceItems.ITEM_CELLEMPTY, Parent.GENERATED, itemLoc("cellempty")); + layeredItem(NuclearScienceItems.ITEM_CELLDEUTERIUM, Parent.GENERATED, itemLoc("celldeuterium")); + layeredItem(NuclearScienceItems.ITEM_CELLTRITIUM, Parent.GENERATED, itemLoc("celltritium")); + layeredItem(NuclearScienceItems.ITEM_CELLHEAVYWATER, Parent.GENERATED, itemLoc("cellheavywater")); + layeredItem(NuclearScienceItems.ITEM_CELLELECTROMAGNETIC, Parent.GENERATED, itemLoc("cellelectromagnetic")); + layeredItem(NuclearScienceItems.ITEM_CELLANTIMATTERSMALL, Parent.GENERATED, itemLoc("cellantimattersmall")); + layeredItem(NuclearScienceItems.ITEM_CELLANTIMATTERLARGE, Parent.GENERATED, itemLoc("cellantimatterlarge")); + layeredItem(NuclearScienceItems.ITEM_CELLANTIMATTERVERYLARGE, Parent.GENERATED, itemLoc("cellantimatterverylarge")); + layeredItem(NuclearScienceItems.ITEM_CELLDARKMATTER, Parent.GENERATED, itemLoc("celldarkmatter")); + layeredItem(NuclearScienceItems.ITEM_FUELHEUO2, Parent.GENERATED, itemLoc("fuelheuo2")); + layeredItem(NuclearScienceItems.ITEM_FUELLEUO2, Parent.GENERATED, itemLoc("fuelleuo2")); + layeredItem(NuclearScienceItems.ITEM_FUELSPENT, Parent.GENERATED, itemLoc("fuelspent")); + layeredItem(NuclearScienceItems.ITEM_FUELPLUTONIUM, Parent.GENERATED, itemLoc("fuelplutonium")); + + layeredItem(NuclearScienceItems.ITEM_GEIGERCOUNTER, Parent.GENERATED, itemLoc("geigercounter")); + layeredItem(NuclearScienceItems.ITEM_ANTIDOTE, Parent.GENERATED, itemLoc("antidote")); + layeredItem(NuclearScienceItems.ITEM_CANISTERLEAD, Parent.GENERATED, itemLoc("canisterlead")); + layeredBuilder(name(NuclearScienceItems.ITEM_FREQUENCYCARD), Parent.GENERATED, itemLoc("frequencycard")).transforms().transform(TransformType.GUI).scale(0.75F).end(); + + layeredItem(NuclearScienceItems.ITEM_HAZMATHELMET, Parent.GENERATED, itemLoc("hazmathelmet")); + layeredItem(NuclearScienceItems.ITEM_HAZMATPLATE, Parent.GENERATED, itemLoc("hazmatplate")); + layeredItem(NuclearScienceItems.ITEM_HAZMATLEGS, Parent.GENERATED, itemLoc("hazmatlegs")); + layeredItem(NuclearScienceItems.ITEM_HAZMATBOOTS, Parent.GENERATED, itemLoc("hazmatboots")); + + layeredItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATHELMET, Parent.GENERATED, itemLoc("reinforcedhazmathelmet")); + layeredItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATPLATE, Parent.GENERATED, itemLoc("reinforcedhazmatplate")); + layeredItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATLEGS, Parent.GENERATED, itemLoc("reinforcedhazmatlegs")); + layeredItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATBOOTS, Parent.GENERATED, itemLoc("reinforcedhazmatboots")); + + simpleBlockItem(NuclearScienceBlocks.blockAtomicAssembler, existingBlock(blockLoc("atomicassemblersingle"))); + simpleBlockItem(NuclearScienceBlocks.blockControlRodAssembly, existingBlock(blockLoc("controlrodassembly"))).transforms().transform(TransformType.GUI).rotation(30.0F, 225.0F, 0.0F).translation(0.0F, -0.9F, 0.0F).scale(0.5F).end(); + simpleBlockItem(NuclearScienceBlocks.blockGasCentrifuge, existingBlock(blockLoc("gascentrifuge"))); + layeredItem(NuclearScienceItems.getItem(SubtypeMoltenSaltPipe.vanadiumsteelceramic), Parent.GENERATED, itemLoc("pipe/" + SubtypeMoltenSaltPipe.vanadiumsteelceramic.tag())); + simpleBlockItem(NuclearScienceBlocks.blockParticleInjector, existingBlock(blockLoc("particleinjector"))).transforms().transform(TransformType.GUI).rotation(45.0F, 45.0F, 0).scale(0.5F).translation(0.0F, -1.0F, 0.0F); + simpleBlockItem(NuclearScienceBlocks.blockTurbine, existingBlock(blockLoc("turbine"))); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/client/NuclearScienceLangKeyProvider.java b/src/main/java/nuclearscience/datagen/client/NuclearScienceLangKeyProvider.java new file mode 100644 index 00000000..8fe4b17f --- /dev/null +++ b/src/main/java/nuclearscience/datagen/client/NuclearScienceLangKeyProvider.java @@ -0,0 +1,295 @@ +package nuclearscience.datagen.client; + +import electrodynamics.datagen.client.ElectrodynamicsLangKeyProvider; +import net.minecraft.data.DataGenerator; +import nuclearscience.References; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.common.recipe.categories.fluiditem2fluid.specificmachines.NuclearBoilerRecipe; +import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.ChemicalExtractorRecipe; +import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.MSRFuelPreProcessorRecipe; +import nuclearscience.common.recipe.categories.fluiditem2item.specificmachines.RadioactiveProcessorRecipe; +import nuclearscience.common.recipe.categories.item2item.specificmachines.FissionReactorRecipe; +import nuclearscience.common.recipe.categories.item2item.specificmachines.FuelReprocessorRecipe; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceFluids; +import nuclearscience.registers.NuclearScienceItems; +import nuclearscience.registers.NuclearScienceSounds; + +public class NuclearScienceLangKeyProvider extends ElectrodynamicsLangKeyProvider { + + public NuclearScienceLangKeyProvider(DataGenerator gen, Locale locale) { + super(gen, locale, References.ID); + } + + @Override + protected void addTranslations() { + + switch (locale) { + case EN_US: + default: + + add("itemGroup.itemgroup" + References.ID, "Nuclear Science"); + + addItem(NuclearScienceItems.ITEM_URANIUM235, "Uranium-235"); + addItem(NuclearScienceItems.ITEM_URANIUM238, "Uranium-238"); + addItem(NuclearScienceItems.ITEM_PLUTONIUM239, "Plutonium-239"); + addItem(NuclearScienceItems.ITEM_POLONIUM210, "Polonium-210"); + addItem(NuclearScienceItems.ITEM_POLONIUM210_CHUNK, "Polonium-210 Chunk"); + addItem(NuclearScienceItems.ITEM_ACTINIUM225, "Actinium-225"); + addItem(NuclearScienceItems.ITEM_ACTINIUMOXIDE, "Actinium Trioxide"); + addItem(NuclearScienceItems.ITEM_LIFHT4PUF3, "LiF-ThF4-UF4 Salt"); + addItem(NuclearScienceItems.ITEM_FLINAK, "FLiNaK Salt"); + addItem(NuclearScienceItems.ITEM_YELLOWCAKE, "Yellowcake"); + addItem(NuclearScienceItems.ITEM_FISSILEDUST, "Fissile Dust"); + addItem(NuclearScienceItems.ITEM_PLUTONIUMOXIDE, "Plutonium Tetroxide"); + addItem(NuclearScienceItems.ITEM_THORIANITEDUST, "Thorianite Dust"); + addItem(NuclearScienceItems.ITEM_FISSILE_SALT, "Fissile Salt"); + + addItem(NuclearScienceItems.ITEM_CELLEMPTY, "Empty Cell"); + addItem(NuclearScienceItems.ITEM_CELLDEUTERIUM, "Deuterium Cell"); + addItem(NuclearScienceItems.ITEM_CELLTRITIUM, "Tritium Cell"); + addItem(NuclearScienceItems.ITEM_CELLHEAVYWATER, "Heavy Water Cell"); + addItem(NuclearScienceItems.ITEM_CELLELECTROMAGNETIC, "Electromagnetic Cell"); + addItem(NuclearScienceItems.ITEM_CELLANTIMATTERSMALL, "Anti-Matter Cell (500 mg)"); + addItem(NuclearScienceItems.ITEM_CELLANTIMATTERLARGE, "Anti-Matter Cell (4 g)"); + addItem(NuclearScienceItems.ITEM_CELLANTIMATTERVERYLARGE, "Anti-Matter Cell (12 g)"); + addItem(NuclearScienceItems.ITEM_CELLDARKMATTER, "Dark Matter Cell"); + addItem(NuclearScienceItems.ITEM_FUELHEUO2, "Highly Enriched Fuel Rod"); + addItem(NuclearScienceItems.ITEM_FUELLEUO2, "Enriched Fuel Rod"); + addItem(NuclearScienceItems.ITEM_FUELSPENT, "Spent Fuel Rod"); + addItem(NuclearScienceItems.ITEM_FUELPLUTONIUM, "Plutonium Fuel Rod"); + + addItem(NuclearScienceItems.ITEM_GEIGERCOUNTER, "Geiger Counter"); + + addItem(NuclearScienceItems.ITEM_HAZMATHELMET, "Hazmat Hood"); + addItem(NuclearScienceItems.ITEM_HAZMATPLATE, "Hazmat Shroud"); + addItem(NuclearScienceItems.ITEM_HAZMATLEGS, "Hazmat Leggings"); + addItem(NuclearScienceItems.ITEM_HAZMATBOOTS, "Hazmat Boots"); + + addItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATHELMET, "Reinforced Hazmat Hood"); + addItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATPLATE, "Reinforced Hazmat Shroud"); + addItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATLEGS, "Reinforced Hazmat Leggings"); + addItem(NuclearScienceItems.ITEM_REINFORCEDHAZMATBOOTS, "Reinforced Hazmat Boots"); + + addItem(NuclearScienceItems.ITEM_ANTIDOTE, "Antidote"); + addItem(NuclearScienceItems.ITEM_FREQUENCYCARD, "Frequency Card"); + addItem(NuclearScienceItems.ITEM_CANISTERLEAD, "Lead-Lined Canister"); + + addBlock(NuclearScienceBlocks.blockGasCentrifuge, "Gas Centrifuge"); + addBlock(NuclearScienceBlocks.blockNuclearBoiler, "Nuclear Boiler"); + addBlock(NuclearScienceBlocks.blockChemicalExtractor, "Chemical Extractor"); + addBlock(NuclearScienceBlocks.blockRadioisotopeGenerator, "Radioisotope Generator"); + addBlock(NuclearScienceBlocks.blockTurbine, "Steam Turbine"); + addBlock(NuclearScienceBlocks.blockFissionReactorCore, "Fission Reactor Core"); + addBlock(NuclearScienceBlocks.blockElectromagnet, "Electromagnet"); + addBlock(NuclearScienceBlocks.blockElectromagneticGlass, "Electromagnetic Glass"); + addBlock(NuclearScienceBlocks.blockElectromagneticBooster, "Electromagnetic Booster"); + addBlock(NuclearScienceBlocks.blockElectromagneticSwitch, "Electromagnetic Switch"); + addBlock(NuclearScienceBlocks.blockFusionReactorCore, "Fusion Reactor Core"); + addBlock(NuclearScienceBlocks.blockPlasma, "Plasma"); + addBlock(NuclearScienceBlocks.blockMeltedReactor, "Melted Reactor Core"); + addBlock(NuclearScienceBlocks.blockParticleInjector, "Particle Injector"); + addBlock(NuclearScienceBlocks.blockQuantumCapacitor, "Quantum Capacitor"); + addBlock(NuclearScienceBlocks.blockTeleporter, "Teleporter"); + addBlock(NuclearScienceBlocks.blockControlRodAssembly, "Control Rod"); + addBlock(NuclearScienceBlocks.blockFuelReprocessor, "Fuel Reprocessor"); + addBlock(NuclearScienceBlocks.blockRadioactiveProcessor, "Radioactive Processor"); + addBlock(NuclearScienceBlocks.blockMSRFuelPreProcessor, "MSR Fuel Pre-Processor"); + addBlock(NuclearScienceBlocks.blockFreezePlug, "MSR Freeze Plug"); + addBlock(NuclearScienceBlocks.blockMSReactorCore, "MS Reactor Core"); + addBlock(NuclearScienceBlocks.blockHeatExchanger, "Heat Exchanger"); + addBlock(NuclearScienceBlocks.blockSiren, "Siren"); + addBlock(NuclearScienceBlocks.blockAtomicAssembler, "Atomic Assembler"); + addBlock(NuclearScienceBlocks.blockMoltenSaltSupplier, "Molten Salt Supplier"); + addBlock(NuclearScienceBlocks.blockRadioactiveSoil, "Radioactive Soil"); + addBlock(NuclearScienceBlocks.blockRadioactiveAir, "Radioactive Air"); + addBlock(NuclearScienceBlocks.blocklead, "Radiation Shielding"); + + addBlock(NuclearScienceBlocks.getBlock(SubtypeMoltenSaltPipe.vanadiumsteelceramic), "VS-Ceramic Pipe"); + + addFluid(NuclearScienceFluids.fluidUraniumHexafluoride, "Uranium Hexafluoride"); + addFluid(NuclearScienceFluids.fluidAmmonia, "Ammonia"); + + addContainer("gascentrifuge", "Gas Centrifuge"); + addContainer("nuclearboiler", "Nuclear Boiler"); + addContainer("chemicalextractor", "Chemical Extractor"); + addContainer("radioisotopegenerator", "Radioisotope Generator"); + addContainer("reactorcore", "Fission Reactor Core"); + addContainer("particleinjector", "Particle Injector"); + addContainer("quantumcapacitor", "Quantum Capacitor"); + addContainer("fuelreprocessor", "Fuel Reprocessor"); + addContainer("radioactiveprocessor", "Radioactive Processor"); + addContainer("msrfuelpreprocessor", "MSR Fuel Pre-Processor"); + addContainer("freezeplug", "MSR Freeze Plug"); + addContainer("msrreactorcore", "MSR Reactor Core"); + addContainer("moltensaltsupplier", "Molten Salt Supplier"); + addContainer("atomicassembler", "Atomic Assembler"); + + addGuiLabel("machine.usage", "Usage: %s"); + addGuiLabel("machine.voltage", "Voltage: %s"); + addGuiLabel("machine.output", "Output: %s"); + addGuiLabel("machine.current", "Current: %s"); + addGuiLabel("machine.transfer", "Output: %s"); + addGuiLabel("machine.stored", "Stored: %s"); + addGuiLabel("particleinjector.charge", "Charge: %s"); + addGuiLabel("particleinjector.matter", "Matter"); + addGuiLabel("particleinjector.cells", "Cells"); + addGuiLabel("fissionreactor.deuterium", "Deuterium"); + addGuiLabel("fissionreactor.temperature", "Temp: %s"); + addGuiLabel("fissionreactor.warning", "OVERHEATING!"); + addGuiLabel("quantumcapacitor.joulesinput", "Joules"); + addGuiLabel("quantumcapacitor.frequency", "Frequency"); + addGuiLabel("msreactor.status", "Status:"); + addGuiLabel("msreactor.status.good", "Good"); + addGuiLabel("msreactor.status.nofreezeplug", "Freeze Plug Missing"); + addGuiLabel("msreactor.status.wastefull", "Waste Full"); + addGuiLabel("msreactor.warning", "Warning:"); + addGuiLabel("msreactor.warning.none", "None"); + addGuiLabel("msreactor.warning.freezeoff", "Freeze Plug Off"); + addGuiLabel("msreactor.warning.overheat", "OVERHEATING"); + addGuiLabel("saltsupplier.waste", "Waste"); + addGuiLabel("saltsupplier.wastecont", "Waste: %s"); + + addGuiLabel("freezeplug.status", "Status: %s"); + addGuiLabel("freezeplug.frozen", "FROZEN"); + addGuiLabel("freezeplug.off", "OFF"); + addGuiLabel("freezeplug.saltbonus", "Thermal Bonus: %s"); + + addChatMessage("geigercounter.text", "%s Rads/hour"); + + addDamageSource("radiation", "%s just did a speedrun of evolution!"); + addDamageSource("plasma", "%s was ionized!"); + add("effect.nuclearscience.radiation", "Radiation"); + + addTooltip("frequencycard.linked", "Linked to %s"); + addTooltip("frequencycard.notag", "No Link"); + addTooltip("deuteriumlevel", "Deuterium: %s"); + addTooltip("tritiumlevel", "Tritium: %s"); + addTooltip("steamfunneluse", "Collects and emits steam"); + + addSubtitle(NuclearScienceSounds.SOUND_GASCENTRIFUGE, "Gas Centrifuge spins"); + addSubtitle(NuclearScienceSounds.SOUND_NUCLEARBOILER, "Nuclear Boiler boils"); + addSubtitle(NuclearScienceSounds.SOUND_TURBINE, "Steam Turbine spins"); + addSubtitle(NuclearScienceSounds.SOUND_SIREN, "Siren blares!"); + addSubtitle(NuclearScienceSounds.SOUND_GEIGER, "Geiger Counter ticks!"); + + addJei(NuclearBoilerRecipe.RECIPE_GROUP, "Nuclear Boiler"); + addJei(ChemicalExtractorRecipe.RECIPE_GROUP, "Chemical Extractor"); + addJei(MSRFuelPreProcessorRecipe.RECIPE_GROUP, "MSR Fuel Pre-Processor"); + addJei(RadioactiveProcessorRecipe.RECIPE_GROUP, "Radioactive Processor"); + addJei(FissionReactorRecipe.RECIPE_GROUP, "Fission Reactor"); + addJei(FuelReprocessorRecipe.RECIPE_GROUP, "Fuel Reprocessor"); + addJei("gascentrifuge", "Gas Centrifuge"); + addJei("particalacceleratorantimatter", "Particle Collision"); + addJei("particalacceleratordarkmatter", "Particle Collision"); + + addGuidebook(References.ID, "Nuclear Science"); + + addGuidebook("chapter.radiation", "Radiation"); + addGuidebook("chapter.radiation.l1", "Radiation is one of the key mechanics of Nuclear Science. Many items are radioactive and will harm you if not handled with the proper equipment. The following items are radioactive:"); + addGuidebook("chapter.radiation.radrating", "Rads: %s"); + addGuidebook("chapter.radiation.l2", "You will need to wear a "); + addGuidebook("chapter.radiation.hazmatsuit", "Hazmat Suit"); + addGuidebook("chapter.radiation.l3", " to avoid getting radiation poisoning. You must be wearing a full suit in order to benifit from its protection. Radiation will slowly damage the suit over time, and it has limited durability, so do not hang around in a radioactive zone for long! The suit can be repaired in an Anvil with a "); + + addGuidebook("chapter.radiation.l4", ". If the longevity of your suit is a real concern, a reinforced variant of the suit is available which sports more durability. It too can be repaired with a Lead Plate."); + + addGuidebook("chapter.radiation.l5", "Radiation is also emitted from machines that process radioactive materials. The radiation spills out in a radius from the machine, becoming weaker the further you are away from the source. The more radioactive a material is, the bigger the area that will be affected."); + + addGuidebook("chapter.radiation.l6", "However, what if you forget your Hazmat suit and become ill with Radiation Poisoning? No fear, for there is a solution to that! If you are suffering from Radiation Poisoning, you can take some "); + addGuidebook("chapter.radiation.l7", " and it will remove the effect. Antidote is extracted from fish, so you will probably want to get good at fishing."); + + addGuidebook("chapter.turbines", "Steam Turbines"); + addGuidebook("chapter.turbines.l1", "Steam Turbines are what actually produce power in Nuclear Science. Turbines will produce at different voltages depending on what temperature of steam is venting through them. Turbines produce the following voltages under the following temperatures: "); + addGuidebook("chapter.turbines.tempvoltage", "%1$s C : %2$s V"); + addGuidebook("chapter.turbines.l2", "This relationship is important, as Turbines produce more power the faster they spin. However, the only way to spin a turbine faster is to vent more steam through it. This means that as a turbine spins faster, it will produce more power, but also at an ever-increasing voltage. This can become a " + "major problem, especially in situations like a melting-down reactor, as not only will the reactor explode, but also any machinery that is connected downstream!"); + + addGuidebook("chapter.turbines.l3", "To get power out of a turbine, connect a wire to the top of one. A 3x3 group of turbines can be upgraded into a large turbine by whacking the center one with a wrench."); + + addGuidebook("chapter.centrifuge", "Gas Centrifuge"); + addGuidebook("chapter.centrifuge.l1", "The Gas Centrifuge splits Uranium Hexafluoride into its isotopes of U235 and U238. There is a split of 17.5% to 82.5% respectively for each mB of Hexafluoride processed. The Centrifuge runs continuously as long as it has at least 42 mB of Uranium Hexafluoride in its input tank. 10% of each cycle " + "is also converted into waste. Note this is not subtracted from the aforementioned split, and is added on top of it."); + addGuidebook("chapter.centrifuge.l2", "Once the Centrifuge has collected 2500 mB of a material, it will produce an item of the respective material. This corrosponds to the percentage counter for a category in the Centrifuge's GUI reaching 100%. While this is not 100% realistic, it is a legacy feature to pay tribute to " + "the respective block from Atomic Science. The waste material generated from each cycle will produce Fissile Dust, which can then be processed into other useful materials. Uranium Hexaflouride can either be piped into the back of the Gas Centrifuge, or the Nuclear Boiler can output " + "directly into it."); + + addGuidebook("chapter.fissionreactor", "Fission Reactor"); + addGuidebook("chapter.fissionreactor.l1", "The Fission Reactor is the first nuclear power source that you will be able to access as you progress in Nuclear Science. Crude and simple, the block heats the water surrounding it and converts it to steam, which is used to spin turbines. To construct the Fission Reactor, you will first need " + "to craft a Fission Reactor Core. Place the Core in the center of a 5x5 cube filled with water like so:"); + + addGuidebook("chapter.fissionreactor.l2", " Next, cover the top of the water with Turbines. You can either have single turbines, or turn a group of 9 into a large 3x3 turbine using a wrench. The area around the Reactor can be larger than 5x5, but only the 5x5 section will make power."); + + addGuidebook("chapter.fissionreactor.l3", "To make steam, you will need a source of heat. This is where the Fission part of the name comes into play. The following fuel rods can be used to heat the reactor:"); + addGuidebook("chapter.fissionreactor.maxtemp", "Max Temp: %s C"); + addGuidebook("chapter.fissionreactor.cycles", "Cycles: %s"); + addGuidebook("chapter.fissionreactor.l4", "The temperature associated with each fuel type is the temperature the reactor core will reach when 4 rods of that type are used. The Core has a temperature limit of 1417 C, at which point it going above said temperature will begin overheating the core and placing it at risk of melting down. The longer it runs in an overheated state, the greater " + "the risk of meltdown becomes. Also, the hotter a reactor runs, the quicker the fuel source degrades! When a fuel rod is expended, it will leave behind a Spent Fuel Rod which can be processed into other valuable materials."); + addGuidebook("chapter.fissionreactor.l5", "As you can see, some fuel types will actually cause the reactor to melt down if a set of 4 is used in their entirety. You have two methods of dealing with this. This first is to mix and match certain fuel types. However, this method is mostly a trial-by-error approach, and does not leave a large ammount " + "of room for error."); + addGuidebook("chapter.fissionreactor.l6", "The second and more reliable approach is to use a "); + addGuidebook("chapter.fissionreactor.controlrod", "Control Rod"); + addGuidebook("chapter.fissionreactor.l7", " to decrease the rate of the fission reaction. Place a Control Rod under the Reactor Core and Right-Click to extend it. The futher extended the rod is, the slower the reaction and thus cooler the reactor will run. Shift + Right-Click to retract the rod."); + addGuidebook("chapter.fissionreactor.l8", "One final item of note is that by placing a Dueterium Cell in the reactor while running, it has a chance to be enriched and transformed into a Tritium Cell. Tritium is required in order to run a Fusion Reactor. The conversion process will occur when the temperature of the core is above 800 C."); + + addGuidebook("chapter.radiogen", "Radioisotropic Generator"); + addGuidebook("chapter.radiogen.l1", "The Radioisotropic Generator presents an alternative to the fission reaction. It instead uses the natural heat produced from the radioactive decay of items to directly generate electricity. Simply place a radioactive item in it, and it will begin to generate power. The more radioactive an item is, " + "and the more of said item there is, the more power will be produced!"); + + addGuidebook("chapter.msreactor", "MS Reactor"); + addGuidebook("chapter.msreactor.l1", "The Molton Salt Reactor is a far more refined version of the crude Fission Reactor, but is also far more expensive. Instead of being directly cooled by water, the reactor core is cooled by molten salt, which is then ran through a water-cooled heat sink network to itself be cooled. This has the added " + "benefit of not needing to have the reactor core submersed in water and allowiong you to be flexable with turbine placement."); + addGuidebook("chapter.msreactor.l2", "To build a Molten Salt Reactor, you will need 3 components:"); + addGuidebook("chapter.msreactor.l3", "Place a Freeze Plug, and then place a Reactor Core on top of it. Facing the green port on the core, place a Molten Salt Supplier so that its green port faces the Core's."); + + addGuidebook("chapter.msreactor.l4", "The MS Reactor isn't cooled by water and is instead cooled by FLiNaK salt, which the Freeze Plug supplies. Simply make the salt and place it in the Plug. The salt is not consumed by the reactor, but the more salt you add, the more heat it will be able to remove."); + addGuidebook("chapter.msreactor.l5", "Unlike the Fission Reactor which uses solid fuel rods to produce heat, the Molten Salt Reactor uses a specially prepared radioactive salt, LiF-ThF4-UF4 Salt. However, as the name of the reactor implies, this salt must be molten in order to be used. Place the salt pellet " + "in the Molten Salt Supplier to melt it. Each salt pellet melts to %s mB, and the core has an internal capacity of 1000 mB. The salt is slowly consumed over time and produces waste which is also collected by the supplier. Just like the Fission Reactor, the hotter the reactor, the faster the fuel is consumed."); + + addGuidebook("chapter.msreactor.l6", "Now that the reactor is hot, you need to disperse the heat from the coolant. The MS Reactor has a melt-down temperature of 1000 C. To do this, you will need:"); + addGuidebook("chapter.msreactor.l7", "The VS Pipe is connected to the top of the Reactor Core and fed into the bottom of the Heat Exchanger. The Heat Exchanger is incredibally efficient, and very few are needed to keep the reactor cool. In fact, a single Heat Exchanger can almost keep a MS Reactor cool by itself! To effectively do this, " + "it must be placed in a 5x5x2 pool of water, and must be water-logged to function. The easiest way to do this is to fill the pool and then place the Exchanger. It should be noted that while the exchanger doesn't have to be directly above the reactor core, the longer the VS Pipe is, the more heat it will " + "lose before it reaches the Exchanger!"); + + addGuidebook("chapter.msreactor.l8", "The Control Rod, like with the Fission Reactor, can also be used to slow the fuel use of the Core. Attach it to the side of the MS Reactor Core, and control it as with the Fission Reactor."); + + addGuidebook("chapter.fusionreactor", "Fusion Reactor"); + addGuidebook("chapter.fusionreactor.l1", "The Fusion Reactor is the ultimate source of power that Nuclear Science has to offer, and is able to produce over 6 MW of energy. However, harvesting this energy is very expensive. First, you will to construct 13x13 diamond of Electromagnets. They can be either glass or opaque. We will be using both. " + "Place the Fusion Reactor Core in the center of the diamond and remove the block below it."); + addGuidebook("chapter.fusionreactor.l2", "Next, surround the side of the 13x13 diamond with a ring of Electromagnets."); + addGuidebook("chapter.fusionreactor.l3", "Next, build another 13x13 diamond to act as the roof. Leave a hole in the middle for the Reactor Core like before."); + addGuidebook("chapter.fusionreactor.l4", "Next, you will need to cover the top of the Electromagnets with water. The plasma of the reactor will heat the water generating steam, which can in turn be used for spinning turbines. Note the turbines will operate at 480V."); + addGuidebook("chapter.fusionreactor.l5", "The core requires 50 kJ/t at 480V to operate. While the initial energy must come from somewhere else, you can use the outuput of the turbines to feed back into the reaction. The wire can be connected to the top or the bottom of the reactor. In this case, we will be using the top."); + addGuidebook("chapter.fusionreactor.l6", "The Reactor uses Deuterium and Tritium Cells to fuel the reaction. To add fuel to the core, right-click a cell on it. This can be done through the convenient hole left in the bottom."); + + addGuidebook("chapter.particleaccelerator", "Particle Accelerator"); + addGuidebook("chapter.particleaccelerator.l1", "The Particle Accelerator is used to make Anti-Matter and Dark Matter. Both are generated when two Particles collide at great speeds. The result of a particle collision is determined by the following formula:"); + addGuidebook("chapter.particleaccelerator.formula", "((s1 + s2) / 4) ^ 2"); + addGuidebook("chapter.particleaccelerator.l2", "where s1 and s2 are the speeds of the two particles. Dark Matter is created when the resulting value is greater than 0.999, and has a 100% chance of being created. Otherwise, Anti-Matter is created from the collision. However, the chance of Anti-Matter being generated is not guaranteed, " + "and its chance of being created increases the closer the resulting value gets to 0.999."); + + addGuidebook("chapter.particleaccelerator.l3", "In order to collide particles, you will first need to create particles. For this, you will need a Particle Injector. The Injector uses matter to make a particle. Any block or item can be used to supply the matter. Place the matter in its respective slot in the Injector. To catch the result of the collision, " + "you will need to craft an Electromagnetic Cell and place it in its respective slot in the Injector as well. The Injector uses 200 MJ per particle at 960 V. This means you will need 400 MJ for each collision."); + + addGuidebook("chapter.particleaccelerator.l4", "While the Injector creates particles, it spawns them at very low speeds. In order to facilitate a collision, both particles will need to be moving at very high speeds. This can be accomplished by passing a Particle through an Electromagnetic Booster. If the Particle and Booster are facing the " + "same direction, the Booster will increase the Particle's speed by 0.33% for every tick the Particle is inside the Booster. If the Booster is a corner, it will increase the Particle's speed by 0.17% for every tick the Particle is inside the Booster. This means that the faster a Particle moves, " + "the less effective each successive Booster becomes. It is important to note that moving particles emit radiation."); + + addGuidebook("chapter.particleaccelerator.l5", "To reach 100% speed, it will take 200 Boosters in a straight line. However, this would require a very large amount of room. Fortunately, Boosters can be set up in a snake pattern to help compact them by converting a placed Booster to a corner variant. To make one a corner variant, stand on top " + "of Booster segment you wish to turn, and place a Booster to start the next segment after the corner. Looking at the outter bottom corner of the next segment's Booster, place the corner Booster. If you did it properly, you will not be able to directly see the inside of Booster."); + + addGuidebook("chapter.particleaccelerator.l6", "The Particle Accelerator setup pictured here with 60 Boosters has a roughly 1 in 5 chance of creating Anti Matter from a collision:"); + + addGuidebook("chapter.particleaccelerator.l7", "But how do we get two particles to actually collide? This is where regular Electromagnets come in. You will need to construct a ring of Electromagnets to allow the Particles to circle and collide. It is incredibally important to note that particles will begin to lose speed the moment they exit " + "the Booster chain, so it is desirable to make the Electromagnet ring as small as possible. In this case, we will be using a 3x3 ring."); + addGuidebook("chapter.particleaccelerator.l8", "Start by laying out the bottom of the ring at the end of the Booster chain like so:"); + + addGuidebook("chapter.particleaccelerator.l9", "To ensure the particles actually collide, you will need to switch the direction of one. This is what the Electromagnetic Switch is for. The switch flips the direction of every other particle that crosses it. Place an Electromagnetic switch in front of the output of the Booster chain like so:"); + addGuidebook("chapter.particleaccelerator.l10", "Now, fill in the sides and top of the ring to create an enclosed structure for the Particles. Note either Electromagnets or Electromagnetic Glass can be used."); + + addGuidebook("chapter.othermachines", "Other Machines"); + addGuidebook("chapter.othermachines.quantumcapacitor1", "The Quantum Capacitor is the ultimate energy storage device. It has an unlimited energy storage capacity and the storage is shared across capacitors. The GUI has two programmable fields. The first is for the joules/tick output of the capacitor. Note, the capacitor outputs at 1.92 kV! " + "The second is for the frequency. The frequency of two capacitors must match for them to link. Every capacitor network is tied to a specific player, so don't worry about other players stealing your energy!"); + + addGuidebook("chapter.othermachines.teleporter1", "The Teleporter requires 5 MJ to teleport a player. Two teleporters are needed: one to send the player, and one to recieve them. Only the sending end needs to be powered. To link two teleporters, Right-Click the recieving end with a Frequency Card. Then Right-Click the sending end with the " + "same card to link the two teleporters."); + + addGuidebook("chapter.othermachines.teleporter2", "After each teleport, there is 4 second cooldown applied to the sending end. Note, it is possible to link a teleporter to itself, so be careful! To wipe a Frequency Card, simply craft it in your inventory."); + + addGuidebook("chapter.othermachines.atomicassembler1", "The Atomic Assembler makes use of the strange properties of Dark Matter, and is able to duplicate items (we have made sure you can't dupe items with inventories, so no dupe bugs this time (: ). It requires 72 kW at 480 V to run. If it loses power, all progress is lost!"); + addGuidebook("chapter.othermachines.atomicassembler2", "To use it, take an item of your desire and place it in the Assembler. Surround the item with Dark Matter Cells like shown:"); + addGuidebook("chapter.othermachines.atomicassembler3", "Each duplication takes 3600 ticks, and will take one use of the Dark Matter Cells. Cells have 64 uses in total."); + + addGuidebook("chapter.misc", "Misc"); + addGuidebook("chapter.misc.l1", "Futurum Usui."); + + addJei("gui.reactorcore.info.temp", "Range: 0 C to 1400 C"); + + addJei("gascentrifuge.info.power_usage", "240V 30kW"); + addJei("particalaccelerator.antimatter.collision", "Charge:100% Speed<100%"); + addJei("particalaccelerator.darkmatter.collision", "Charge:100% Speed:100%"); + + } + + } + +} diff --git a/src/main/java/nuclearscience/datagen/client/NuclearScienceSoundProvider.java b/src/main/java/nuclearscience/datagen/client/NuclearScienceSoundProvider.java new file mode 100644 index 00000000..a69e8ab8 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/client/NuclearScienceSoundProvider.java @@ -0,0 +1,33 @@ +package nuclearscience.datagen.client; + +import net.minecraft.data.DataGenerator; +import net.minecraft.sounds.SoundEvent; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.SoundDefinition; +import net.minecraftforge.common.data.SoundDefinition.Sound; +import net.minecraftforge.common.data.SoundDefinition.SoundType; +import net.minecraftforge.common.data.SoundDefinitionsProvider; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.registers.NuclearScienceSounds; + +public class NuclearScienceSoundProvider extends SoundDefinitionsProvider { + + public NuclearScienceSoundProvider(DataGenerator generator, ExistingFileHelper helper) { + super(generator, References.ID, helper); + } + + @Override + public void registerSounds() { + add(NuclearScienceSounds.SOUND_GASCENTRIFUGE); + add(NuclearScienceSounds.SOUND_GEIGER); + add(NuclearScienceSounds.SOUND_NUCLEARBOILER); + add(NuclearScienceSounds.SOUND_SIREN); + add(NuclearScienceSounds.SOUND_TURBINE); + } + + private void add(RegistryObject sound) { + add(sound.get(), SoundDefinition.definition().subtitle("subtitles." + References.ID + "." + sound.getId().getPath()).with(Sound.sound(sound.getId(), SoundType.SOUND))); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/NuclearScienceBlockTagsProvider.java b/src/main/java/nuclearscience/datagen/server/NuclearScienceBlockTagsProvider.java new file mode 100644 index 00000000..74133fad --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/NuclearScienceBlockTagsProvider.java @@ -0,0 +1,30 @@ +package nuclearscience.datagen.server; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.Tags; +import net.minecraftforge.common.data.ExistingFileHelper; +import nuclearscience.References; +import nuclearscience.registers.NuclearScienceBlocks; + +public class NuclearScienceBlockTagsProvider extends BlockTagsProvider { + + public NuclearScienceBlockTagsProvider(DataGenerator pGenerator, ExistingFileHelper existingFileHelper) { + super(pGenerator, References.ID, existingFileHelper); + } + + @Override + protected void addTags() { + + tag(BlockTags.MINEABLE_WITH_PICKAXE).add(NuclearScienceBlocks.blockAtomicAssembler, NuclearScienceBlocks.blockChemicalExtractor, NuclearScienceBlocks.blockControlRodAssembly, NuclearScienceBlocks.blockElectromagnet, NuclearScienceBlocks.blockElectromagneticBooster, NuclearScienceBlocks.blockElectromagneticGlass, NuclearScienceBlocks.blockElectromagneticSwitch, NuclearScienceBlocks.blockFreezePlug, NuclearScienceBlocks.blockFuelReprocessor, NuclearScienceBlocks.blockFusionReactorCore, NuclearScienceBlocks.blockGasCentrifuge, NuclearScienceBlocks.blockHeatExchanger, NuclearScienceBlocks.blocklead, NuclearScienceBlocks.blockMeltedReactor, NuclearScienceBlocks.blockMoltenSaltSupplier, NuclearScienceBlocks.blockMSRFuelPreProcessor, NuclearScienceBlocks.blockMSReactorCore, NuclearScienceBlocks.blockNuclearBoiler, NuclearScienceBlocks.blockParticleInjector, NuclearScienceBlocks.blockQuantumCapacitor, NuclearScienceBlocks.blockRadioactiveProcessor, NuclearScienceBlocks.blockRadioisotopeGenerator, NuclearScienceBlocks.blockFissionReactorCore, NuclearScienceBlocks.blockSiren, NuclearScienceBlocks.blockTeleporter, NuclearScienceBlocks.blockTurbine); + + tag(BlockTags.NEEDS_STONE_TOOL).add(NuclearScienceBlocks.blockAtomicAssembler, NuclearScienceBlocks.blockChemicalExtractor, NuclearScienceBlocks.blockControlRodAssembly, NuclearScienceBlocks.blockElectromagnet, NuclearScienceBlocks.blockElectromagneticBooster, NuclearScienceBlocks.blockElectromagneticGlass, NuclearScienceBlocks.blockElectromagneticSwitch, NuclearScienceBlocks.blockFreezePlug, NuclearScienceBlocks.blockFuelReprocessor, NuclearScienceBlocks.blockFusionReactorCore, NuclearScienceBlocks.blockGasCentrifuge, NuclearScienceBlocks.blockHeatExchanger, NuclearScienceBlocks.blocklead, NuclearScienceBlocks.blockMeltedReactor, NuclearScienceBlocks.blockMoltenSaltSupplier, NuclearScienceBlocks.blockMSRFuelPreProcessor, NuclearScienceBlocks.blockMSReactorCore, NuclearScienceBlocks.blockNuclearBoiler, NuclearScienceBlocks.blockParticleInjector, NuclearScienceBlocks.blockQuantumCapacitor, NuclearScienceBlocks.blockRadioactiveProcessor, NuclearScienceBlocks.blockRadioisotopeGenerator, NuclearScienceBlocks.blockFissionReactorCore, NuclearScienceBlocks.blockSiren, NuclearScienceBlocks.blockTeleporter, NuclearScienceBlocks.blockTurbine); + + tag(BlockTags.MINEABLE_WITH_SHOVEL).add(NuclearScienceBlocks.blockRadioactiveSoil); + + tag(Tags.Blocks.NEEDS_WOOD_TOOL).add(NuclearScienceBlocks.blockRadioactiveSoil); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/NuclearScienceFluidTagsProvider.java b/src/main/java/nuclearscience/datagen/server/NuclearScienceFluidTagsProvider.java new file mode 100644 index 00000000..dc4cb8eb --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/NuclearScienceFluidTagsProvider.java @@ -0,0 +1,24 @@ +package nuclearscience.datagen.server; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.FluidTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import nuclearscience.References; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceFluids; + +public class NuclearScienceFluidTagsProvider extends FluidTagsProvider { + + public NuclearScienceFluidTagsProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator, References.ID, existingFileHelper); + } + + @Override + protected void addTags() { + + tag(NuclearScienceTags.Fluids.AMMONIA).add(NuclearScienceFluids.fluidAmmonia); + tag(NuclearScienceTags.Fluids.URANIUM_HEXAFLUORIDE).add(NuclearScienceFluids.fluidUraniumHexafluoride); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/NuclearScienceItemTagsProvider.java b/src/main/java/nuclearscience/datagen/server/NuclearScienceItemTagsProvider.java new file mode 100644 index 00000000..f4865c33 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/NuclearScienceItemTagsProvider.java @@ -0,0 +1,56 @@ +package nuclearscience.datagen.server; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import nuclearscience.References; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceItemTagsProvider extends ItemTagsProvider { + + public NuclearScienceItemTagsProvider(DataGenerator generator, BlockTagsProvider provider, ExistingFileHelper existingFileHelper) { + super(generator, provider, References.ID, existingFileHelper); + } + + @Override + protected void addTags() { + + tag(NuclearScienceTags.Items.CELL_EMPTY).add(NuclearScienceItems.ITEM_CELLEMPTY.get()); + tag(NuclearScienceTags.Items.CELL_HEAVYWATER).add(NuclearScienceItems.ITEM_CELLHEAVYWATER.get()); + tag(NuclearScienceTags.Items.CELL_DEUTERIUM).add(NuclearScienceItems.ITEM_CELLDEUTERIUM.get()); + tag(NuclearScienceTags.Items.CELL_TRITIUM).add(NuclearScienceItems.ITEM_CELLTRITIUM.get()); + tag(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL).add(NuclearScienceItems.ITEM_CELLANTIMATTERSMALL.get()); + tag(NuclearScienceTags.Items.CELL_ANTIMATTER_LARGE).add(NuclearScienceItems.ITEM_CELLANTIMATTERLARGE.get()); + tag(NuclearScienceTags.Items.CELL_ANTIMATTER_VERY_LARGE).add(NuclearScienceItems.ITEM_CELLANTIMATTERVERYLARGE.get()); + tag(NuclearScienceTags.Items.CELL_DARK_MATTER).add(NuclearScienceItems.ITEM_CELLDARKMATTER.get()); + + tag(NuclearScienceTags.Items.FUELROD_URANIUM_LOW_EN).add(NuclearScienceItems.ITEM_FUELLEUO2.get()); + tag(NuclearScienceTags.Items.FUELROD_URANIUM_HIGH_EN).add(NuclearScienceItems.ITEM_FUELLEUO2.get()); + tag(NuclearScienceTags.Items.FUELROD_PLUTONIUM).add(NuclearScienceItems.ITEM_FUELPLUTONIUM.get()); + tag(NuclearScienceTags.Items.FUELROD_SPENT).add(NuclearScienceItems.ITEM_FUELSPENT.get()); + + tag(NuclearScienceTags.Items.DUST_THORIUM).add(NuclearScienceItems.ITEM_THORIANITEDUST.get()); + tag(NuclearScienceTags.Items.DUST_FISSILE).add(NuclearScienceItems.ITEM_FISSILEDUST.get()); + + tag(NuclearScienceTags.Items.SALT_FISSILE).add(NuclearScienceItems.ITEM_FISSILE_SALT.get()); + + tag(NuclearScienceTags.Items.OXIDE_PLUTONIUM).add(NuclearScienceItems.ITEM_PLUTONIUMOXIDE.get()); + tag(NuclearScienceTags.Items.OXIDE_ACTINIUM).add(NuclearScienceItems.ITEM_ACTINIUMOXIDE.get()); + + tag(NuclearScienceTags.Items.NUGGET_POLONIUM).add(NuclearScienceItems.ITEM_POLONIUM210_CHUNK.get()); + + tag(NuclearScienceTags.Items.PELLET_URANIUM235).add(NuclearScienceItems.ITEM_URANIUM235.get()); + tag(NuclearScienceTags.Items.PELLET_URANIUM238).add(NuclearScienceItems.ITEM_URANIUM238.get()); + tag(NuclearScienceTags.Items.PELLET_PLUTONIUM).add(NuclearScienceItems.ITEM_PLUTONIUM239.get()); + tag(NuclearScienceTags.Items.PELLET_POLONIUM).add(NuclearScienceItems.ITEM_POLONIUM210.get()); + tag(NuclearScienceTags.Items.PELLET_LIFHT4PUF3).add(NuclearScienceItems.ITEM_LIFHT4PUF3.get()); + tag(NuclearScienceTags.Items.PELLET_FLINAK).add(NuclearScienceItems.ITEM_FLINAK.get()); + tag(NuclearScienceTags.Items.PELLET_ACTINIUM225).add(NuclearScienceItems.ITEM_ACTINIUM225.get()); + + tag(NuclearScienceTags.Items.YELLOW_CAKE).add(NuclearScienceItems.ITEM_YELLOWCAKE.get()); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/NuclearScienceLootTablesProvider.java b/src/main/java/nuclearscience/datagen/server/NuclearScienceLootTablesProvider.java new file mode 100644 index 00000000..39d167f8 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/NuclearScienceLootTablesProvider.java @@ -0,0 +1,49 @@ +package nuclearscience.datagen.server; + +import electrodynamics.datagen.server.ElectrodynamicsLootTablesProvider; +import net.minecraft.data.DataGenerator; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.registers.NuclearScienceBlockTypes; +import nuclearscience.registers.NuclearScienceBlocks; + +public class NuclearScienceLootTablesProvider extends ElectrodynamicsLootTablesProvider { + + public NuclearScienceLootTablesProvider(DataGenerator generator) { + super(generator); + } + + @Override + protected void addTables() { + + addIETable(NuclearScienceBlocks.blockAtomicAssembler, NuclearScienceBlockTypes.TILE_ATOMICASSEMBLER); + addIEFTable(NuclearScienceBlocks.blockChemicalExtractor, NuclearScienceBlockTypes.TILE_CHEMICALEXTRACTOR); + addSimpleBlock(NuclearScienceBlocks.blockControlRodAssembly); + addSimpleBlock(NuclearScienceBlocks.blockElectromagnet); + addSimpleBlock(NuclearScienceBlocks.blockElectromagneticBooster); + addSimpleBlock(NuclearScienceBlocks.blockElectromagneticGlass); + addSimpleBlock(NuclearScienceBlocks.blockElectromagneticSwitch); + addIETable(NuclearScienceBlocks.blockFreezePlug, NuclearScienceBlockTypes.TILE_FREEZEPLUG); + addIETable(NuclearScienceBlocks.blockFuelReprocessor, NuclearScienceBlockTypes.TILE_FUELREPROCESSOR); + addSimpleBlock(NuclearScienceBlocks.blockFusionReactorCore); + addIEFTable(NuclearScienceBlocks.blockGasCentrifuge, NuclearScienceBlockTypes.TILE_GASCENTRIFUGE); + addSimpleBlock(NuclearScienceBlocks.blockHeatExchanger); + addSimpleBlock(NuclearScienceBlocks.blocklead); + addSimpleBlock(NuclearScienceBlocks.blockMeltedReactor); + addIETable(NuclearScienceBlocks.blockMoltenSaltSupplier, NuclearScienceBlockTypes.TILE_MOLTENSALTSUPPLIER); + addIEFTable(NuclearScienceBlocks.blockMSRFuelPreProcessor, NuclearScienceBlockTypes.TILE_MSRFUELPREPROCESSOR); + addSimpleBlock(NuclearScienceBlocks.blockMSReactorCore); + addIEFTable(NuclearScienceBlocks.blockNuclearBoiler, NuclearScienceBlockTypes.TILE_CHEMICALBOILER); + addIETable(NuclearScienceBlocks.blockParticleInjector, NuclearScienceBlockTypes.TILE_PARTICLEINJECTOR); + addETable(NuclearScienceBlocks.blockQuantumCapacitor, NuclearScienceBlockTypes.TILE_QUANTUMCAPACITOR); + addIEFTable(NuclearScienceBlocks.blockRadioactiveProcessor, NuclearScienceBlockTypes.TILE_RADIOACTIVEPROCESSOR); + addSimpleBlock(NuclearScienceBlocks.blockRadioactiveSoil); + addITable(NuclearScienceBlocks.blockRadioisotopeGenerator, NuclearScienceBlockTypes.TILE_RADIOISOTOPEGENERATOR); + addITable(NuclearScienceBlocks.blockFissionReactorCore, NuclearScienceBlockTypes.TILE_REACTORCORE); + addSimpleBlock(NuclearScienceBlocks.blockSiren); + addETable(NuclearScienceBlocks.blockTeleporter, NuclearScienceBlockTypes.TILE_TELEPORTER); + addSimpleBlock(NuclearScienceBlocks.blockTurbine); + addSimpleBlock(NuclearScienceBlocks.getBlock(SubtypeMoltenSaltPipe.vanadiumsteelceramic)); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/radiation/RadioactiveItemsProvider.java b/src/main/java/nuclearscience/datagen/server/radiation/RadioactiveItemsProvider.java new file mode 100644 index 00000000..dc48cd0a --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/radiation/RadioactiveItemsProvider.java @@ -0,0 +1,94 @@ +package nuclearscience.datagen.server.radiation; + +import java.io.IOException; +import java.nio.file.Path; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; + +import electrodynamics.common.tags.ElectrodynamicsTags; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; +import nuclearscience.References; +import nuclearscience.common.reloadlistener.RadioactiveItemLoader; +import nuclearscience.common.tags.NuclearScienceTags; + +public class RadioactiveItemsProvider implements DataProvider { + + private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create(); + + public static final String LOC = "data/" + References.ID + "/" + RadioactiveItemLoader.FOLDER + "/" + RadioactiveItemLoader.FILE_NAME; + + private final DataGenerator dataGenerator; + + public RadioactiveItemsProvider(DataGenerator gen) { + dataGenerator = gen; + } + + @Override + public void run(HashCache cache) throws IOException { + JsonObject json = new JsonObject(); + getRadioactiveItems(json); + + Path parent = dataGenerator.getOutputFolder().resolve(LOC + ".json"); + try { + + DataProvider.save(GSON, cache, json, parent); + + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getRadioactiveItems(JsonObject json) { + + addTag(NuclearScienceTags.Items.PELLET_URANIUM235, 1000, json); + addTag(NuclearScienceTags.Items.PELLET_URANIUM238, 500, json); + addTag(NuclearScienceTags.Items.PELLET_PLUTONIUM, 4500, json); + addTag(NuclearScienceTags.Items.PELLET_POLONIUM, 2500, json); + addTag(NuclearScienceTags.Items.PELLET_ACTINIUM225, 5000, json); + + addTag(NuclearScienceTags.Items.NUGGET_POLONIUM, 1500, json); + + addTag(NuclearScienceTags.Items.FUELROD_URANIUM_HIGH_EN, 3000, json); + addTag(NuclearScienceTags.Items.FUELROD_URANIUM_LOW_EN, 2000, json); + addTag(NuclearScienceTags.Items.FUELROD_SPENT, 3500, json); + addTag(NuclearScienceTags.Items.FUELROD_PLUTONIUM, 2500, json); + + addTag(NuclearScienceTags.Items.YELLOW_CAKE, 300, json); + addTag(NuclearScienceTags.Items.DUST_FISSILE, 2000, json); + addTag(NuclearScienceTags.Items.SALT_FISSILE, 200, json); + addTag(NuclearScienceTags.Items.OXIDE_PLUTONIUM, 4000, json); + addTag(NuclearScienceTags.Items.DUST_THORIUM, 2000, json); + addTag(NuclearScienceTags.Items.OXIDE_ACTINIUM, 400, json); + + addTag(ElectrodynamicsTags.Items.ORE_THORIUM, 500, json); + addTag(ElectrodynamicsTags.Items.ORE_URANIUM, 100, json); + + addTag(ElectrodynamicsTags.Items.RAW_ORE_THORIUM, 150, json); + addTag(ElectrodynamicsTags.Items.RAW_ORE_URANIUM, 50, json); + + addTag(ElectrodynamicsTags.Items.BLOCK_RAW_ORE_THORIUM, 500, json); + addTag(ElectrodynamicsTags.Items.BLOCK_RAW_ORE_URANIUM, 450, json); + + } + + private void addItem(Item item, double radiationStrength, JsonObject json) { + json.addProperty(ForgeRegistries.ITEMS.getKey(item).toString(), radiationStrength); + } + + private void addTag(TagKey fluid, double radiationStrength, JsonObject json) { + json.addProperty("#" + fluid.location().toString(), radiationStrength); + } + + @Override + public String getName() { + return "Nuclear Science Radioactive Items Provider"; + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/NuclearScienceRecipeProvider.java b/src/main/java/nuclearscience/datagen/server/recipe/NuclearScienceRecipeProvider.java new file mode 100644 index 00000000..cffc99b9 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/NuclearScienceRecipeProvider.java @@ -0,0 +1,47 @@ +package nuclearscience.datagen.server.recipe; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeProvider; +import nuclearscience.datagen.server.recipe.custom.fluiditem2fluid.NuclearScienceChemicalMixerRecipes; +import nuclearscience.datagen.server.recipe.custom.fluiditem2fluid.NuclearScienceNuclaerBoilerRecipes; +import nuclearscience.datagen.server.recipe.custom.fluiditem2item.NuclearScienceChemicalExtractorRecipes; +import nuclearscience.datagen.server.recipe.custom.fluiditem2item.NuclearScienceMSRFuelPreprocessorRecipes; +import nuclearscience.datagen.server.recipe.custom.fluiditem2item.NuclearScienceRadioactiveProcessorRecipes; +import nuclearscience.datagen.server.recipe.custom.item2item.NuclearScienceFissionReactorRecipes; +import nuclearscience.datagen.server.recipe.custom.item2item.NuclearScienceFuelReprocessorRecipes; +import nuclearscience.datagen.server.recipe.vanilla.NuclearScienceCraftingTableRecipes; + +public class NuclearScienceRecipeProvider extends RecipeProvider { + + public final List GENERATORS = new ArrayList<>(); + + public NuclearScienceRecipeProvider(DataGenerator gen) { + super(gen); + addRecipes(); + } + + public void addRecipes() { + GENERATORS.add(new NuclearScienceCraftingTableRecipes()); + GENERATORS.add(new NuclearScienceChemicalMixerRecipes()); + GENERATORS.add(new NuclearScienceNuclaerBoilerRecipes()); + GENERATORS.add(new NuclearScienceChemicalExtractorRecipes()); + GENERATORS.add(new NuclearScienceMSRFuelPreprocessorRecipes()); + GENERATORS.add(new NuclearScienceRadioactiveProcessorRecipes()); + GENERATORS.add(new NuclearScienceFissionReactorRecipes()); + GENERATORS.add(new NuclearScienceFuelReprocessorRecipes()); + } + + @Override + protected void buildCraftingRecipes(Consumer consumer) { + for (AbstractRecipeGenerator generator : GENERATORS) { + generator.addRecipes(consumer); + } + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceChemicalMixerRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceChemicalMixerRecipes.java new file mode 100644 index 00000000..4ea82a2f --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceChemicalMixerRecipes.java @@ -0,0 +1,43 @@ +package nuclearscience.datagen.server.recipe.custom.fluiditem2fluid; + +import java.util.function.Consumer; + +import electrodynamics.common.fluid.types.liquid.subtype.SubtypeSulfateFluid; +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.server.recipe.types.custom.fluiditem2fluid.ElectrodynamicsChemicalMixerRecipes; +import electrodynamics.registers.ElectrodynamicsFluids; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.FluidTags; +import net.minecraftforge.common.Tags; +import net.minecraftforge.fluids.FluidStack; +import nuclearscience.References; +import nuclearscience.registers.NuclearScienceFluids; + +public class NuclearScienceChemicalMixerRecipes extends ElectrodynamicsChemicalMixerRecipes { + + public NuclearScienceChemicalMixerRecipes() { + super(References.ID); + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new FluidStack(NuclearScienceFluids.fluidAmmonia, 1000), 0, CHEMICALMIXER_REQUIRED_TICKS, CHEMICALMIXER_USAGE_PER_TICK, "ammonia") + // + .addFluidTagInput(FluidTags.WATER, 1000) + // + .addItemTagInput(ElectrodynamicsTags.Items.DUST_SALTPETER, 1) + // + .complete(consumer); + + newRecipe(new FluidStack(ElectrodynamicsFluids.getFluid(SubtypeSulfateFluid.iron), 1000), 0, CHEMICALMIXER_REQUIRED_TICKS, CHEMICALMIXER_USAGE_PER_TICK, "ironsulfate_from_ironblock") + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.SULFURIC_ACID, 1000) + // + .addItemTagInput(Tags.Items.STORAGE_BLOCKS_RAW_IRON, 1) + // + .complete(consumer); + + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceNuclaerBoilerRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceNuclaerBoilerRecipes.java new file mode 100644 index 00000000..8512bd6f --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2fluid/NuclearScienceNuclaerBoilerRecipes.java @@ -0,0 +1,56 @@ +package nuclearscience.datagen.server.recipe.custom.fluiditem2fluid; + +import java.util.function.Consumer; + +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeFluidOutput; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraftforge.fluids.FluidStack; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceFluids; + +public class NuclearScienceNuclaerBoilerRecipes extends AbstractRecipeGenerator { + + public static double CHEMICALBOILER_USAGE_PER_TICK = 750.0; + public static int CHEMICALBOILER_REQUIRED_TICKS = 800; + + private final String modID; + + public NuclearScienceNuclaerBoilerRecipes() { + this(References.ID); + } + + public NuclearScienceNuclaerBoilerRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new FluidStack(NuclearScienceFluids.fluidUraniumHexafluoride, 2000), 0, CHEMICALBOILER_REQUIRED_TICKS, CHEMICALBOILER_USAGE_PER_TICK, "uraniumhexafluoride_from_uraniumpellets") + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.HYDROGEN_FLUORIDE, 1600) + // + .addItemTagInput(NuclearScienceTags.Items.PELLET_URANIUM238, 1) + // + .complete(consumer); + + newRecipe(new FluidStack(NuclearScienceFluids.fluidUraniumHexafluoride, 2500), 0.25F, CHEMICALBOILER_REQUIRED_TICKS, CHEMICALBOILER_USAGE_PER_TICK, "uraniumhexafluoride_from_yellowcake") + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.HYDROGEN_FLUORIDE, 800) + // + .addItemTagInput(NuclearScienceTags.Items.YELLOW_CAKE, 1) + // + .complete(consumer); + + } + + public FinishedRecipeFluidOutput newRecipe(FluidStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeFluidOutput.of(NuclearScienceRecipeInit.NUCLEAR_BOILER_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.FLUID_ITEM_2_FLUID, modID, "nuclear_boiler/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceChemicalExtractorRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceChemicalExtractorRecipes.java new file mode 100644 index 00000000..ba538c07 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceChemicalExtractorRecipes.java @@ -0,0 +1,65 @@ +package nuclearscience.datagen.server.recipe.custom.fluiditem2item; + +import java.util.function.Consumer; + +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeItemOutput; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.item.ItemStack; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceChemicalExtractorRecipes extends AbstractRecipeGenerator { + + public static double CHEMICALEXTRACTOR_USAGE_PER_TICK = 750.0; + public static int CHEMICALEXTRACTOR_REQUIRED_TICKS = 400; + + private final String modID; + + public NuclearScienceChemicalExtractorRecipes() { + this(References.ID); + } + + public NuclearScienceChemicalExtractorRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_CELLDEUTERIUM.get()), 0.0F, CHEMICALEXTRACTOR_REQUIRED_TICKS, CHEMICALEXTRACTOR_USAGE_PER_TICK, "cell_deuterium") + // + .addItemTagInput(NuclearScienceTags.Items.CELL_HEAVYWATER, 1) + // + .addFluidTagInput(FluidTags.WATER, 4800) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_CELLHEAVYWATER.get()), 0.0F, CHEMICALEXTRACTOR_REQUIRED_TICKS, CHEMICALEXTRACTOR_USAGE_PER_TICK, "cell_heavywater") + // + .addItemTagInput(NuclearScienceTags.Items.CELL_EMPTY, 1) + // + .addFluidTagInput(FluidTags.WATER, 4800) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_YELLOWCAKE.get()), 0.0F, CHEMICALEXTRACTOR_REQUIRED_TICKS, CHEMICALEXTRACTOR_USAGE_PER_TICK, "yellowcake_from_rawuranium") + // + .addItemTagInput(ElectrodynamicsTags.Items.RAW_ORE_URANIUM, 1) + // + .addFluidTagInput(FluidTags.WATER, 1600) + // + .complete(consumer); + + } + + public FinishedRecipeItemOutput newRecipe(ItemStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeItemOutput.of(NuclearScienceRecipeInit.CHEMICAL_EXTRACTOR_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.FLUID_ITEM_2_ITEM, modID, "chemical_extractor/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceMSRFuelPreprocessorRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceMSRFuelPreprocessorRecipes.java new file mode 100644 index 00000000..2540429d --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceMSRFuelPreprocessorRecipes.java @@ -0,0 +1,66 @@ +package nuclearscience.datagen.server.recipe.custom.fluiditem2item; + +import java.util.function.Consumer; + +import electrodynamics.common.item.subtype.SubtypeCrystal; +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeItemOutput; +import electrodynamics.registers.ElectrodynamicsItems; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.ItemStack; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceMSRFuelPreprocessorRecipes extends AbstractRecipeGenerator { + + public static double MSRFUELPREPROCESSOR_USAGE_PER_TICK = 1200.0; + public static int MSRFUELPREPROCESSOR_REQUIRED_TICKS = 200; + + private final String modID; + + public NuclearScienceMSRFuelPreprocessorRecipes() { + this(References.ID); + } + + public NuclearScienceMSRFuelPreprocessorRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_FLINAK.get()), 0.0F, MSRFUELPREPROCESSOR_REQUIRED_TICKS, MSRFUELPREPROCESSOR_USAGE_PER_TICK, "flinak") + // + .addItemTagInput(ElectrodynamicsTags.Items.DUST_SALT, 1) + // + .addItemTagInput(ElectrodynamicsTags.Items.DUST_LITHIUM, 1) + // + .addItemStackInput(new ItemStack(ElectrodynamicsItems.getItem(SubtypeCrystal.potassiumchloride))) + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.HYDROGEN_FLUORIDE, 1500) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_LIFHT4PUF3.get()), 0.0F, MSRFUELPREPROCESSOR_REQUIRED_TICKS, MSRFUELPREPROCESSOR_USAGE_PER_TICK, "lifthf4uf4") + // + .addItemTagInput(ElectrodynamicsTags.Items.DUST_LITHIUM, 1) + // + .addItemTagInput(NuclearScienceTags.Items.DUST_THORIUM, 2) + // + .addItemTagInput(NuclearScienceTags.Items.YELLOW_CAKE, 2) + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.HYDROGEN_FLUORIDE, 2500) + // + .complete(consumer); + + } + + public FinishedRecipeItemOutput newRecipe(ItemStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeItemOutput.of(NuclearScienceRecipeInit.MSR_FUEL_PREPROCESSOR_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.FLUID_ITEM_2_ITEM, modID, "msr_fuel_preprocessor/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceRadioactiveProcessorRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceRadioactiveProcessorRecipes.java new file mode 100644 index 00000000..b3aea9f4 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/fluiditem2item/NuclearScienceRadioactiveProcessorRecipes.java @@ -0,0 +1,75 @@ +package nuclearscience.datagen.server.recipe.custom.fluiditem2item; + +import java.util.function.Consumer; + +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeItemOutput; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceRadioactiveProcessorRecipes extends AbstractRecipeGenerator { + + public static double RADIOACTIVEPROCESSOR_USAGE_PER_TICK = 480.0; + public static int RADIOACTIVEPROCESSOR_REQUIRED_TICKS = 300; + + private final String modID; + + public NuclearScienceRadioactiveProcessorRecipes() { + this(References.ID); + } + + public NuclearScienceRadioactiveProcessorRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_PLUTONIUMOXIDE.get()), 0.0F, RADIOACTIVEPROCESSOR_REQUIRED_TICKS, RADIOACTIVEPROCESSOR_USAGE_PER_TICK, "plutonium_oxide") + // + .addItemTagInput(NuclearScienceTags.Items.DUST_FISSILE, 2) + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.IRON_SULF, 3000) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_THORIANITEDUST.get()), 0.0F, RADIOACTIVEPROCESSOR_REQUIRED_TICKS, RADIOACTIVEPROCESSOR_USAGE_PER_TICK, "thorianite_dust") + // + .addItemTagInput(ElectrodynamicsTags.Items.RAW_ORE_THORIUM, 1) + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.SULFURIC_ACID, 1000) + // + .complete(consumer); + + newRecipe(new ItemStack(Items.DIRT), 0.0F, RADIOACTIVEPROCESSOR_REQUIRED_TICKS, RADIOACTIVEPROCESSOR_USAGE_PER_TICK, "dirt_from_radioactivesoil") + // + .addItemStackInput(new ItemStack(NuclearScienceBlocks.blockRadioactiveSoil)) + // + .addFluidTagInput(FluidTags.WATER, 100) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_ACTINIUM225.get()), 0.0F, RADIOACTIVEPROCESSOR_REQUIRED_TICKS, RADIOACTIVEPROCESSOR_USAGE_PER_TICK, "actinium225") + // + .addItemTagInput(NuclearScienceTags.Items.OXIDE_ACTINIUM, 1) + // + .addFluidTagInput(ElectrodynamicsTags.Fluids.HYDROGEN_FLUORIDE, 100) + // + .complete(consumer); + + } + + public FinishedRecipeItemOutput newRecipe(ItemStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeItemOutput.of(NuclearScienceRecipeInit.RADIOACTIVE_PROCESSOR_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.FLUID_ITEM_2_ITEM, modID, "radioactive_processor/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFissionReactorRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFissionReactorRecipes.java new file mode 100644 index 00000000..c8f91b00 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFissionReactorRecipes.java @@ -0,0 +1,42 @@ +package nuclearscience.datagen.server.recipe.custom.item2item; + +import java.util.function.Consumer; + +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeItemOutput; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.ItemStack; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceFissionReactorRecipes extends AbstractRecipeGenerator { + + private final String modID; + + public NuclearScienceFissionReactorRecipes() { + this(References.ID); + } + + public NuclearScienceFissionReactorRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_CELLTRITIUM.get()), 0.0F, 1, 1, "cell_tritium") + // + .addItemTagInput(NuclearScienceTags.Items.CELL_DEUTERIUM, 1) + // + .complete(consumer); + + } + + public FinishedRecipeItemOutput newRecipe(ItemStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeItemOutput.of(NuclearScienceRecipeInit.FISSION_REACTOR_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.ITEM_2_ITEM, modID, "fission_reactor/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFuelReprocessorRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFuelReprocessorRecipes.java new file mode 100644 index 00000000..3eedeb98 --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/custom/item2item/NuclearScienceFuelReprocessorRecipes.java @@ -0,0 +1,75 @@ +package nuclearscience.datagen.server.recipe.custom.item2item; + +import java.util.function.Consumer; + +import electrodynamics.common.item.subtype.SubtypeIngot; +import electrodynamics.common.recipe.recipeutils.ProbableItem; +import electrodynamics.datagen.utils.recipe.AbstractElectrodynamicsFinishedRecipe.RecipeCategory; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.FinishedRecipeItemOutput; +import electrodynamics.registers.ElectrodynamicsItems; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.ItemStack; +import nuclearscience.References; +import nuclearscience.common.recipe.NuclearScienceRecipeInit; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceFuelReprocessorRecipes extends AbstractRecipeGenerator { + + public static double FUELREPROCESSOR_USAGE_PER_TICK = 480; + public static int FUELREPROCESSOR_REQUIRED_TICKS = 200; + + private final String modID; + + public NuclearScienceFuelReprocessorRecipes() { + this(References.ID); + } + + public NuclearScienceFuelReprocessorRecipes(String modID) { + this.modID = modID; + } + + @Override + public void addRecipes(Consumer consumer) { + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_FISSILEDUST.get()), 0.0F, FUELREPROCESSOR_REQUIRED_TICKS, FUELREPROCESSOR_USAGE_PER_TICK, "fissile_dust") + // + .addItemTagInput(NuclearScienceTags.Items.FUELROD_SPENT, 1) + // + .addItemBiproduct(new ProbableItem(new ItemStack(NuclearScienceItems.ITEM_POLONIUM210_CHUNK.get()), 0.5D)) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_PLUTONIUM239.get()), 0.0F, FUELREPROCESSOR_REQUIRED_TICKS, FUELREPROCESSOR_USAGE_PER_TICK, "plutonium239") + // + .addItemTagInput(NuclearScienceTags.Items.OXIDE_PLUTONIUM, 1) + // + .addItemBiproduct(new ProbableItem(new ItemStack(NuclearScienceItems.ITEM_POLONIUM210_CHUNK.get(), 3), 1.0D)) + // + .complete(consumer); + + newRecipe(new ItemStack(ElectrodynamicsItems.getItem(SubtypeIngot.steel), 2), 0.0F, FUELREPROCESSOR_REQUIRED_TICKS, FUELREPROCESSOR_USAGE_PER_TICK, "reactor_salvage") + // + .addItemStackInput(new ItemStack(NuclearScienceBlocks.blockMeltedReactor)) + // + .addItemBiproduct(new ProbableItem(new ItemStack(NuclearScienceItems.ITEM_PLUTONIUM239.get()), 1.0D)) + // + .complete(consumer); + + newRecipe(new ItemStack(NuclearScienceItems.ITEM_ACTINIUMOXIDE.get()), 0.0F, FUELREPROCESSOR_REQUIRED_TICKS, FUELREPROCESSOR_USAGE_PER_TICK, "actinium_oxide") + // + .addItemTagInput(NuclearScienceTags.Items.SALT_FISSILE, 1) + // + .addItemBiproduct(new ProbableItem(new ItemStack(NuclearScienceItems.ITEM_POLONIUM210_CHUNK.get(), 3), 1.0D)) + // + .complete(consumer); + + } + + public FinishedRecipeItemOutput newRecipe(ItemStack stack, float xp, int ticks, double usagePerTick, String name) { + return FinishedRecipeItemOutput.of(NuclearScienceRecipeInit.FUEL_REPROCESSOR_SERIALIZER.get(), stack, xp, ticks, usagePerTick).name(RecipeCategory.ITEM_2_ITEM, modID, "fuel_reprocessor/" + name); + } + +} diff --git a/src/main/java/nuclearscience/datagen/server/recipe/vanilla/NuclearScienceCraftingTableRecipes.java b/src/main/java/nuclearscience/datagen/server/recipe/vanilla/NuclearScienceCraftingTableRecipes.java new file mode 100644 index 00000000..c2f3366f --- /dev/null +++ b/src/main/java/nuclearscience/datagen/server/recipe/vanilla/NuclearScienceCraftingTableRecipes.java @@ -0,0 +1,803 @@ +package nuclearscience.datagen.server.recipe.vanilla; + +import java.util.function.Consumer; + +import electrodynamics.common.block.subtype.SubtypeGlass; +import electrodynamics.common.block.subtype.SubtypeMachine; +import electrodynamics.common.block.subtype.SubtypeWire; +import electrodynamics.common.item.subtype.SubtypeCeramic; +import electrodynamics.common.tags.ElectrodynamicsTags; +import electrodynamics.datagen.utils.recipe.AbstractRecipeGenerator; +import electrodynamics.datagen.utils.recipe.ElectrodynamicsShapedCraftingRecipe; +import electrodynamics.datagen.utils.recipe.ElectrodynamicsShapelessCraftingRecipe; +import electrodynamics.registers.ElectrodynamicsItems; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Items; +import net.minecraftforge.common.Tags; +import nuclearscience.References; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.common.tags.NuclearScienceTags; +import nuclearscience.registers.NuclearScienceBlocks; +import nuclearscience.registers.NuclearScienceItems; + +public class NuclearScienceCraftingTableRecipes extends AbstractRecipeGenerator { + + @Override + public void addRecipes(Consumer consumer) { + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceItems.ITEM_ANTIDOTE.get(), 3) + // + .addIngredient(Items.GLASS_BOTTLE) + // + .addIngredient(Items.GLASS_BOTTLE) + // + .addIngredient(Items.GLASS_BOTTLE) + // + .addIngredient(ItemTags.FISHES) + // + .complete(References.ID, "antidote", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blocklead.asItem(), 2) + // + .addPattern("LLL") + // + .addPattern("CCC") + // + .addPattern("LLL") + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('C', ElectrodynamicsItems.getItem(SubtypeCeramic.plate)) + // + .complete(References.ID, "leadshielding", consumer); + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceItems.ITEM_CELLANTIMATTERLARGE.get(), 1) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_SMALL) + // + .complete(References.ID, "cellantimatter_large", consumer); + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceItems.ITEM_CELLANTIMATTERVERYLARGE.get(), 1) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_LARGE) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_LARGE) + // + .addIngredient(NuclearScienceTags.Items.CELL_ANTIMATTER_LARGE) + // + .complete(References.ID, "cellantimatter_verylarge", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_CELLELECTROMAGNETIC.get(), 1) + // + .addPattern(" C ") + // + .addPattern("CEC") + // + .addPattern(" C ") + // + .addKey('C', ElectrodynamicsItems.ITEM_COIL.get()) + // + .addKey('E', NuclearScienceTags.Items.CELL_EMPTY) + // + .complete(References.ID, "cellelectromagnetic", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_CELLEMPTY.get(), 4) + // + .addPattern("GTG") + // + .addPattern("T T") + // + .addPattern("GTG") + // + .addKey('G', Tags.Items.GLASS) + // + .addKey('T', ElectrodynamicsTags.Items.INGOT_TIN) + // + .complete(References.ID, "cellempty_glass", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_CELLEMPTY.get(), 6) + // + .addPattern("GTG") + // + .addPattern("T T") + // + .addPattern("GTG") + // + .addKey('G', ElectrodynamicsItems.getItem(SubtypeGlass.clear)) + // + .addKey('T', ElectrodynamicsTags.Items.INGOT_TIN) + // + .complete(References.ID, "cellempty_clearglass", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockElectromagnet.asItem(), 1) + // + .addPattern("BSB") + // + .addPattern("SMS") + // + .addPattern("BSB") + // + .addKey('B', ElectrodynamicsTags.Items.PLATE_BRONZE) + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "electromagnet_steelbronze", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockElectromagnet.asItem(), 15) + // + .addPattern("THT") + // + .addPattern("HMH") + // + .addPattern("THT") + // + .addKey('T', ElectrodynamicsTags.Items.PLATE_TITANIUM) + // + .addKey('H', ElectrodynamicsTags.Items.PLATE_HSLASTEEL) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "electromagnet_hslatitanium", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockElectromagneticBooster.asItem(), 1) + // + .addPattern("EGE") + // + .addKey('E', NuclearScienceBlocks.blockElectromagnet.asItem()) + // + .addKey('G', NuclearScienceBlocks.blockElectromagneticGlass.asItem()) + // + .complete(References.ID, "electromagneticbooster", consumer); + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceBlocks.blockElectromagneticGlass.asItem(), 1) + // + .addIngredient(NuclearScienceBlocks.blockElectromagnet.asItem()) + // + .addIngredient(Tags.Items.GLASS) + // + .complete(References.ID, "electromagneticglass", consumer); + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceBlocks.blockElectromagneticSwitch.asItem(), 1) + // + .addIngredient(NuclearScienceBlocks.blockElectromagneticBooster.asItem()) + // + .addIngredient(ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "electromagneticswitch", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_FREQUENCYCARD.get(), 1) + // + .addPattern(" P ") + // + .addPattern("WCW") + // + .addPattern(" P ") + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_IRON) + // + .addKey('W', ElectrodynamicsItems.getItem(SubtypeWire.copper)) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .complete(References.ID, "frequencycard_new", consumer); + + ElectrodynamicsShapelessCraftingRecipe.start(NuclearScienceItems.ITEM_FREQUENCYCARD.get(), 1) + // + .addIngredient(NuclearScienceItems.ITEM_FREQUENCYCARD.get()) + // + .complete(References.ID, "frequencycard_reset", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_FUELHEUO2.get(), 1) + // + .addPattern("GLG") + // + .addPattern("GHG") + // + .addPattern("GLG") + // + .addKey('G', Tags.Items.GLASS) + // + .addKey('L', NuclearScienceTags.Items.PELLET_URANIUM238) + // + .addKey('H', NuclearScienceTags.Items.PELLET_URANIUM235) + // + .complete(References.ID, "fuelrod_uranium_highenrich", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_FUELLEUO2.get(), 1) + // + .addPattern("GLG") + // + .addPattern("GLG") + // + .addPattern("GLG") + // + .addKey('G', Tags.Items.GLASS) + // + .addKey('L', NuclearScienceTags.Items.PELLET_URANIUM238) + // + .complete(References.ID, "fuelrod_uranium_lowenrich", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_FUELPLUTONIUM.get(), 1) + // + .addPattern("GLG") + // + .addPattern("GPG") + // + .addPattern("GLG") + // + .addKey('G', Tags.Items.GLASS) + // + .addKey('L', NuclearScienceTags.Items.PELLET_URANIUM238) + // + .addKey('P', NuclearScienceTags.Items.PELLET_PLUTONIUM) + // + .complete(References.ID, "fuelrod_plutonium", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.getItem(SubtypeMoltenSaltPipe.vanadiumsteelceramic), 2) + // + .addPattern("CCC") + // + .addPattern("VVV") + // + .addPattern("CCC") + // + .addKey('C', ElectrodynamicsItems.getItem(SubtypeCeramic.plate)) + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .complete(References.ID, "moltensaltpipe_ceramicvanadium", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_POLONIUM210.get(), 1) + // + .addPattern("PP") + // + .addPattern("PP") + // + .addKey('P', NuclearScienceTags.Items.NUGGET_POLONIUM) + // + .complete(References.ID, "poloniumpellet_from_nuggets", consumer); + + addGear(consumer); + addMachines(consumer); + + } + + public void addGear(Consumer consumer) { + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_CANISTERLEAD.get(), 1) + // + .addPattern("VLV") + // + .addPattern("LCL") + // + .addPattern("VLV") + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('C', ElectrodynamicsItems.ITEM_CANISTERREINFORCED.get()) + // + .complete(References.ID, "canisterlead", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_GEIGERCOUNTER.get(), 1) + // + .addPattern("PPP") + // + .addPattern("PBP") + // + .addPattern("PCP") + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('B', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .addKey('C', ElectrodynamicsItems.ITEM_COIL.get()) + // + .complete(References.ID, "geigercounter", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_HAZMATHELMET.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LHL") + // + .addPattern("WCW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('H', Items.LEATHER_HELMET) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .complete(References.ID, "hazmathelmet", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_HAZMATPLATE.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LcL") + // + .addPattern("WCW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('c', Items.LEATHER_CHESTPLATE) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .complete(References.ID, "hazmatchestplate", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_HAZMATLEGS.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LlL") + // + .addPattern("WCW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('l', Items.LEATHER_LEGGINGS) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .complete(References.ID, "hazmatleggings", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_HAZMATBOOTS.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LBL") + // + .addPattern("WCW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('B', Items.LEATHER_BOOTS) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_BASIC) + // + .complete(References.ID, "hazmatboots", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_REINFORCEDHAZMATHELMET.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LHL") + // + .addPattern("WLW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('H', NuclearScienceItems.ITEM_HAZMATHELMET.get()) + // + .complete(References.ID, "reinforcedhazmathelmet", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_REINFORCEDHAZMATPLATE.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LcL") + // + .addPattern("WLW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('c', NuclearScienceItems.ITEM_HAZMATPLATE.get()) + // + .complete(References.ID, "reinforcedhazmatchestplate", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_REINFORCEDHAZMATLEGS.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LlL") + // + .addPattern("WLW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('l', NuclearScienceItems.ITEM_HAZMATLEGS.get()) + // + .complete(References.ID, "reinforcedhazmatleggings", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceItems.ITEM_REINFORCEDHAZMATBOOTS.get(), 1) + // + .addPattern("WWW") + // + .addPattern("LBL") + // + .addPattern("WLW") + // + .addKey('W', ItemTags.WOOL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('B', NuclearScienceItems.ITEM_HAZMATBOOTS.get()) + // + .complete(References.ID, "reinforcedhazmatboots", consumer); + + } + + public void addMachines(Consumer consumer) { + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockAtomicAssembler.asItem(), 1) + // + .addPattern("CCC") + // + .addPattern("SGS") + // + .addPattern("SSS") + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('G', NuclearScienceBlocks.blockGasCentrifuge.asItem()) + // + .complete(References.ID, "atomicassembler", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockChemicalExtractor.asItem(), 1) + // + .addPattern("SPS") + // + .addPattern("MCM") + // + .addPattern("SPS") + // + .addKey('S', ElectrodynamicsTags.Items.INGOT_STEEL) + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ADVANCED) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "chemicalextractor", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockControlRodAssembly.asItem(), 1) + // + .addPattern("SsS") + // + .addPattern(" P ") + // + .addPattern("SCS") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('s', ElectrodynamicsTags.Items.INGOT_SILVER) + // + .addKey('P', Items.PISTON) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ADVANCED) + // + .complete(References.ID, "controlrod", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockFreezePlug.asItem(), 1) + // + .addPattern("SCS") + // + .addPattern("SCS") + // + .addPattern("SBS") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('C', Tags.Items.STORAGE_BLOCKS_COPPER) + // + .addKey('B', ElectrodynamicsTags.Items.STORAGE_BLOCK_VANADIUMSTEEL) + // + .complete(References.ID, "freezeplug", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockFuelReprocessor.asItem(), 1) + // + .addPattern("VSV") + // + .addPattern("STS") + // + .addPattern("VSV") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('T', ElectrodynamicsItems.ITEM_TITANIUM_COIL.get()) + // + .complete(References.ID, "fuelreprocessor", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockFissionReactorCore.asItem(), 1) + // + .addPattern("PCP") + // + .addPattern("MEM") + // + .addPattern("PCP") + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .addKey('E', NuclearScienceTags.Items.CELL_EMPTY) + // + .complete(References.ID, "fissionreactorcore", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockFusionReactorCore.asItem(), 1) + // + .addPattern("UEU") + // + .addPattern("ECE") + // + .addPattern("UEU") + // + .addKey('U', ElectrodynamicsTags.Items.CIRCUITS_ULTIMATE) + // + .addKey('E', NuclearScienceBlocks.blockElectromagnet.asItem()) + // + .addKey('C', NuclearScienceBlocks.blockMSReactorCore.asItem()) + // + .complete(References.ID, "fusionreactorcore", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockGasCentrifuge.asItem(), 1) + // + .addPattern("SES") + // + .addPattern("CGC") + // + .addPattern("BMB") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('E', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .addKey('C', NuclearScienceTags.Items.CELL_EMPTY) + // + .addKey('G', ElectrodynamicsTags.Items.GEAR_STEEL) + // + .addKey('B', ElectrodynamicsTags.Items.PLATE_BRONZE) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "gascentrifuge", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockHeatExchanger.asItem(), 1) + // + .addPattern("PPP") + // + .addPattern("PPP") + // + .addPattern("SCS") + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('S', ElectrodynamicsTags.Items.INGOT_SILVER) + // + .addKey('C', Tags.Items.STORAGE_BLOCKS_COPPER) + // + .complete(References.ID, "heatexchanger", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockMoltenSaltSupplier.asItem(), 1) + // + .addPattern("SVS") + // + .addPattern("TTT") + // + .addPattern("SVS") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('T', ElectrodynamicsItems.ITEM_TITANIUM_COIL.get()) + // + .complete(References.ID, "moltensaltsupplier", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockMSRFuelPreProcessor.asItem(), 1) + // + .addPattern("VLV") + // + .addPattern("LCL") + // + .addPattern("VEV") + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('C', ElectrodynamicsItems.getItem(SubtypeMachine.chemicalmixer)) + // + .addKey('E', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .complete(References.ID, "msrfuelpreprocessor", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockMSReactorCore.asItem(), 1) + // + .addPattern("SVS") + // + .addPattern("VRV") + // + .addPattern("SPS") + // + .addKey('S', ElectrodynamicsTags.Items.PLATE_STAINLESSSTEEL) + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('R', NuclearScienceBlocks.blockFissionReactorCore.asItem()) + // + .addKey('P', NuclearScienceTags.Items.PELLET_PLUTONIUM) + // + .complete(References.ID, "msrreactorcore", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockNuclearBoiler.asItem(), 1) + // + .addPattern("PCP") + // + .addPattern("EFE") + // + .addPattern("PMP") + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .addKey('E', NuclearScienceTags.Items.CELL_EMPTY) + // + .addKey('F', ElectrodynamicsItems.getItem(SubtypeMachine.electricarcfurnace)) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "nuclearboiler", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockParticleInjector.asItem(), 1) + // + .addPattern("MTM") + // + .addPattern("UDU") + // + .addPattern("MTM") + // + .addKey('M', NuclearScienceBlocks.blockElectromagnet.asItem()) + // + .addKey('T', ElectrodynamicsItems.getItem(SubtypeMachine.upgradetransformer)) + // + .addKey('U', ElectrodynamicsTags.Items.CIRCUITS_ULTIMATE) + // + .addKey('D', Items.DISPENSER) + // + .complete(References.ID, "particleinjector", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockQuantumCapacitor.asItem(), 1) + // + .addPattern("DCD") + // + .addPattern("RDR") + // + .addPattern("DCD") + // + .addKey('D', NuclearScienceTags.Items.CELL_DARK_MATTER) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ULTIMATE) + // + .addKey('R', NuclearScienceBlocks.blockFusionReactorCore.asItem()) + // + .complete(References.ID, "quantumcapacitor", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockRadioactiveProcessor.asItem(), 1) + // + .addPattern("VTV") + // + .addPattern("VMV") + // + .addPattern("VCV") + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('T', ElectrodynamicsItems.ITEM_TITANIUM_COIL.get()) + // + .addKey('M', ElectrodynamicsItems.getItem(SubtypeMachine.chemicalmixer)) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .complete(References.ID, "radioactiveprocessor", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockRadioisotopeGenerator.asItem(), 1) + // + .addPattern("VCV") + // + .addPattern("LEL") + // + .addPattern("VCV") + // + .addKey('V', ElectrodynamicsTags.Items.PLATE_VANADIUMSTEEL) + // + .addKey('C', ElectrodynamicsTags.Items.CIRCUITS_ADVANCED) + // + .addKey('L', ElectrodynamicsTags.Items.PLATE_LEAD) + // + .addKey('E', NuclearScienceTags.Items.CELL_EMPTY) + // + .complete(References.ID, "radioisotopegenerator", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockSiren.asItem(), 1) + // + .addPattern("NPN") + // + .addKey('N', Items.NOTE_BLOCK) + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_BRONZE) + // + .complete(References.ID, "siren", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockTeleporter.asItem(), 1) + // + .addPattern("TCT") + // + .addPattern("HEH") + // + .addPattern("PDP") + // + .addKey('T', ElectrodynamicsTags.Items.PLATE_TITANIUMCARBIDE) + // + .addKey('C', ElectrodynamicsItems.getItem(SubtypeCeramic.fuse)) + // + .addKey('H', ElectrodynamicsTags.Items.PLATE_HSLASTEEL) + // + .addKey('E', ElectrodynamicsTags.Items.CIRCUITS_ELITE) + // + .addKey('P', Items.ENDER_PEARL) + // + .addKey('D', NuclearScienceTags.Items.CELL_DARK_MATTER) + // + .complete(References.ID, "teleporter", consumer); + + ElectrodynamicsShapedCraftingRecipe.start(NuclearScienceBlocks.blockTurbine.asItem(), 1) + // + .addPattern(" W ") + // + .addPattern("PMP") + // + .addPattern(" P ") + // + .addKey('W', ElectrodynamicsItems.getItem(SubtypeWire.gold)) + // + .addKey('P', ElectrodynamicsTags.Items.PLATE_STEEL) + // + .addKey('M', ElectrodynamicsItems.ITEM_MOTOR.get()) + // + .complete(References.ID, "turbine", consumer); + + } + +} diff --git a/src/main/java/nuclearscience/prefab/screen/component/NuclearArrows.java b/src/main/java/nuclearscience/prefab/screen/component/NuclearArrows.java new file mode 100644 index 00000000..e4ab852d --- /dev/null +++ b/src/main/java/nuclearscience/prefab/screen/component/NuclearArrows.java @@ -0,0 +1,66 @@ +package nuclearscience.prefab.screen.component; + +import electrodynamics.api.screen.ITexture; +import net.minecraft.resources.ResourceLocation; +import nuclearscience.References; + +public enum NuclearArrows implements ITexture { + + FISSION_REACTOR_ARROW_LR(0, 0, 54, 19, 54, 19, new ResourceLocation(References.ID, "textures/screen/component/fissionreactorarrow_lr.png")), + FISSION_REACTOR_ARROW_DOWN(0, 0, 14, 13, 14, 13, new ResourceLocation(References.ID, "textures/screen/component/fissionreactorarrow_down.png")), + PARTICLE_INJECTOR_ARROWS(0, 0, 86, 48, 86, 48, new ResourceLocation(References.ID, "textures/screen/component/particleinjectorarrows.png")); + + private final int textU; + private final int textV; + private final int textWidth; + private final int textHeight; + private final int imgWidth; + private final int imgHeight; + private final ResourceLocation loc; + + private NuclearArrows(int textU, int textV, int textWidth, int textHeight, int imgWidth, int imgHeight, ResourceLocation loc) { + this.textU = textU; + this.textV = textV; + this.textWidth = textWidth; + this.textHeight = textHeight; + this.imgWidth = imgWidth; + this.imgHeight = imgHeight; + this.loc = loc; + } + + @Override + public ResourceLocation getLocation() { + return loc; + } + + @Override + public int imageHeight() { + return imgHeight; + } + + @Override + public int imageWidth() { + return imgWidth; + } + + @Override + public int textureHeight() { + return textHeight; + } + + @Override + public int textureU() { + return textU; + } + + @Override + public int textureV() { + return textV; + } + + @Override + public int textureWidth() { + return textWidth; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/prefab/screen/component/NuclearIconTypes.java b/src/main/java/nuclearscience/prefab/screen/component/NuclearIconTypes.java new file mode 100644 index 00000000..02da7e62 --- /dev/null +++ b/src/main/java/nuclearscience/prefab/screen/component/NuclearIconTypes.java @@ -0,0 +1,65 @@ +package nuclearscience.prefab.screen.component; + +import electrodynamics.api.screen.ITexture; +import net.minecraft.resources.ResourceLocation; +import nuclearscience.References; + +public enum NuclearIconTypes implements ITexture { + + PELLET_DARK(0, 0, 14, 14, 14, 14, new ResourceLocation(References.ID, "textures/screen/component/icon/pelletdark.png")), + FUEL_CELL_DARK(0, 0, 12, 12, 12, 12, new ResourceLocation(References.ID, "textures/screen/component/icon/fuelcelldark.png")); + + private final int textU; + private final int textV; + private final int textWidth; + private final int textHeight; + private final int imgWidth; + private final int imgHeight; + private final ResourceLocation loc; + + private NuclearIconTypes(int textU, int textV, int textWidth, int textHeight, int imgWidth, int imgHeight, ResourceLocation loc) { + this.textU = textU; + this.textV = textV; + this.textWidth = textWidth; + this.textHeight = textHeight; + this.imgWidth = imgWidth; + this.imgHeight = imgHeight; + this.loc = loc; + } + + @Override + public ResourceLocation getLocation() { + return loc; + } + + @Override + public int imageHeight() { + return imgHeight; + } + + @Override + public int imageWidth() { + return imgWidth; + } + + @Override + public int textureHeight() { + return textHeight; + } + + @Override + public int textureU() { + return textU; + } + + @Override + public int textureV() { + return textV; + } + + @Override + public int textureWidth() { + return textWidth; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentGasCentrifuge.java b/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentGasCentrifuge.java index b56cd1e7..6c38647e 100644 --- a/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentGasCentrifuge.java +++ b/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentGasCentrifuge.java @@ -1,38 +1,27 @@ package nuclearscience.prefab.screen.component; -import java.awt.Rectangle; import java.util.function.DoubleSupplier; import com.mojang.blaze3d.vertex.PoseStack; -import electrodynamics.api.screen.IScreenWrapper; -import electrodynamics.prefab.screen.component.ScreenComponent; +import electrodynamics.api.screen.ITexture; +import electrodynamics.prefab.screen.component.types.ScreenComponentGeneric; import electrodynamics.prefab.utilities.RenderingUtils; import net.minecraft.resources.ResourceLocation; import nuclearscience.References; -public class ScreenComponentGasCentrifuge extends ScreenComponent { - private static final ResourceLocation TEXTURE = new ResourceLocation(References.ID + ":textures/screen/component/nsprocessingarrows.png"); - - private static final int WIDTH = 92; - private static final int HEIGHT = 54; - - private static final int BULB_WIDTH = 13; - private static final int BULB_HEIGHT = 48; - private static final int BULB_Y_OFFSET = 57; +public class ScreenComponentGasCentrifuge extends ScreenComponentGeneric { - private static final int ARROW_WIDTH = 20; - private static final int ARROW_HEIGHT = 13; - private static final int ARROW_Y_OFFSET = 105; + private static final ResourceLocation TEXTURE = new ResourceLocation(References.ID + ":textures/screen/component/nsprocessingarrows.png"); private final DoubleSupplier progressInfoHandlerBulbs; private final DoubleSupplier progressInfoHandlerProgressTop; private final DoubleSupplier progressInfoHandlerProgressMiddle; private final DoubleSupplier progressInfoHandlerProgressBottom; - public ScreenComponentGasCentrifuge(final DoubleSupplier progressInfoHandlerBulbs, final DoubleSupplier progressInfoHandlerProgressTop, final DoubleSupplier progressInfoHandlerProgressMiddle, DoubleSupplier progressInfoHandlerProgressBottom, final IScreenWrapper gui, final int x, final int y) { - super(TEXTURE, gui, x, y); + public ScreenComponentGasCentrifuge(DoubleSupplier progressInfoHandlerBulbs, DoubleSupplier progressInfoHandlerProgressTop, DoubleSupplier progressInfoHandlerProgressMiddle, DoubleSupplier progressInfoHandlerProgressBottom, int x, int y) { + super(GasCentrifugeTextures.OFF, x, y); this.progressInfoHandlerBulbs = progressInfoHandlerBulbs; this.progressInfoHandlerProgressTop = progressInfoHandlerProgressTop; this.progressInfoHandlerProgressMiddle = progressInfoHandlerProgressMiddle; @@ -40,22 +29,87 @@ public ScreenComponentGasCentrifuge(final DoubleSupplier progressInfoHandlerBulb } @Override - public Rectangle getBounds(final int guiWidth, final int guiHeight) { - return new Rectangle(guiWidth + xLocation, guiHeight + yLocation, WIDTH, HEIGHT); + public void renderBackground(PoseStack stack, final int xAxis, final int yAxis, final int guiWidth, final int guiHeight) { + super.renderBackground(stack, xAxis, yAxis, guiWidth, guiHeight); + + ITexture texture = GasCentrifugeTextures.BULB; + + RenderingUtils.bindTexture(TEXTURE); + + int progressBulbs = (int) (progressInfoHandlerBulbs.getAsDouble() * texture.textureWidth()); + blit(stack, guiWidth + xLocation, guiHeight + yLocation + 3, texture.textureU(), texture.textureV(), progressBulbs, texture.textureHeight(), texture.imageWidth(), texture.imageHeight()); + + texture = GasCentrifugeTextures.ARROW; + int topProgress = (int) (progressInfoHandlerProgressTop.getAsDouble() * texture.textureWidth()); + int middleProgress = (int) (progressInfoHandlerProgressMiddle.getAsDouble() * texture.textureWidth()); + int bottomProgress = (int) (progressInfoHandlerProgressBottom.getAsDouble() * texture.textureWidth()); + + blit(stack, guiWidth + xLocation + 72, guiHeight + yLocation, texture.textureU(), texture.textureV(), topProgress, texture.textureHeight(), texture.imageWidth(), texture.imageHeight()); + blit(stack, guiWidth + xLocation + 72, guiHeight + yLocation + 20, texture.textureU(), texture.textureV(), middleProgress, texture.textureHeight(), texture.imageWidth(), texture.imageHeight()); + blit(stack, guiWidth + xLocation + 72, guiHeight + yLocation + 41, texture.textureU(), texture.textureV(), bottomProgress, texture.textureHeight(), texture.imageWidth(), texture.imageHeight()); + + RenderingUtils.resetShaderColor(); + } - @Override - public void renderBackground(PoseStack stack, final int xAxis, final int yAxis, final int guiWidth, final int guiHeight) { - RenderingUtils.bindTexture(resource); - gui.drawTexturedRect(stack, guiWidth + xLocation, guiHeight + yLocation, 0, 0, WIDTH, HEIGHT); - int progressBulbs = (int) (progressInfoHandlerBulbs.getAsDouble() * BULB_WIDTH); - int topProgress = (int) (progressInfoHandlerProgressTop.getAsDouble() * ARROW_WIDTH); - int middleProgress = (int) (progressInfoHandlerProgressMiddle.getAsDouble() * ARROW_WIDTH); - int bottomProgress = (int) (progressInfoHandlerProgressBottom.getAsDouble() * ARROW_WIDTH); - gui.drawTexturedRect(stack, guiWidth + xLocation, guiHeight + yLocation + 3, 0, BULB_Y_OFFSET, progressBulbs, BULB_HEIGHT); - gui.drawTexturedRect(stack, guiWidth + xLocation + 72, guiHeight + yLocation, 0, ARROW_Y_OFFSET, topProgress, ARROW_HEIGHT); - gui.drawTexturedRect(stack, guiWidth + xLocation + 72, guiHeight + yLocation + 20, 0, ARROW_Y_OFFSET, middleProgress, ARROW_HEIGHT); - gui.drawTexturedRect(stack, guiWidth + xLocation + 72, guiHeight + yLocation + 41, 0, ARROW_Y_OFFSET, bottomProgress, ARROW_HEIGHT); + public enum GasCentrifugeTextures implements ITexture { + OFF(92, 54, 0, 0, 256, 256), + BULB(13, 48, 0, 57, 256, 256), + ARROW(20, 13, 0, 105, 256, 256); + + private final int textureWidth; + private final int textureHeight; + private final int textureU; + private final int textureV; + private final int imageWidth; + private final int imageHeight; + private final ResourceLocation loc; + + GasCentrifugeTextures(int textureWidth, int textureHeight, int textureU, int textureV, int imageWidth, int imageHeight) { + this.textureWidth = textureWidth; + this.textureHeight = textureHeight; + this.textureU = textureU; + this.textureV = textureV; + this.imageWidth = imageWidth; + this.imageHeight = imageHeight; + loc = TEXTURE; + } + + @Override + public ResourceLocation getLocation() { + return loc; + } + + @Override + public int imageHeight() { + return imageHeight; + } + + @Override + public int imageWidth() { + return imageWidth; + } + + @Override + public int textureHeight() { + return textureHeight; + } + + @Override + public int textureU() { + return textureU; + } + + @Override + public int textureV() { + return textureV; + } + + @Override + public int textureWidth() { + return textureWidth; + } + } -} +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentReactorFuel.java b/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentReactorFuel.java new file mode 100644 index 00000000..70912074 --- /dev/null +++ b/src/main/java/nuclearscience/prefab/screen/component/ScreenComponentReactorFuel.java @@ -0,0 +1,56 @@ +package nuclearscience.prefab.screen.component; + +import java.util.ArrayList; +import java.util.List; + +import electrodynamics.api.electricity.formatting.ChatFormatter; +import electrodynamics.prefab.inventory.container.GenericContainerBlockEntity; +import electrodynamics.prefab.screen.GenericScreen; +import electrodynamics.prefab.screen.component.types.gauges.AbstractScreenComponentGauge; +import electrodynamics.prefab.utilities.ElectroTextUtils; +import electrodynamics.prefab.utilities.RenderingUtils; +import electrodynamics.prefab.utilities.math.Color; +import net.minecraft.ChatFormatting; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.world.level.material.Fluids; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; + +public class ScreenComponentReactorFuel extends AbstractScreenComponentGauge { + + public ScreenComponentReactorFuel(int x, int y) { + super(x, y); + } + + @Override + protected void applyColor() { + RenderingUtils.setShaderColor(new Color(Fluids.LAVA.getAttributes().getColor())); + } + + @Override + protected int getScaledLevel() { + TileMSReactorCore core = ((GenericContainerBlockEntity) ((GenericScreen) gui).getMenu()).getHostFromIntArray(); + if (core == null) { + return 0; + } + + return (int) ((GaugeTextures.BACKGROUND_DEFAULT.textureHeight() - 2) * (core.currentFuel.get()) / TileMSReactorCore.FUEL_CAPACITY); + } + + @Override + protected ResourceLocation getTexture() { + return Fluids.LAVA.getAttributes().getStillTexture(); + } + + @Override + protected List getTooltips() { + List list = new ArrayList<>(); + TileMSReactorCore core = ((GenericContainerBlockEntity) ((GenericScreen) gui).getMenu()).getHostFromIntArray(); + if (core == null) { + return list; + } + list.add(ElectroTextUtils.ratio(ChatFormatter.formatFluidMilibuckets(core.currentFuel.get()), ChatFormatter.formatFluidMilibuckets(TileMSReactorCore.FUEL_CAPACITY)).withStyle(ChatFormatting.GRAY).getVisualOrderText()); + return list; + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/prefab/utils/NuclearTextUtils.java b/src/main/java/nuclearscience/prefab/utils/NuclearTextUtils.java new file mode 100644 index 00000000..633f2a83 --- /dev/null +++ b/src/main/java/nuclearscience/prefab/utils/NuclearTextUtils.java @@ -0,0 +1,88 @@ +package nuclearscience.prefab.utils; + +import static electrodynamics.prefab.utilities.ElectroTextUtils.ADVANCEMENT_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.BLOCK_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.CREATIVE_TAB; +import static electrodynamics.prefab.utilities.ElectroTextUtils.GAS_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.GUIDEBOOK_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.GUI_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.JEI_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.JEI_INFO_FLUID; +import static electrodynamics.prefab.utilities.ElectroTextUtils.JEI_INFO_ITEM; +import static electrodynamics.prefab.utilities.ElectroTextUtils.MESSAGE_BASE; +import static electrodynamics.prefab.utilities.ElectroTextUtils.TOOLTIP_BASE; + +import net.minecraft.client.resources.language.I18n; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TranslatableComponent; +import nuclearscience.References; + +/** + * I will see about condensing this into a single class later, for now this works + * + * @author skip999 + * + */ +public class NuclearTextUtils { + + public static MutableComponent tooltip(String key, Object... additional) { + return translated(TOOLTIP_BASE, key, additional); + } + + public static MutableComponent guidebook(String key, Object... additional) { + return translated(GUIDEBOOK_BASE, key, additional); + } + + public static MutableComponent gui(String key, Object... additional) { + return translated(GUI_BASE, key, additional); + } + + public static MutableComponent chatMessage(String key, Object... additional) { + return translated(MESSAGE_BASE, key, additional); + } + + public static MutableComponent jeiTranslated(String key, Object... additional) { + return new TranslatableComponent(JEI_BASE + "." + key, additional); + } + + public static MutableComponent jeiItemTranslated(String key, Object... additional) { + return jeiTranslated(JEI_INFO_ITEM + "." + key, additional); + } + + public static MutableComponent jeiFluidTranslated(String key, Object... additional) { + return jeiTranslated(JEI_INFO_FLUID + "." + key, additional); + } + + public static MutableComponent block(String key, Object... additional) { + return translated(BLOCK_BASE, key, additional); + } + + public static MutableComponent gas(String key, Object... additional) { + return translated(GAS_BASE, key, additional); + } + + public static MutableComponent advancement(String key, Object... additional) { + return translated(ADVANCEMENT_BASE, key, additional); + } + + public static MutableComponent creativeTab(String key, Object... additional) { + return translated(CREATIVE_TAB, key, additional); + } + + public static MutableComponent translated(String base, String key, Object... additional) { + return new TranslatableComponent(base + "." + References.ID + "." + key, additional); + } + + public static boolean guiExists(String key) { + return translationExists(GUI_BASE, key); + } + + public static boolean tooltipExists(String key) { + return translationExists(TOOLTIP_BASE, key); + } + + public static boolean translationExists(String base, String key) { + return I18n.exists(base + "." + References.ID + "." + key); + } + +} \ No newline at end of file diff --git a/src/main/java/nuclearscience/registers/NuclearScienceBlockTypes.java b/src/main/java/nuclearscience/registers/NuclearScienceBlockTypes.java new file mode 100644 index 00000000..ca8e3e6e --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceBlockTypes.java @@ -0,0 +1,88 @@ +package nuclearscience.registers; + +import static nuclearscience.registers.NuclearScienceBlocks.blockAtomicAssembler; +import static nuclearscience.registers.NuclearScienceBlocks.blockChemicalExtractor; +import static nuclearscience.registers.NuclearScienceBlocks.blockControlRodAssembly; +import static nuclearscience.registers.NuclearScienceBlocks.blockElectromagneticSwitch; +import static nuclearscience.registers.NuclearScienceBlocks.blockFreezePlug; +import static nuclearscience.registers.NuclearScienceBlocks.blockFuelReprocessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockFusionReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockGasCentrifuge; +import static nuclearscience.registers.NuclearScienceBlocks.blockHeatExchanger; +import static nuclearscience.registers.NuclearScienceBlocks.blockMSRFuelPreProcessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockMeltedReactor; +import static nuclearscience.registers.NuclearScienceBlocks.blockMoltenSaltSupplier; +import static nuclearscience.registers.NuclearScienceBlocks.blockMSReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockNuclearBoiler; +import static nuclearscience.registers.NuclearScienceBlocks.blockParticleInjector; +import static nuclearscience.registers.NuclearScienceBlocks.blockPlasma; +import static nuclearscience.registers.NuclearScienceBlocks.blockQuantumCapacitor; +import static nuclearscience.registers.NuclearScienceBlocks.blockRadioactiveProcessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockRadioisotopeGenerator; +import static nuclearscience.registers.NuclearScienceBlocks.blockFissionReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockSiren; +import static nuclearscience.registers.NuclearScienceBlocks.blockTeleporter; +import static nuclearscience.registers.NuclearScienceBlocks.blockTurbine; + +import com.google.common.collect.Sets; + +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.common.block.connect.BlockMoltenSaltPipe; +import nuclearscience.common.tile.TileAtomicAssembler; +import nuclearscience.common.tile.TileChemicalExtractor; +import nuclearscience.common.tile.TileControlRodAssembly; +import nuclearscience.common.tile.TileElectromagneticSwitch; +import nuclearscience.common.tile.TileFuelReprocessor; +import nuclearscience.common.tile.TileGasCentrifuge; +import nuclearscience.common.tile.TileNuclearBoiler; +import nuclearscience.common.tile.TileParticleInjector; +import nuclearscience.common.tile.TileQuantumCapacitor; +import nuclearscience.common.tile.TileRadioactiveProcessor; +import nuclearscience.common.tile.TileRadioisotopeGenerator; +import nuclearscience.common.tile.TileSiren; +import nuclearscience.common.tile.TileTeleporter; +import nuclearscience.common.tile.TileTurbine; +import nuclearscience.common.tile.fissionreactor.TileMeltedReactor; +import nuclearscience.common.tile.fusionreactor.TileFusionReactorCore; +import nuclearscience.common.tile.fusionreactor.TilePlasma; +import nuclearscience.common.tile.msreactor.TileFreezePlug; +import nuclearscience.common.tile.msreactor.TileHeatExchanger; +import nuclearscience.common.tile.msreactor.TileMSRFuelPreProcessor; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; +import nuclearscience.common.tile.msreactor.TileMoltenSaltSupplier; +import nuclearscience.common.tile.saltpipe.TileMoltenSaltPipe; +import nuclearscience.common.tile.fissionreactor.TileFissionReactorCore; + +public class NuclearScienceBlockTypes { + public static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, References.ID); + + public static final RegistryObject> TILE_GASCENTRIFUGE = BLOCK_ENTITY_TYPES.register("gascentrifuge", () -> new BlockEntityType<>(TileGasCentrifuge::new, Sets.newHashSet(blockGasCentrifuge), null)); + public static final RegistryObject> TILE_CHEMICALBOILER = BLOCK_ENTITY_TYPES.register("nuclearboiler", () -> new BlockEntityType<>(TileNuclearBoiler::new, Sets.newHashSet(blockNuclearBoiler), null)); + public static final RegistryObject> TILE_CHEMICALEXTRACTOR = BLOCK_ENTITY_TYPES.register("chemicalextractor", () -> new BlockEntityType<>(TileChemicalExtractor::new, Sets.newHashSet(blockChemicalExtractor), null)); + public static final RegistryObject> TILE_RADIOISOTOPEGENERATOR = BLOCK_ENTITY_TYPES.register("radioisotopegenerator", () -> new BlockEntityType<>(TileRadioisotopeGenerator::new, Sets.newHashSet(blockRadioisotopeGenerator), null)); + public static final RegistryObject> TILE_MOLTENSALTSUPPLIER = BLOCK_ENTITY_TYPES.register("moltensaltsupplier", () -> new BlockEntityType<>(TileMoltenSaltSupplier::new, Sets.newHashSet(blockMoltenSaltSupplier), null)); + public static final RegistryObject> TILE_FREEZEPLUG = BLOCK_ENTITY_TYPES.register("freezeplug", () -> new BlockEntityType<>(TileFreezePlug::new, Sets.newHashSet(blockFreezePlug), null)); + public static final RegistryObject> TILE_TURBINE = BLOCK_ENTITY_TYPES.register("turbine", () -> new BlockEntityType<>(TileTurbine::new, Sets.newHashSet(blockTurbine), null)); + public static final RegistryObject> TILE_REACTORCORE = BLOCK_ENTITY_TYPES.register("reactorcore", () -> new BlockEntityType<>(TileFissionReactorCore::new, Sets.newHashSet(blockFissionReactorCore), null)); + public static final RegistryObject> TILE_FUSIONREACTORCORE = BLOCK_ENTITY_TYPES.register("fusionreactorcore", () -> new BlockEntityType<>(TileFusionReactorCore::new, Sets.newHashSet(blockFusionReactorCore), null)); + public static final RegistryObject> TILE_PARTICLEINJECTOR = BLOCK_ENTITY_TYPES.register("particleinjector", () -> new BlockEntityType<>(TileParticleInjector::new, Sets.newHashSet(blockParticleInjector), null)); + public static final RegistryObject> TILE_ELECTROMAGNETICSWITCH = BLOCK_ENTITY_TYPES.register("electromagneticswitch", () -> new BlockEntityType<>(TileElectromagneticSwitch::new, Sets.newHashSet(blockElectromagneticSwitch), null)); + public static final RegistryObject> TILE_PLASMA = BLOCK_ENTITY_TYPES.register("plasma", () -> new BlockEntityType<>(TilePlasma::new, Sets.newHashSet(blockPlasma), null)); + public static final RegistryObject> TILE_MELTEDREACTOR = BLOCK_ENTITY_TYPES.register("meltedreactor", () -> new BlockEntityType<>(TileMeltedReactor::new, Sets.newHashSet(blockMeltedReactor), null)); + public static final RegistryObject> TILE_QUANTUMCAPACITOR = BLOCK_ENTITY_TYPES.register("quantumcapacitor", () -> new BlockEntityType<>(TileQuantumCapacitor::new, Sets.newHashSet(blockQuantumCapacitor), null)); + public static final RegistryObject> TILE_FUELREPROCESSOR = BLOCK_ENTITY_TYPES.register("fuelreprocessor", () -> new BlockEntityType<>(TileFuelReprocessor::new, Sets.newHashSet(blockFuelReprocessor), null)); + public static final RegistryObject> TILE_RADIOACTIVEPROCESSOR = BLOCK_ENTITY_TYPES.register("radioactiveprocessor", () -> new BlockEntityType<>(TileRadioactiveProcessor::new, Sets.newHashSet(blockRadioactiveProcessor), null)); + public static final RegistryObject> TILE_MSRFUELPREPROCESSOR = BLOCK_ENTITY_TYPES.register("msrfuelpreprocessor", () -> new BlockEntityType<>(TileMSRFuelPreProcessor::new, Sets.newHashSet(blockMSRFuelPreProcessor), null)); + public static final RegistryObject> TILE_MSRREACTORCORE = BLOCK_ENTITY_TYPES.register("msrreactorcore", () -> new BlockEntityType<>(TileMSReactorCore::new, Sets.newHashSet(blockMSReactorCore), null)); + public static final RegistryObject> TILE_HEATEXCHANGER = BLOCK_ENTITY_TYPES.register("heatexchanger", () -> new BlockEntityType<>(TileHeatExchanger::new, Sets.newHashSet(blockHeatExchanger), null)); + public static final RegistryObject> TILE_TELEPORTER = BLOCK_ENTITY_TYPES.register("teleporter", () -> new BlockEntityType<>(TileTeleporter::new, Sets.newHashSet(blockTeleporter), null)); + public static final RegistryObject> TILE_CONTROLRODASSEMBLY = BLOCK_ENTITY_TYPES.register("controlrodassembly", () -> new BlockEntityType<>(TileControlRodAssembly::new, Sets.newHashSet(blockControlRodAssembly), null)); + public static final RegistryObject> TILE_MOLTENSALTPIPE = BLOCK_ENTITY_TYPES.register("moltensaltpipegenerictile", () -> new BlockEntityType<>(TileMoltenSaltPipe::new, BlockMoltenSaltPipe.PIPESET, null)); + public static final RegistryObject> TILE_SIREN = BLOCK_ENTITY_TYPES.register("siren", () -> new BlockEntityType<>(TileSiren::new, Sets.newHashSet(blockSiren), null)); + public static final RegistryObject> TILE_ATOMICASSEMBLER = BLOCK_ENTITY_TYPES.register("atomicassembler", () -> new BlockEntityType<>(TileAtomicAssembler::new, Sets.newHashSet(blockAtomicAssembler), null)); + +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceBlocks.java b/src/main/java/nuclearscience/registers/NuclearScienceBlocks.java new file mode 100644 index 00000000..921268e0 --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceBlocks.java @@ -0,0 +1,133 @@ +package nuclearscience.registers; + +import static electrodynamics.registers.UnifiedElectrodynamicsRegister.supplier; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import electrodynamics.api.ISubtype; +import electrodynamics.prefab.block.GenericMachineBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MaterialColor; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.common.block.BlockControlRodAssembly; +import nuclearscience.common.block.BlockElectromagnet; +import nuclearscience.common.block.BlockElectromagneticBooster; +import nuclearscience.common.block.BlockElectromagneticSwitch; +import nuclearscience.common.block.BlockFuelReprocessor; +import nuclearscience.common.block.BlockFusionReactorCore; +import nuclearscience.common.block.BlockMSRFuelPreprocessor; +import nuclearscience.common.block.BlockMeltedReactor; +import nuclearscience.common.block.BlockMoltenSaltSupplier; +import nuclearscience.common.block.BlockPlasma; +import nuclearscience.common.block.BlockQuantumCapacitor; +import nuclearscience.common.block.BlockRadioactiveAir; +import nuclearscience.common.block.BlockRadioactiveProcessor; +import nuclearscience.common.block.BlockRadioactiveSoil; +import nuclearscience.common.block.BlockFissionReactorCore; +import nuclearscience.common.block.BlockTeleporter; +import nuclearscience.common.block.BlockTurbine; +import nuclearscience.common.block.connect.BlockMoltenSaltPipe; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.common.tile.TileAtomicAssembler; +import nuclearscience.common.tile.TileChemicalExtractor; +import nuclearscience.common.tile.TileGasCentrifuge; +import nuclearscience.common.tile.TileNuclearBoiler; +import nuclearscience.common.tile.TileParticleInjector; +import nuclearscience.common.tile.TileRadioisotopeGenerator; +import nuclearscience.common.tile.TileSiren; +import nuclearscience.common.tile.msreactor.TileFreezePlug; +import nuclearscience.common.tile.msreactor.TileHeatExchanger; +import nuclearscience.common.tile.msreactor.TileMSRFuelPreProcessor; +import nuclearscience.common.tile.msreactor.TileMSReactorCore; + +public class NuclearScienceBlocks { + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, References.ID); + public static final HashMap> SUBTYPEBLOCKREGISTER_MAPPINGS = new HashMap<>(); + + public static GenericMachineBlock blockGasCentrifuge; + public static GenericMachineBlock blockNuclearBoiler; + public static GenericMachineBlock blockChemicalExtractor; + public static GenericMachineBlock blockRadioisotopeGenerator; + public static BlockTurbine blockTurbine; + public static BlockFissionReactorCore blockFissionReactorCore; + public static BlockElectromagnet blockElectromagnet; + public static BlockElectromagnet blockElectromagneticGlass; + public static BlockElectromagneticBooster blockElectromagneticBooster; + public static BlockElectromagneticSwitch blockElectromagneticSwitch; + public static BlockFusionReactorCore blockFusionReactorCore; + public static BlockPlasma blockPlasma; + public static BlockMeltedReactor blockMeltedReactor; + public static GenericMachineBlock blockParticleInjector; + public static BlockQuantumCapacitor blockQuantumCapacitor; + public static BlockTeleporter blockTeleporter; + public static BlockControlRodAssembly blockControlRodAssembly; + public static BlockFuelReprocessor blockFuelReprocessor; + public static BlockRadioactiveProcessor blockRadioactiveProcessor; + public static BlockMSRFuelPreprocessor blockMSRFuelPreProcessor; + public static GenericMachineBlock blockFreezePlug; + public static GenericMachineBlock blockMSReactorCore; + public static GenericMachineBlock blockHeatExchanger; + public static GenericMachineBlock blockSiren; + public static GenericMachineBlock blockAtomicAssembler; + public static BlockMoltenSaltSupplier blockMoltenSaltSupplier; + public static BlockRadioactiveSoil blockRadioactiveSoil; + public static BlockRadioactiveAir blockRadioactiveAir; + public static Block blocklead; + + static { + BLOCKS.register("gascentrifuge", supplier(() -> blockGasCentrifuge = new GenericMachineBlock(TileGasCentrifuge::new))); + BLOCKS.register("nuclearboiler", supplier(() -> blockNuclearBoiler = new GenericMachineBlock(TileNuclearBoiler::new))); + BLOCKS.register("chemicalextractor", supplier(() -> blockChemicalExtractor = new GenericMachineBlock(TileChemicalExtractor::new))); + BLOCKS.register("radioisotopegenerator", supplier(() -> blockRadioisotopeGenerator = new GenericMachineBlock(TileRadioisotopeGenerator::new))); + BLOCKS.register("freezeplug", supplier(() -> blockFreezePlug = new GenericMachineBlock(TileFreezePlug::new))); + BLOCKS.register("turbine", supplier(() -> blockTurbine = new BlockTurbine())); + BLOCKS.register("reactorcore", supplier(() -> blockFissionReactorCore = new BlockFissionReactorCore())); + BLOCKS.register("electromagnet", supplier(() -> blockElectromagnet = new BlockElectromagnet(false))); + BLOCKS.register("electromagneticglass", supplier(() -> blockElectromagneticGlass = new BlockElectromagnet(true))); + BLOCKS.register("electromagneticbooster", supplier(() -> blockElectromagneticBooster = new BlockElectromagneticBooster())); + BLOCKS.register("electromagneticswitch", supplier(() -> blockElectromagneticSwitch = new BlockElectromagneticSwitch())); + BLOCKS.register("fusionreactorcore", supplier(() -> blockFusionReactorCore = new BlockFusionReactorCore())); + BLOCKS.register("plasma", supplier(() -> blockPlasma = new BlockPlasma())); + BLOCKS.register("particleinjector", supplier(() -> blockParticleInjector = new GenericMachineBlock(TileParticleInjector::new))); + BLOCKS.register("quantumcapacitor", supplier(() -> blockQuantumCapacitor = new BlockQuantumCapacitor())); + BLOCKS.register("teleporter", supplier(() -> blockTeleporter = new BlockTeleporter())); + BLOCKS.register("controlrodassembly", supplier(() -> blockControlRodAssembly = new BlockControlRodAssembly())); + BLOCKS.register("fuelreprocessor", supplier(() -> blockFuelReprocessor = new BlockFuelReprocessor())); + BLOCKS.register("radioactiveprocessor", supplier(() -> blockRadioactiveProcessor = new BlockRadioactiveProcessor())); + BLOCKS.register("msrfuelpreprocessor", supplier(() -> blockMSRFuelPreProcessor = new BlockMSRFuelPreprocessor(TileMSRFuelPreProcessor::new))); + BLOCKS.register("blocklead", supplier(() -> blocklead = new Block(Properties.of(Material.METAL, MaterialColor.COLOR_BLACK).strength(5.0f, 3.0f).sound(SoundType.METAL).requiresCorrectToolForDrops()))); + BLOCKS.register("msrreactorcore", supplier(() -> blockMSReactorCore = new GenericMachineBlock(TileMSReactorCore::new))); + BLOCKS.register("heatexchanger", supplier(() -> blockHeatExchanger = new GenericMachineBlock(TileHeatExchanger::new))); + BLOCKS.register("siren", supplier(() -> blockSiren = new GenericMachineBlock(TileSiren::new))); + BLOCKS.register("atomicassembler", supplier(() -> blockAtomicAssembler = new GenericMachineBlock(TileAtomicAssembler::new))); + BLOCKS.register("moltensaltsupplier", supplier(() -> blockMoltenSaltSupplier = new BlockMoltenSaltSupplier())); + for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { + SUBTYPEBLOCKREGISTER_MAPPINGS.put(subtype, BLOCKS.register(subtype.tag(), supplier(() -> new BlockMoltenSaltPipe(subtype), subtype))); + } + BLOCKS.register("meltedreactor", supplier(() -> blockMeltedReactor = new BlockMeltedReactor())); + BLOCKS.register("radioactiveair", supplier(() -> blockRadioactiveAir = new BlockRadioactiveAir())); + BLOCKS.register("radioactivesoil", supplier(() -> blockRadioactiveSoil = new BlockRadioactiveSoil())); + + } + + public static Block[] getAllBlockForSubtype(ISubtype[] values) { + List list = new ArrayList<>(); + for (ISubtype value : values) { + list.add(SUBTYPEBLOCKREGISTER_MAPPINGS.get(value).get()); + } + return list.toArray(new Block[] {}); + } + + public static Block getBlock(ISubtype value) { + return SUBTYPEBLOCKREGISTER_MAPPINGS.get(value).get(); + } + +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceEntities.java b/src/main/java/nuclearscience/registers/NuclearScienceEntities.java new file mode 100644 index 00000000..90015cc2 --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceEntities.java @@ -0,0 +1,16 @@ +package nuclearscience.registers; + +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.common.entity.EntityParticle; + +public class NuclearScienceEntities { + public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, References.ID); + + public static final RegistryObject> ENTITY_PARTICLE = ENTITIES.register("particle", () -> EntityType.Builder.of(EntityParticle::new, MobCategory.MISC).clientTrackingRange(8).build(References.ID + ".particle")); + +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceFluids.java b/src/main/java/nuclearscience/registers/NuclearScienceFluids.java new file mode 100644 index 00000000..078f6d91 --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceFluids.java @@ -0,0 +1,22 @@ +package nuclearscience.registers; + +import static electrodynamics.registers.UnifiedElectrodynamicsRegister.supplier; + +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import nuclearscience.References; +import nuclearscience.common.fluid.types.FluidAmmonia; +import nuclearscience.common.fluid.types.FluidUraniumHexafluoride; + +public class NuclearScienceFluids { + public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, References.ID); + + public static FluidUraniumHexafluoride fluidUraniumHexafluoride; + public static FluidAmmonia fluidAmmonia; + + static { + FLUIDS.register("fluiduraniumhexafluoride", supplier(() -> fluidUraniumHexafluoride = new FluidUraniumHexafluoride())); + FLUIDS.register("fluidammonia", supplier(() -> fluidAmmonia = new FluidAmmonia())); + } +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceItems.java b/src/main/java/nuclearscience/registers/NuclearScienceItems.java new file mode 100644 index 00000000..a63493c2 --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceItems.java @@ -0,0 +1,149 @@ +package nuclearscience.registers; + +import static electrodynamics.registers.UnifiedElectrodynamicsRegister.supplier; +import static nuclearscience.registers.NuclearScienceBlocks.blockAtomicAssembler; +import static nuclearscience.registers.NuclearScienceBlocks.blockChemicalExtractor; +import static nuclearscience.registers.NuclearScienceBlocks.blockControlRodAssembly; +import static nuclearscience.registers.NuclearScienceBlocks.blockElectromagnet; +import static nuclearscience.registers.NuclearScienceBlocks.blockElectromagneticBooster; +import static nuclearscience.registers.NuclearScienceBlocks.blockElectromagneticGlass; +import static nuclearscience.registers.NuclearScienceBlocks.blockElectromagneticSwitch; +import static nuclearscience.registers.NuclearScienceBlocks.blockFreezePlug; +import static nuclearscience.registers.NuclearScienceBlocks.blockFuelReprocessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockFusionReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockGasCentrifuge; +import static nuclearscience.registers.NuclearScienceBlocks.blockHeatExchanger; +import static nuclearscience.registers.NuclearScienceBlocks.blockMSRFuelPreProcessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockMeltedReactor; +import static nuclearscience.registers.NuclearScienceBlocks.blockMoltenSaltSupplier; +import static nuclearscience.registers.NuclearScienceBlocks.blockMSReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockNuclearBoiler; +import static nuclearscience.registers.NuclearScienceBlocks.blockParticleInjector; +import static nuclearscience.registers.NuclearScienceBlocks.blockPlasma; +import static nuclearscience.registers.NuclearScienceBlocks.blockQuantumCapacitor; +import static nuclearscience.registers.NuclearScienceBlocks.blockRadioactiveProcessor; +import static nuclearscience.registers.NuclearScienceBlocks.blockRadioactiveSoil; +import static nuclearscience.registers.NuclearScienceBlocks.blockRadioisotopeGenerator; +import static nuclearscience.registers.NuclearScienceBlocks.blockFissionReactorCore; +import static nuclearscience.registers.NuclearScienceBlocks.blockSiren; +import static nuclearscience.registers.NuclearScienceBlocks.blockTeleporter; +import static nuclearscience.registers.NuclearScienceBlocks.blockTurbine; +import static nuclearscience.registers.NuclearScienceBlocks.blocklead; +import static nuclearscience.registers.UnifiedNuclearScienceRegister.getSafeBlock; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import electrodynamics.api.ISubtype; +import electrodynamics.common.blockitem.BlockItemDescriptable; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.common.block.subtype.SubtypeMoltenSaltPipe; +import nuclearscience.common.item.ItemAntidote; +import nuclearscience.common.item.ItemCanisterLead; +import nuclearscience.common.item.ItemFrequencyCard; +import nuclearscience.common.item.ItemGeigerCounter; +import nuclearscience.common.item.ItemHazmatArmor; +import nuclearscience.common.item.ItemHazmatArmor.ArmorMaterialHazmat; +import nuclearscience.common.item.ItemRadioactive; + +public class NuclearScienceItems { + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, References.ID); + public static final HashMap> SUBTYPEITEMREGISTER_MAPPINGS = new HashMap<>(); + + static { + ITEMS.register("gascentrifuge", supplier(() -> new BlockItemDescriptable(() -> blockGasCentrifuge, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("nuclearboiler", supplier(() -> new BlockItemDescriptable(() -> blockNuclearBoiler, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("chemicalextractor", supplier(() -> new BlockItemDescriptable(() -> blockChemicalExtractor, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("radioisotopegenerator", supplier(() -> new BlockItemDescriptable(() -> blockRadioisotopeGenerator, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("freezeplug", supplier(() -> new BlockItemDescriptable(() -> blockFreezePlug, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("turbine", supplier(() -> new BlockItemDescriptable(() -> blockTurbine, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("reactorcore", supplier(() -> new BlockItemDescriptable(() -> blockFissionReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("fuelreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockFuelReprocessor, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("radioactiveprocessor", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("msrfuelpreprocessor", supplier(() -> new BlockItemDescriptable(() -> blockMSRFuelPreProcessor, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("blocklead", supplier(() -> new BlockItemDescriptable(() -> blocklead, new BlockItem.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("electromagnet", supplier(() -> new BlockItemDescriptable(() -> blockElectromagnet, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("electromagneticglass", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticGlass, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("electromagneticbooster", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticBooster, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("electromagneticswitch", supplier(() -> new BlockItemDescriptable(() -> blockElectromagneticSwitch, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("fusionreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockFusionReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("plasma", supplier(() -> new BlockItemDescriptable(() -> blockPlasma, new Item.Properties()))); + ITEMS.register("particleinjector", supplier(() -> new BlockItemDescriptable(() -> blockParticleInjector, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("quantumcapacitor", supplier(() -> new BlockItemDescriptable(() -> blockQuantumCapacitor, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("teleporter", supplier(() -> new BlockItemDescriptable(() -> blockTeleporter, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("controlrodassembly", supplier(() -> new BlockItemDescriptable(() -> blockControlRodAssembly, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("msrreactorcore", supplier(() -> new BlockItemDescriptable(() -> blockMSReactorCore, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("heatexchanger", supplier(() -> new BlockItemDescriptable(() -> blockHeatExchanger, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("moltensaltsupplier", supplier(() -> new BlockItemDescriptable(() -> blockMoltenSaltSupplier, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("siren", supplier(() -> new BlockItemDescriptable(() -> blockSiren, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("atomicassembler", supplier(() -> new BlockItemDescriptable(() -> blockAtomicAssembler, new Item.Properties().tab(References.NUCLEARTAB)))); + for (SubtypeMoltenSaltPipe subtype : SubtypeMoltenSaltPipe.values()) { + SUBTYPEITEMREGISTER_MAPPINGS.put(subtype, ITEMS.register(subtype.tag(), supplier(() -> new BlockItemDescriptable(() -> getSafeBlock(subtype), new Item.Properties().tab(References.NUCLEARTAB)), subtype))); + } + ITEMS.register("radioactivesoil", supplier(() -> new BlockItemDescriptable(() -> blockRadioactiveSoil, new Item.Properties().tab(References.NUCLEARTAB)))); + ITEMS.register("meltedreactor", supplier(() -> new BlockItemDescriptable(() -> blockMeltedReactor, new Item.Properties().tab(References.NUCLEARTAB)))); + } + + public static final RegistryObject ITEM_URANIUM235 = ITEMS.register("uranium235", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_URANIUM238 = ITEMS.register("uranium238", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_PLUTONIUM239 = ITEMS.register("plutonium239", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_POLONIUM210 = ITEMS.register("polonium210", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_POLONIUM210_CHUNK = ITEMS.register("polonium210chunk", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_ACTINIUM225 = ITEMS.register("actinium225", () -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB))); + public static final RegistryObject ITEM_LIFHT4PUF3 = ITEMS.register("lifthf4uf4", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_FLINAK = ITEMS.register("flinak", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_YELLOWCAKE = ITEMS.register("yellowcake", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_FISSILEDUST = ITEMS.register("fissiledust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_FISSILE_SALT = ITEMS.register("fissilesalt", () -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB))); + public static final RegistryObject ITEM_PLUTONIUMOXIDE = ITEMS.register("plutoniumoxide", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_THORIANITEDUST = ITEMS.register("thorianitedust", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_ACTINIUMOXIDE = ITEMS.register("actiniumoxide", () -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB))); + + public static final RegistryObject ITEM_CELLEMPTY = ITEMS.register("cellempty", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLDEUTERIUM = ITEMS.register("celldeuterium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLTRITIUM = ITEMS.register("celltritium", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLHEAVYWATER = ITEMS.register("cellheavywater", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLELECTROMAGNETIC = ITEMS.register("cellelectromagnetic", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLANTIMATTERSMALL = ITEMS.register("cellantimattersmall", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLANTIMATTERLARGE = ITEMS.register("cellantimatterlarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLANTIMATTERVERYLARGE = ITEMS.register("cellantimatterverylarge", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CELLDARKMATTER = ITEMS.register("celldarkmatter", supplier(() -> new Item(new Item.Properties().tab(References.NUCLEARTAB).defaultDurability(4)))); + public static final RegistryObject ITEM_FUELHEUO2 = ITEMS.register("fuelheuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(24000)))); + public static final RegistryObject ITEM_FUELLEUO2 = ITEMS.register("fuelleuo2", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_FUELSPENT = ITEMS.register("fuelspent", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1)))); + // Incredibly long life-span, but hard to get + public static final RegistryObject ITEM_FUELPLUTONIUM = ITEMS.register("fuelplutonium", supplier(() -> new ItemRadioactive(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(120000)))); + + public static final RegistryObject ITEM_GEIGERCOUNTER = ITEMS.register("geigercounter", supplier(() -> new ItemGeigerCounter(new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_HAZMATBOOTS = ITEMS.register("hazmatboots", supplier(() -> new ItemHazmatArmor(EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_HAZMATHELMET = ITEMS.register("hazmathelmet", supplier(() -> new ItemHazmatArmor(EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_HAZMATLEGS = ITEMS.register("hazmatlegs", supplier(() -> new ItemHazmatArmor(EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_HAZMATPLATE = ITEMS.register("hazmatplate", supplier(() -> new ItemHazmatArmor(EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000)))); + public static final RegistryObject ITEM_REINFORCEDHAZMATBOOTS = ITEMS.register("reinforcedhazmatboots", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.FEET, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); + public static final RegistryObject ITEM_REINFORCEDHAZMATHELMET = ITEMS.register("reinforcedhazmathelmet", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.HEAD, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); + public static final RegistryObject ITEM_REINFORCEDHAZMATLEGS = ITEMS.register("reinforcedhazmatlegs", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.LEGS, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); + public static final RegistryObject ITEM_REINFORCEDHAZMATPLATE = ITEMS.register("reinforcedhazmatplate", supplier(() -> new ItemHazmatArmor(ArmorMaterialHazmat.reinforcedhazmat, EquipmentSlot.CHEST, new Item.Properties().tab(References.NUCLEARTAB).stacksTo(1).defaultDurability(26000 * 5)))); + public static final RegistryObject ITEM_ANTIDOTE = ITEMS.register("antidote", supplier(() -> new ItemAntidote(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_FREQUENCYCARD = ITEMS.register("frequencycard", supplier(() -> new ItemFrequencyCard(new Item.Properties().tab(References.NUCLEARTAB)))); + public static final RegistryObject ITEM_CANISTERLEAD = ITEMS.register("canisterlead", supplier(() -> new ItemCanisterLead(new Item.Properties().stacksTo(1).tab(References.NUCLEARTAB)))); + + public static Item[] getAllItemForSubtype(ISubtype[] values) { + List list = new ArrayList<>(); + for (ISubtype value : values) { + list.add(SUBTYPEITEMREGISTER_MAPPINGS.get(value).get()); + } + return list.toArray(new Item[] {}); + } + + public static Item getItem(ISubtype value) { + return SUBTYPEITEMREGISTER_MAPPINGS.get(value).get(); + } + +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceMenuTypes.java b/src/main/java/nuclearscience/registers/NuclearScienceMenuTypes.java new file mode 100644 index 00000000..480cbf8d --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceMenuTypes.java @@ -0,0 +1,39 @@ +package nuclearscience.registers; + +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; +import nuclearscience.common.inventory.container.ContainerAtomicAssembler; +import nuclearscience.common.inventory.container.ContainerChemicalExtractor; +import nuclearscience.common.inventory.container.ContainerFreezePlug; +import nuclearscience.common.inventory.container.ContainerGasCentrifuge; +import nuclearscience.common.inventory.container.ContainerMSRFuelPreProcessor; +import nuclearscience.common.inventory.container.ContainerMSRReactorCore; +import nuclearscience.common.inventory.container.ContainerMoltenSaltSupplier; +import nuclearscience.common.inventory.container.ContainerNuclearBoiler; +import nuclearscience.common.inventory.container.ContainerParticleInjector; +import nuclearscience.common.inventory.container.ContainerQuantumCapacitor; +import nuclearscience.common.inventory.container.ContainerRadioactiveProcessor; +import nuclearscience.common.inventory.container.ContainerRadioisotopeGenerator; +import nuclearscience.common.inventory.container.ContainerReactorCore; + +public class NuclearScienceMenuTypes { + public static final DeferredRegister> MENU_TYPES = DeferredRegister.create(ForgeRegistries.CONTAINERS, References.ID); + + public static final RegistryObject> CONTAINER_GASCENTRIFUGE = MENU_TYPES.register("gascentrifuge", () -> new MenuType<>(ContainerGasCentrifuge::new)); + public static final RegistryObject> CONTAINER_NUCLEARBOILER = MENU_TYPES.register("nuclearboiler", () -> new MenuType<>(ContainerNuclearBoiler::new)); + public static final RegistryObject> CONTAINER_CHEMICALEXTRACTOR = MENU_TYPES.register("chemicalextractor", () -> new MenuType<>(ContainerChemicalExtractor::new)); + public static final RegistryObject> CONTAINER_RADIOISOTOPEGENERATOR = MENU_TYPES.register("radioisotopegenerator", () -> new MenuType<>(ContainerRadioisotopeGenerator::new)); + public static final RegistryObject> CONTAINER_FREEZEPLUG = MENU_TYPES.register("freezeplug", () -> new MenuType<>(ContainerFreezePlug::new)); + public static final RegistryObject> CONTAINER_REACTORCORE = MENU_TYPES.register("reactorcore", () -> new MenuType<>(ContainerReactorCore::new)); + public static final RegistryObject> CONTAINER_PARTICLEINJECTOR = MENU_TYPES.register("particleinjetor", () -> new MenuType<>(ContainerParticleInjector::new)); + public static final RegistryObject> CONTAINER_QUANTUMCAPACITOR = MENU_TYPES.register("quantumcapacitor", () -> new MenuType<>(ContainerQuantumCapacitor::new)); + public static final RegistryObject> CONTAINER_RADIOACTIVEPROCESSOR = MENU_TYPES.register("radioactiveprocessor", () -> new MenuType<>(ContainerRadioactiveProcessor::new)); + public static final RegistryObject> CONTAINER_MSRFUELPREPROCESSOR = MENU_TYPES.register("msrfuelpreprocessor", () -> new MenuType<>(ContainerMSRFuelPreProcessor::new)); + public static final RegistryObject> CONTAINER_MSRREACTORCORE = MENU_TYPES.register("msrreactorcore", () -> new MenuType<>(ContainerMSRReactorCore::new)); + public static final RegistryObject> CONTAINER_MOLTENSALTSUPPLIER = MENU_TYPES.register("moltensaltsupplier", () -> new MenuType<>(ContainerMoltenSaltSupplier::new)); + public static final RegistryObject> CONTAINER_ATOMICASSEMBLER = MENU_TYPES.register("atomicassembler", () -> new MenuType<>(ContainerAtomicAssembler::new)); + +} diff --git a/src/main/java/nuclearscience/registers/NuclearScienceSounds.java b/src/main/java/nuclearscience/registers/NuclearScienceSounds.java new file mode 100644 index 00000000..75278a54 --- /dev/null +++ b/src/main/java/nuclearscience/registers/NuclearScienceSounds.java @@ -0,0 +1,23 @@ +package nuclearscience.registers; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import nuclearscience.References; + +public class NuclearScienceSounds { + + public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, References.ID); + + public static final RegistryObject SOUND_TURBINE = sound("turbine"); + public static final RegistryObject SOUND_NUCLEARBOILER = sound("nuclearboiler"); + public static final RegistryObject SOUND_GASCENTRIFUGE = sound("gascentrifuge"); + public static final RegistryObject SOUND_SIREN = sound("siren"); + public static final RegistryObject SOUND_GEIGER = sound("geiger"); + + private static RegistryObject sound(String name) { + return SOUNDS.register(name, () -> new SoundEvent(new ResourceLocation(References.ID + ":" + name))); + } +} diff --git a/src/main/java/nuclearscience/registers/UnifiedNuclearScienceRegister.java b/src/main/java/nuclearscience/registers/UnifiedNuclearScienceRegister.java new file mode 100644 index 00000000..db0e1bdc --- /dev/null +++ b/src/main/java/nuclearscience/registers/UnifiedNuclearScienceRegister.java @@ -0,0 +1,47 @@ +package nuclearscience.registers; + +import static nuclearscience.registers.NuclearScienceBlocks.SUBTYPEBLOCKREGISTER_MAPPINGS; + +import electrodynamics.api.ISubtype; +import electrodynamics.common.blockitem.BlockItemDescriptable; +import electrodynamics.prefab.utilities.ElectroTextUtils; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.eventbus.api.IEventBus; + +public class UnifiedNuclearScienceRegister { + public static void register(IEventBus bus) { + NuclearScienceBlocks.BLOCKS.register(bus); + NuclearScienceItems.ITEMS.register(bus); + NuclearScienceBlockTypes.BLOCK_ENTITY_TYPES.register(bus); + NuclearScienceMenuTypes.MENU_TYPES.register(bus); + NuclearScienceFluids.FLUIDS.register(bus); + NuclearScienceEntities.ENTITIES.register(bus); + NuclearScienceSounds.SOUNDS.register(bus); + } + + static { + // Machines + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockGasCentrifuge, ElectroTextUtils.voltageTooltip(240)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockNuclearBoiler, ElectroTextUtils.voltageTooltip(240)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockChemicalExtractor, ElectroTextUtils.voltageTooltip(240)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockParticleInjector, ElectroTextUtils.voltageTooltip(960)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockTeleporter, ElectroTextUtils.voltageTooltip(480)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockFuelReprocessor, ElectroTextUtils.voltageTooltip(480)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockRadioactiveProcessor, ElectroTextUtils.voltageTooltip(480)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockMSRFuelPreProcessor, ElectroTextUtils.voltageTooltip(240)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockMoltenSaltSupplier, ElectroTextUtils.voltageTooltip(120)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockFusionReactorCore, ElectroTextUtils.voltageTooltip(480)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockFreezePlug, ElectroTextUtils.voltageTooltip(120)); + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockAtomicAssembler, ElectroTextUtils.voltageTooltip(480)); + + // Generators + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockRadioisotopeGenerator, ElectroTextUtils.voltageTooltip(120)); + + // Misc + BlockItemDescriptable.addDescription(() -> NuclearScienceBlocks.blockQuantumCapacitor, ElectroTextUtils.voltageTooltip(1920)); + } + + public static Block getSafeBlock(ISubtype type) { + return SUBTYPEBLOCKREGISTER_MAPPINGS.get(type).get(); + } +} diff --git a/src/main/resources/assets/nuclearscience/blockstates/atomicassembler.json b/src/main/resources/assets/nuclearscience/blockstates/atomicassembler.json deleted file mode 100644 index 868f5627..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/atomicassembler.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "forge_marker": 1, - "variants": { - "facing=west": { - "model": "nuclearscience:block/atomicassembler", - "y": 90 - }, - "facing=south": { - "model": "nuclearscience:block/atomicassembler", - "y": 0 - }, - "facing=north": { - "model": "nuclearscience:block/atomicassembler", - "y": 180 - }, - "facing=east": { - "model": "nuclearscience:block/atomicassembler", - "y": 270 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/chemicalextractor.json b/src/main/resources/assets/nuclearscience/blockstates/chemicalextractor.json deleted file mode 100644 index fc40e084..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/chemicalextractor.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "forge_marker": 1, - "variants": { - "facing=west": { - "model": "nuclearscience:block/chemicalextractor", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/chemicalextractor", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/chemicalextractor", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/chemicalextractor", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/controlrodassembly.json b/src/main/resources/assets/nuclearscience/blockstates/controlrodassembly.json deleted file mode 100644 index 26417844..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/controlrodassembly.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/controlrodassembly", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/controlrodassembly", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/controlrodassembly", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/controlrodassembly", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/electromagneticbooster.json b/src/main/resources/assets/nuclearscience/blockstates/electromagneticbooster.json deleted file mode 100644 index d5061937..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/electromagneticbooster.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "variants": { - "facing=west,side=none": { - "model": "nuclearscience:block/electromagneticbooster", - "y": 270 - }, - "facing=south,side=none": { - "model": "nuclearscience:block/electromagneticbooster", - "y": 180 - }, - "facing=north,side=none": { - "model": "nuclearscience:block/electromagneticbooster", - "y": 0 - }, - "facing=east,side=none": { - "model": "nuclearscience:block/electromagneticbooster", - "y": 90 - }, - "facing=west,side=right": { - "model": "nuclearscience:block/electromagneticboosterright", - "y": 270 - }, - "facing=south,side=right": { - "model": "nuclearscience:block/electromagneticboosterright", - "y": 180 - }, - "facing=north,side=right": { - "model": "nuclearscience:block/electromagneticboosterright", - "y": 0 - }, - "facing=east,side=right": { - "model": "nuclearscience:block/electromagneticboosterright", - "y": 90 - }, - "facing=west,side=left": { - "model": "nuclearscience:block/electromagneticboosterleft", - "y": 270 - }, - "facing=south,side=left": { - "model": "nuclearscience:block/electromagneticboosterleft", - "y": 180 - }, - "facing=north,side=left": { - "model": "nuclearscience:block/electromagneticboosterleft", - "y": 0 - }, - "facing=east,side=left": { - "model": "nuclearscience:block/electromagneticboosterleft", - "y": 90 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/freezeplug.json b/src/main/resources/assets/nuclearscience/blockstates/freezeplug.json deleted file mode 100644 index 22facbb9..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/freezeplug.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "forge_marker": 1, - "variants": { - "facing=west": { - "model": "nuclearscience:block/freezeplug", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/freezeplug", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/freezeplug", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/freezeplug", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/fuelreprocessor.json b/src/main/resources/assets/nuclearscience/blockstates/fuelreprocessor.json deleted file mode 100644 index c6954fd7..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/fuelreprocessor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/fuelreprocessor", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/fuelreprocessor", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/fuelreprocessor", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/fuelreprocessor", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/fusionreactorcore.json b/src/main/resources/assets/nuclearscience/blockstates/fusionreactorcore.json deleted file mode 100644 index c30217b6..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/fusionreactorcore.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/fusionreactorcore", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/fusionreactorcore", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/fusionreactorcore", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/fusionreactorcore", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/gascentrifuge.json b/src/main/resources/assets/nuclearscience/blockstates/gascentrifuge.json deleted file mode 100644 index 97214fda..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/gascentrifuge.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/gascentrifugeoutline", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/gascentrifugeoutline", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/gascentrifugeoutline", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/gascentrifugeoutline", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/heatexchanger.json b/src/main/resources/assets/nuclearscience/blockstates/heatexchanger.json deleted file mode 100644 index a942b1f8..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/heatexchanger.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=east": { - "model": "nuclearscience:block/heatexchanger", - "y": 0 - }, - "facing=north": { - "model": "nuclearscience:block/heatexchanger", - "y": 270 - }, - "facing=south": { - "model": "nuclearscience:block/heatexchanger", - "y": 90 - }, - "facing=west": { - "model": "nuclearscience:block/heatexchanger", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json b/src/main/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json deleted file mode 100644 index f1a7564c..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/moltensaltpipevanadiumsteelceramic.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "multipart": [ - { - "when": { - "down": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none", - "x": 90, - "uvlock": true - } - }, - { - "when": { - "OR": [ - { - "down": "wire" - }, - { - "down": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side", - "x": 90, - "uvlock": true - } - }, - { - "when": { - "up": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none", - "x": 270, - "uvlock": true - } - }, - { - "when": { - "OR": [ - { - "up": "wire" - }, - { - "up": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side", - "x": 270, - "uvlock": true - } - }, - { - "when": { - "north": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none" - } - }, - { - "when": { - "OR": [ - { - "north": "wire" - }, - { - "north": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side" - } - }, - { - "when": { - "south": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "OR": [ - { - "south": "wire" - }, - { - "south": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "OR": [ - { - "west": "wire" - }, - { - "west": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "east": "none" - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_none", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "OR": [ - { - "east": "wire" - }, - { - "east": "inventory" - } - ] - }, - "apply": { - "model": "nuclearscience:pipe/moltensaltpipevanadiumsteelceramic_side", - "y": 90, - "uvlock": true - } - } - ] -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json b/src/main/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json deleted file mode 100644 index d9f6df10..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/moltensaltsupplier.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=east": { - "model": "nuclearscience:block/moltensaltsupplier", - "y": 0 - }, - "facing=north": { - "model": "nuclearscience:block/moltensaltsupplier", - "y": 270 - }, - "facing=south": { - "model": "nuclearscience:block/moltensaltsupplier", - "y": 90 - }, - "facing=west": { - "model": "nuclearscience:block/moltensaltsupplier", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json b/src/main/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json deleted file mode 100644 index 92960ddd..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/msrfuelpreprocessor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/msrfuelpreprocessor", - "y": 180 - }, - "facing=south": { - "model": "nuclearscience:block/msrfuelpreprocessor", - "y": 90 - }, - "facing=north": { - "model": "nuclearscience:block/msrfuelpreprocessor", - "y": 270 - }, - "facing=east": { - "model": "nuclearscience:block/msrfuelpreprocessor", - "y": 0 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/msrreactorcore.json b/src/main/resources/assets/nuclearscience/blockstates/msrreactorcore.json deleted file mode 100644 index 5ff1863c..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/msrreactorcore.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "forge_marker": 1, - "variants": { - "facing=west": { - "model": "nuclearscience:block/msrreactorcore", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/msrreactorcore", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/msrreactorcore", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/msrreactorcore", - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/nuclearboiler.json b/src/main/resources/assets/nuclearscience/blockstates/nuclearboiler.json deleted file mode 100644 index 47015d8c..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/nuclearboiler.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/nuclearboiler", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/nuclearboiler", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/nuclearboiler", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/nuclearboiler", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/particleinjector.json b/src/main/resources/assets/nuclearscience/blockstates/particleinjector.json deleted file mode 100644 index 0054bddd..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/particleinjector.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/particleinjector", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/particleinjector", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/particleinjector", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/particleinjector", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/quantumcapacitor.json b/src/main/resources/assets/nuclearscience/blockstates/quantumcapacitor.json deleted file mode 100644 index 1a2731e6..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/quantumcapacitor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=east": { - "model": "nuclearscience:block/quantumcapacitor", - "y": 0 - }, - "facing=north": { - "model": "nuclearscience:block/quantumcapacitor", - "y": 270 - }, - "facing=south": { - "model": "nuclearscience:block/quantumcapacitor", - "y": 90 - }, - "facing=west": { - "model": "nuclearscience:block/quantumcapacitor", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/radioactiveair.json b/src/main/resources/assets/nuclearscience/blockstates/radioactiveair.json deleted file mode 100644 index f68bb706..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/radioactiveair.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "nuclearscience:block/blocklead" - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json b/src/main/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json deleted file mode 100644 index c0913a0a..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/radioactiveprocessor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/radioactiveprocessor", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/radioactiveprocessor", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/radioactiveprocessor", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/radioactiveprocessor", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/radioactivesoil.json b/src/main/resources/assets/nuclearscience/blockstates/radioactivesoil.json deleted file mode 100644 index 98f0d0da..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/radioactivesoil.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants" : { - "snowy=false" : [ { - "model" : "nuclearscience:block/radioactivesoil" - }, { - "model" : "nuclearscience:block/radioactivesoil", - "y" : 90 - }, { - "model" : "nuclearscience:block/radioactivesoil", - "y" : 180 - }, { - "model" : "nuclearscience:block/radioactivesoil", - "y" : 270 - } ], - "snowy=true" : { - "model" : "minecraft:block/grass_block_snow" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json b/src/main/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json deleted file mode 100644 index def75946..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/radioisotopegenerator.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/radioisotopegenerator", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/radioisotopegenerator", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/radioisotopegenerator", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/radioisotopegenerator", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/reactorcore.json b/src/main/resources/assets/nuclearscience/blockstates/reactorcore.json deleted file mode 100644 index adc9d31b..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/reactorcore.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=west": { - "model": "nuclearscience:block/reactorcore", - "y": 0 - }, - "facing=south": { - "model": "nuclearscience:block/reactorcore", - "y": 270 - }, - "facing=north": { - "model": "nuclearscience:block/reactorcore", - "y": 90 - }, - "facing=east": { - "model": "nuclearscience:block/reactorcore", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/teleporter.json b/src/main/resources/assets/nuclearscience/blockstates/teleporter.json deleted file mode 100644 index e121d072..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/teleporter.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "facing=east": { - "model": "nuclearscience:block/teleporter", - "y": 0 - }, - "facing=north": { - "model": "nuclearscience:block/teleporter", - "y": 270 - }, - "facing=south": { - "model": "nuclearscience:block/teleporter", - "y": 90 - }, - "facing=west": { - "model": "nuclearscience:block/teleporter", - "y": 180 - } - } -} diff --git a/src/main/resources/assets/nuclearscience/blockstates/turbine.json b/src/main/resources/assets/nuclearscience/blockstates/turbine.json deleted file mode 100644 index b90b1547..00000000 --- a/src/main/resources/assets/nuclearscience/blockstates/turbine.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "render=false": { - "model": "nuclearscience:block/turbinecasing" - }, - "render=true": { - "model": "nuclearscience:block/turbinecasing" - } - } -} diff --git a/src/main/resources/assets/nuclearscience/lang/en_us.json b/src/main/resources/assets/nuclearscience/lang/en_us.json deleted file mode 100644 index 187542e4..00000000 --- a/src/main/resources/assets/nuclearscience/lang/en_us.json +++ /dev/null @@ -1,544 +0,0 @@ -{ - "item.nuclearscience.uranium235" : "Uranium-235", - "item.nuclearscience.uranium238" : "Uranium-238", - "item.nuclearscience.lifthf4uf4" : "LiF-ThF4-UF4 Salt", - "item.nuclearscience.flinak" : "FLiNaK Salt", - "item.nuclearscience.yellowcake" : "Yellowcake", - "item.nuclearscience.fissiledust" : "Fissile Dust", - "item.nuclearscience.plutoniumoxide" : "Plutonium Tetroxide", - "item.nuclearscience.plutonium239" : "Plutonium-239", - "item.nuclearscience.polonium210" : "Polonium-210", - "item.nuclearscience.polonium210chunk" : "Polonium-210 Chunk", - "item.nuclearscience.thorianitedust" : "Thorianite Dust", - "item.nuclearscience.cellempty" : "Empty Cell", - "item.nuclearscience.celldeuterium" : "Deuterium Cell", - "item.nuclearscience.cellheavywater" : "Heavy Water Cell", - "item.nuclearscience.celltritium" : "Tritium Cell", - "item.nuclearscience.cellelectromagnetic" : "Electromagnetic Cell", - "item.nuclearscience.cellantimattersmall" : "Antimatter Cell 500 mg", - "item.nuclearscience.cellantimatterlarge" : "Antimatter Cell 4 g", - "item.nuclearscience.cellantimatterverylarge" : "Antimatter Cell 12 g", - "item.nuclearscience.celldarkmatter" : "Darkmatter Cell", - "item.nuclearscience.fuelheuo2" : "Highly Enriched Fuel Rod", - "item.nuclearscience.fuelleuo2" : "Low Enriched Fuel Rod", - "item.nuclearscience.fuelspent" : "Spent Fuel Rod", - "item.nuclearscience.fuelplutonium" : "Plutonium Fuel Rod", - "item.nuclearscience.geigercounter" : "Geiger Counter", - "item.nuclearscience.hazmatboots" : "Hazmat Boots", - "item.nuclearscience.hazmathelmet" : "Hazmat Helmet", - "item.nuclearscience.hazmatlegs" : "Hazmat Leggings", - "item.nuclearscience.hazmatplate" : "Hazmat Chestplate", - "item.nuclearscience.reinforcedhazmatboots" : "Reinforced Hazmat Boots", - "item.nuclearscience.reinforcedhazmathelmet" : "Reinforced Hazmat Helmet", - "item.nuclearscience.reinforcedhazmatlegs" : "Reinforced Hazmat Leggings", - "item.nuclearscience.reinforcedhazmatplate" : "Reinforced Hazmat Chestplate", - "item.nuclearscience.antidote" : "Antidote", - "item.nuclearscience.canisterlead" : "Lead-Lined Canister", - "item.nuclearscience.frequencycard" : "Frequency Card", - "block.nuclearscience.gascentrifuge" : "Gas Centrifuge", - "block.nuclearscience.nuclearboiler" : "Nuclear Boiler", - "block.nuclearscience.chemicalextractor" : "Chemical Extractor", - "block.nuclearscience.radioisotopegenerator" : "Radioisotope Generator", - "block.nuclearscience.freezeplug" : "Freeze Plug", - "block.nuclearscience.turbine" : "Steam Turbine", - "block.nuclearscience.reactorcore" : "Fission Reactor Core", - "block.nuclearscience.electromagnet" : "Electromagnet", - "block.nuclearscience.electromagneticglass" : "Electromagnetic Glass", - "block.nuclearscience.electromagneticbooster" : "Electromagnetic Booster", - "block.nuclearscience.electromagneticswitch" : "Electromagnetic Switch", - "block.nuclearscience.fusionreactorcore" : "Fusion Reactor Core", - "block.nuclearscience.fuelreprocessor" : "Fuel Reprocessor", - "block.nuclearscience.radioactiveprocessor" : "Radioactive Processor", - "block.nuclearscience.msrfuelpreprocessor" : "MSR Fuel Preprocessor", - "block.nuclearscience.plasma" : "Plasma", - "block.nuclearscience.particleinjector" : "Particle Injector", - "block.nuclearscience.quantumcapacitor" : "Quantum Capacitor", - "block.nuclearscience.teleporter" : "Teleporter", - "block.nuclearscience.controlrodassembly" : "Control Rod Assembly", - "block.nuclearscience.blocklead" : "Ceramic-Lead Radiation Shielding", - "block.nuclearscience.msrreactorcore" : "MSR Reactor Core", - "block.nuclearscience.heatexchanger" : "Heat Exchanger", - "block.nuclearscience.moltensaltpipevanadiumsteelceramic" : "VS-Ceramic pipe", - "block.nuclearscience.moltensaltsupplier" : "Molten Salt Supplier", - "block.nuclearscience.radioactivesoil" : "Radioactive Soil", - "block.nuclearscience.meltedreactor" : "Melted Reactor", - "block.nuclearscience.siren" : "Siren", - "block.nuclearscience.atomicassembler" : "Atomic Assembler", - "container.gascentrifuge" : "Gas Centrifuge", - "container.nuclearboiler" : "Nuclear Boiler", - "container.chemicalextractor" : "Chemical Extractor", - "container.radioisotopegenerator" : "Radioisotope Generator", - "container.reactorcore" : "Reactor Core", - "container.particleinjector" : "Particle Injector", - "container.quantumcapacitor" : "Quantum Capacitor", - "container.fuelreprocessor" : "Fuel Reprocessor", - "container.radioactiveprocessor" : "Radioactive Processor", - "container.msrfuelpreprocessor" : "MSR Fuel Preprocessor", - "container.freezeplug" : "Freeze Plug", - "container.msrreactorcore" : "MSR Reactor Core", - "container.moltensaltsupplier" : "Molten Salt Supplier", - "container.atomicassembler" : "Atomic Assembler", - "gui.machine.usage" : "Usage: %s", - "gui.machine.voltage" : "Voltage: %s", - "gui.machine.output" : "Output: %s", - "gui.machine.current" : "Current: %s", - "gui.machine.transfer" : "Output: %s", - "gui.machine.stored" : "Stored: %s", - "gui.particleinjector.charge" : "Charge: %s", - "gui.particleinjector.matter" : "Matter", - "gui.particleinjector.cells" : "Cells", - "gui.reactorcore.deuterium" : "Deuterium", - "gui.reactorcore.temperature" : "Temp: %s", - "gui.reactorcore.warning" : "OVERHEATING!", - "gui.msrreactorcore.fuel" : "Fuel amount (mb): %s", - "gui.msrreactorcore.nofreezeplug" : "Can't find freeze-plug!", - "itemGroup.itemgroupnuclearscience" : "Nuclear Science", - "death.attack.radiation" : "%s just did a speedrun of evolution!", - "death.attack.plasma" : "%s was ionized!", - "effect.nuclearscience.radiation" : "Radiation", - "message.geigercounter.text" : "%s Rads per hour", - "tooltip.voltage.120" : "Voltage: 120 Volts", - "tooltip.voltage.240" : "Voltage: 240 Volts", - "tooltip.voltage.480" : "Voltage: 480 Volts", - "tooltip.voltage.960" : "Voltage: 960 Volts", - "tooltip.voltage.1920" : "Voltage: 1.92 kV", - "tooltip.frequencycard.linked" : "Linked to %s", - "tooltip.frequencycard.notag" : "No link", - "fluid.nuclearscience.uraniumhexafluoride" : "Uranium Hexafluoride", - "fluid.nuclearscience.ammonia" : "Ammonia", - "subtitles.nuclearscience.gascentrifuge" : "Gas Centrifuge spins", - "subtitles.nuclearscience.nuclearboiler" : "Nuclear Boiler boils", - "subtitles.nuclearscience.turbine" : "Turbine spins", - "subtitles.nuclearscience.siren" : "Siren blares!", - "subtitles.nuclearscience.geiger" : "Geiger Counter ticks!", - - "guidebook.nuclearscience.moduletitle" : "Nuclear Science", - - "guidebook.nuclearscience.chapter.radiation" : "Radiation", - "guidebook.nuclearscience.chapter.radiation.p1l1" : " Radiation is one of the ", - "guidebook.nuclearscience.chapter.radiation.p1l2" : "key mechanics of Nuclear ", - "guidebook.nuclearscience.chapter.radiation.p1l3" : "Science. Many items are ", - "guidebook.nuclearscience.chapter.radiation.p1l4" : "radioactive and will harm you ", - "guidebook.nuclearscience.chapter.radiation.p1l5" : "if not handled with the proper ", - "guidebook.nuclearscience.chapter.radiation.p1l6" : "equipment. These include: ", - "guidebook.nuclearscience.chapter.radiation.p1l7" : " Uranium 235 ", - "guidebook.nuclearscience.chapter.radiation.p1l8" : " Uranium 238 ", - "guidebook.nuclearscience.chapter.radiation.p1l9" : " Yellowcake ", - "guidebook.nuclearscience.chapter.radiation.p1l10" : " Highly Enriched Fuel Rod ", - "guidebook.nuclearscience.chapter.radiation.p1l11" : " Low Enriched Fuel Rod ", - "guidebook.nuclearscience.chapter.radiation.p1l12" : " Fissile Dust ", - "guidebook.nuclearscience.chapter.radiation.p1l13" : " Plutonium Tetroxide ", - "guidebook.nuclearscience.chapter.radiation.p1l14" : " Plutonium 239 ", - "guidebook.nuclearscience.chapter.radiation.p1l15" : " Thorianite Dust ", - - "guidebook.nuclearscience.chapter.radiation.p2l1" : " Polonium 210 ", - "guidebook.nuclearscience.chapter.radiation.p2l2" : " Polonium 210 Chunk ", - "guidebook.nuclearscience.chapter.radiation.p2l3" : "To avoid getting radiation ", - "guidebook.nuclearscience.chapter.radiation.p2l4" : "poisoning, you will need to ", - "guidebook.nuclearscience.chapter.radiation.p2l5-1" : "wear a full", - "guidebook.nuclearscience.chapter.radiation.p2l5-2" : "Hazmat Suit.", - "guidebook.nuclearscience.chapter.radiation.p2l6" : "The suit will take damage when ", - "guidebook.nuclearscience.chapter.radiation.p2l7" : "protecting you, so make sure ", - "guidebook.nuclearscience.chapter.radiation.p2l8" : "to use it sparingly. ", - "guidebook.nuclearscience.chapter.radiation.p2l9" : " However, what if you forget ", - "guidebook.nuclearscience.chapter.radiation.p2l10" : "your hazmat suit? No fear, for ", - "guidebook.nuclearscience.chapter.radiation.p2l11" : "there is a solution to that ", - "guidebook.nuclearscience.chapter.radiation.p2l12" : "too! If you are suffering from ", - "guidebook.nuclearscience.chapter.radiation.p2l13" : "radiation poisoning, you can ", - "guidebook.nuclearscience.chapter.radiation.p2l14-1" : "take some", - "guidebook.nuclearscience.chapter.radiation.p2l14-2" : "Antidote", - "guidebook.nuclearscience.chapter.radiation.p2l14-3" : "and it", - "guidebook.nuclearscience.chapter.radiation.p2l15" : "will remove the effect. ", - - "guidebook.nuclearscience.chapter.fissionreactor" : "Fission Reactor", - "guidebook.nuclearscience.chapter.fissionreactor.p1l1" : " The Fission Reactor is the ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l2" : "first nuclear power source ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l3" : "you will have available. Crude ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l4" : "and simple, the block heats ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l5" : "water and converts it to steam,", - "guidebook.nuclearscience.chapter.fissionreactor.p1l6" : "which is used to spin turbines.", - "guidebook.nuclearscience.chapter.fissionreactor.p1l7" : " To construct the Fission ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l8" : "Reactor, you will first need ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l9" : "to craft a Fission Reactor ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l10" : "Core. Place the Core in the ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l11" : "center of a 5x5 cube filled ", - "guidebook.nuclearscience.chapter.fissionreactor.p1l12" : "with water like so: ", - - "guidebook.nuclearscience.chapter.fissionreactor.p3l1" : " Next, cover the top of the ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l2" : "area with Turbines. You can ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l3" : "either have single turbines, or", - "guidebook.nuclearscience.chapter.fissionreactor.p3l4" : "turn a group of 9 into a large ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l5" : "3x3 turbine using a wrench. ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l6" : "The area around the Reactor ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l7" : "can be larger than 5x5, but ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l8" : "only the 5x5 section will make ", - "guidebook.nuclearscience.chapter.fissionreactor.p3l9" : "power. ", - - "guidebook.nuclearscience.chapter.fissionreactor.p5l1" : " To make steam, you will ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l2" : "need a source of heat. There ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l3" : "are 3 fuel types available to ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l4" : "you: ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l5" : "1. Highly Enriched Fuel Rod ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l6" : " Max Temp: 1417 C ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l7" : " Uses: 96000 ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l8" : "2. Low Enriched Fuel Rod ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l9" : " Max Temp: 1075 C ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l10" : " Uses: 24000 ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l11" : "3. Plutonium Fuel Rod ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l12" : " Max Temp: 1075 C ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l13" : " Uses: 120000 ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l14" : "The higher the temperature, ", - "guidebook.nuclearscience.chapter.fissionreactor.p5l15" : "the faster a fuel will be will ", - - "guidebook.nuclearscience.chapter.fissionreactor.p6l1" : "degrade. Turbines produce at ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l2" : "120V for temperatures under ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l3" : "1117 C, 240V for temperatures ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l4" : "under 1515 C, and at 480V for ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l5" : "higher temperatures. A full ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l6" : "sized reactor will produce up ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l7" : "to 22 kJ/t or 444 kW! ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l8" : " Note that the temerature ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l9" : "of the reactor is key. Above ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l10" : "1400 C, it is in danger of ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l11" : "melting down. This is where the", - "guidebook.nuclearscience.chapter.fissionreactor.p6l12" : "Control Rod Assembly comes ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l13" : "in. The Assembly can be used ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l14" : "to reduce the rate at which ", - "guidebook.nuclearscience.chapter.fissionreactor.p6l15" : "the reactor uses fuel. Place ", - - "guidebook.nuclearscience.chapter.fissionreactor.p7l1" : "one under the Core, and right ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l2" : "click it. This will extend the ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l3" : "rods into the Core. The higher ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l4" : "the rods, the lower the fuel ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l5" : "usage and resulting heat, but ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l6" : "also the lower the energy ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l7" : "output! ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l8" : " One final mention is that ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l9" : "Tritium is produced in the Core ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l10" : "by placing Dueterium cells in ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l11" : "it while running. They will be ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l12" : "converted randomly above ", - "guidebook.nuclearscience.chapter.fissionreactor.p7l13" : "800 C. ", - - "guidebook.nuclearscience.chapter.msreactor" : "MS Reactor", - "guidebook.nuclearscience.chapter.msreactor.p1l1" : " The Molton Salt Reactor is ", - "guidebook.nuclearscience.chapter.msreactor.p1l2" : "a far more refined version of ", - "guidebook.nuclearscience.chapter.msreactor.p1l3" : "the crude Fission Reactor, but ", - "guidebook.nuclearscience.chapter.msreactor.p1l4" : "is also far more expensive. To ", - "guidebook.nuclearscience.chapter.msreactor.p1l5" : "start off, you will need 3 ", - "guidebook.nuclearscience.chapter.msreactor.p1l6" : "components: ", - "guidebook.nuclearscience.chapter.msreactor.p1l7" : " MSR Reactor Core ", - "guidebook.nuclearscience.chapter.msreactor.p1l8" : " Freeze Plug ", - "guidebook.nuclearscience.chapter.msreactor.p1l9" : " Molten Salt Supplier ", - "guidebook.nuclearscience.chapter.msreactor.p1l10" : "Place a Freeze Plug, and then ", - "guidebook.nuclearscience.chapter.msreactor.p1l11" : "place a Reactor Core on top ", - "guidebook.nuclearscience.chapter.msreactor.p1l12" : "of it. Facing the green port on", - "guidebook.nuclearscience.chapter.msreactor.p1l13" : "the core, place a Molten Salt ", - "guidebook.nuclearscience.chapter.msreactor.p1l14" : "Supplier so that its green port", - "guidebook.nuclearscience.chapter.msreactor.p1l15" : "faces the Core's. ", - - "guidebook.nuclearscience.chapter.msreactor.p3l1" : " The MS Reactor isn't cooled", - "guidebook.nuclearscience.chapter.msreactor.p3l2" : "by water and is instead cooled ", - "guidebook.nuclearscience.chapter.msreactor.p3l3" : "by FLiNaK salt, which the ", - "guidebook.nuclearscience.chapter.msreactor.p3l4" : "Freeze Plug supplies. Simply ", - "guidebook.nuclearscience.chapter.msreactor.p3l5" : "make the salt and place it in ", - "guidebook.nuclearscience.chapter.msreactor.p3l6" : "the plug. The salt is not used ", - "guidebook.nuclearscience.chapter.msreactor.p3l7" : "up by the reactor, but the ", - "guidebook.nuclearscience.chapter.msreactor.p3l8" : "more salt you add, the more ", - "guidebook.nuclearscience.chapter.msreactor.p3l9" : "heat it will be able to remove.", - "guidebook.nuclearscience.chapter.msreactor.p3l10" : " The actual fuel of the MS ", - "guidebook.nuclearscience.chapter.msreactor.p3l11" : "Reactor is LiF-ThF4-UF4 Salt, ", - "guidebook.nuclearscience.chapter.msreactor.p3l12" : "and is provided by the Molten ", - "guidebook.nuclearscience.chapter.msreactor.p3l13" : "Salt Supplier. This fuel is ", - "guidebook.nuclearscience.chapter.msreactor.p3l14" : "consumed over time unlike the ", - "guidebook.nuclearscience.chapter.msreactor.p3l15" : "coolant salt. ", - - "guidebook.nuclearscience.chapter.msreactor.p6l1" : " To disperse the heat from ", - "guidebook.nuclearscience.chapter.msreactor.p6l2" : "the coolant, you will need: ", - "guidebook.nuclearscience.chapter.msreactor.p6l3" : " VS-Ceramic Pipe ", - "guidebook.nuclearscience.chapter.msreactor.p6l4" : " Heat Exchanger ", - "guidebook.nuclearscience.chapter.msreactor.p6l5" : "The VS Pipe is connected to ", - "guidebook.nuclearscience.chapter.msreactor.p6l6" : "the top of the Reactor Core ", - "guidebook.nuclearscience.chapter.msreactor.p6l7" : "and fed into the bottom of the ", - "guidebook.nuclearscience.chapter.msreactor.p6l8" : "Exchanger. The Exchanger ", - "guidebook.nuclearscience.chapter.msreactor.p6l9" : "must be placed in a 5x5x2 pool ", - "guidebook.nuclearscience.chapter.msreactor.p6l10" : "of water, and must be ", - "guidebook.nuclearscience.chapter.msreactor.p6l11" : "water-logged to function. The ", - "guidebook.nuclearscience.chapter.msreactor.p6l12" : "easiest way to do this is to fill", - "guidebook.nuclearscience.chapter.msreactor.p6l13" : "the pool and then place the ", - "guidebook.nuclearscience.chapter.msreactor.p6l14" : "Exchanger. ", - - "guidebook.nuclearscience.chapter.msreactor.p10l1" : " The Control Rod can also ", - "guidebook.nuclearscience.chapter.msreactor.p10l2" : "be used to slow the fuel use ", - "guidebook.nuclearscience.chapter.msreactor.p10l3" : "of the Core. Attach it to the ", - "guidebook.nuclearscience.chapter.msreactor.p10l4" : "side of the Core, and control ", - "guidebook.nuclearscience.chapter.msreactor.p10l5" : "it as with the Fission Reactor.", - "guidebook.nuclearscience.chapter.msreactor.p10l6" : "It is worth noting that the MS ", - "guidebook.nuclearscience.chapter.msreactor.p10l7" : "reactor does not melt down ", - "guidebook.nuclearscience.chapter.msreactor.p10l8" : "like the Fission Reactor, but ", - "guidebook.nuclearscience.chapter.msreactor.p10l9" : "above 900 C, the fuel will be ", - "guidebook.nuclearscience.chapter.msreactor.p10l10" : "used inefficiently! ", - - "guidebook.nuclearscience.chapter.fusionreactor" : "Fusion Reactor", - "guidebook.nuclearscience.chapter.fusionreactor.p1l1" : " The Fusion Reactor is the ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l2" : "ultimate source of power that ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l3" : "Nuclear Science has to offer, ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l4" : "and is able to produce over ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l5" : "80 MW of energy. However, ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l6" : "havesting this energy is very ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l7" : "expensive. First, you will ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l8" : "to construct a Fusion Reactor ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l9" : "Core. Leave a hole above and ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l10" : "below the Core and build a ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l11" : "diamond with a radius of 6 out ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l12" : "of Electromagnets like so. ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l13" : "Electromagnetic Glass may also ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l14" : "be used. We are using Glass ", - "guidebook.nuclearscience.chapter.fusionreactor.p1l15" : "in this case. ", - - "guidebook.nuclearscience.chapter.fusionreactor.p3l1" : " Next, surround the sides ", - "guidebook.nuclearscience.chapter.fusionreactor.p3l2" : "of the diamond with more ", - "guidebook.nuclearscience.chapter.fusionreactor.p3l3" : "Electromagnets like so: ", - - "guidebook.nuclearscience.chapter.fusionreactor.p5l1" : " Now, cover the top of the ", - "guidebook.nuclearscience.chapter.fusionreactor.p5l2" : "with Electromagnets. The ", - "guidebook.nuclearscience.chapter.fusionreactor.p5l3" : "Reactor itself does not make ", - "guidebook.nuclearscience.chapter.fusionreactor.p5l4" : "power and instead generates ", - "guidebook.nuclearscience.chapter.fusionreactor.p5l5" : "plasma, which the magnets will ", - "guidebook.nuclearscience.chapter.fusionreactor.p5l6" : "be containing. ", - - "guidebook.nuclearscience.chapter.fusionreactor.p7l1" : " To generate power with the ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l2" : "reactor, you will need to ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l3" : "cover the top of the magnets ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l4" : "with water. The magnets will ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l5" : "heat the water and generate ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l6" : "steam. To get the start the ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l7" : "Fusion reaction, you will also ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l8" : "need to power the reactor. A ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l9" : "wire can be connected to the ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l10" : "top or the bottom of the Core. ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l11" : "Once the area has been filled ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l12" : "with water, place Turbines ", - "guidebook.nuclearscience.chapter.fusionreactor.p7l13" : "above the water's surface. ", - - "guidebook.nuclearscience.chapter.fusionreactor.p11l1" : " The Fusion Reactor Core ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l2" : "requires 50 kJ/t or 1 MW at ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l3" : "480 V to keep the fusion ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l4" : "reaction running. While you ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l5" : "will need to supply the initial", - "guidebook.nuclearscience.chapter.fusionreactor.p11l6" : "1 MW, you can feed the output ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l7" : "of the Turbines back into the ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l8" : "reactor keeping it going. ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l9" : " To fuel the Reactor, you ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l10" : "will need to supply it with ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l11" : "Dueterium and Tritium. This is ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l12" : "currently done by right Cells ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l13" : "on the Reactor Core. This is ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l14" : "planned to be changed in the ", - "guidebook.nuclearscience.chapter.fusionreactor.p11l15" : "future however. ", - - "guidebook.nuclearscience.chapter.particleaccelerator" : "Particle Accelerator", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l1" : " The Particle Accelerator ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l2" : "is used to make Anti-Matter ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l3" : "and Dark Matter. Both are ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l4" : "generated when two Particles ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l5" : "collide at great speeds. Anti- ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l6" : "Matter is created when the two ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l7" : "particles collide at less than ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l8" : "100%, however the closer they ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l9" : "are to 100%, the more likely ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l10" : "Anti-Matter will be generated. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l11" : "Dark Matter is created when ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l12" : "the collision occurs at 100% ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l13" : "speed, and has a guarenteed ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l14" : "chance to be created. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p1l15" : " To create particles, you ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p2l1" : "will need a Particle Injector. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l2" : "The Injector uses matter to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l3" : "make a particle. Any block or ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l4" : "item can be used to supply the ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l5" : "matter. To catch the result of ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l6" : "the collision, you will need ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l7" : "Electromagnetic Cells, which ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l8" : "are placed in the slot below ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l9" : "the matter slot. The Injector ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l10" : "runs off of 960 V and uses ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l11" : "20 MJ per particle. This means ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l12" : "you will need 40 MJ for each ", - "guidebook.nuclearscience.chapter.particleaccelerator.p2l13" : "collision. ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p4l1" : " While the Injector makes ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l2" : "particles, it does not affect ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l3" : "their speed. This is handled by", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l4" : "the Electromagnetic Booster. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l5" : "If the particle and Booster ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l6" : "are facing the same direction, ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l7" : "the Booster will add 0.33% to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l8" : "the particle's speed. If the ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l9" : "Booster is a corner, it will ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l10" : "add 0.17% to the particle's ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l11" : "speed. This is done for every ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l12" : "tick the particle is in a ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l13" : "Booster. To reach 100% speed, ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l14" : "it will take 200 Boosters in a ", - "guidebook.nuclearscience.chapter.particleaccelerator.p4l15" : "straight line. However, this ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p5l1" : "requires a large amount of ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l2" : "room. Boosters can be set up ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l3" : "in a snake pattern to help ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l4" : "compact them. To make one ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l5" : "a corner variant, stand on top ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l6" : "of Booster segment you wish to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l7" : "turn, and place a Booster to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l8" : "start the next segment after ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l9" : "the corner. Looking at the ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l10" : "outer bottom corner of the ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l11" : "next segment's Booster, place ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l12" : "the corner Booster. If you did ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l13" : "it properly, you will not be ", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l14" : "able to directly see the inside", - "guidebook.nuclearscience.chapter.particleaccelerator.p5l15" : "of Booster. ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p7l1" : " A set of 60 Boosters as ", - "guidebook.nuclearscience.chapter.particleaccelerator.p7l2" : "pictured here has a roughly 1 ", - "guidebook.nuclearscience.chapter.particleaccelerator.p7l3" : "5 chance of creating Anti ", - "guidebook.nuclearscience.chapter.particleaccelerator.p7l4" : "Matter from a collision: ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p9l1" : " But how do we get two ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l2" : "particles to collide? This is ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l3" : "where regular Electromagnets ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l4" : "come in. You will need to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l5" : "build a ring allowing them to ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l6" : "collide. The ring itself can ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l7" : "be as small as 3x3. Size has ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l8" : "no impact other than being ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l9" : "cheaper to make. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l10" : " Start by laying out the ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l11" : "bottom of the ring at the end ", - "guidebook.nuclearscience.chapter.particleaccelerator.p9l12" : "of the Booster chain like so: ", - - "guidebook.nuclearscience.chapter.particleaccelerator.p11l1" : " Place an Electromagnetic ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l2" : "switch in front of the output ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l3" : "of the Booster chain. It is ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l4" : "vital you place one of these ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l5" : "here! Fill in the sides and ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l6" : "top of the ring as pictured. ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l7" : "Note either Electromagnets or ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l8" : "Electromagnetic Glass can be ", - "guidebook.nuclearscience.chapter.particleaccelerator.p11l9" : "used. ", - - "guidebook.nuclearscience.chapter.othermachines" : "Other Machines", - "guidebook.nuclearscience.chapter.othermachines.radiogentitle" : "Radioisotropic Gen", - "guidebook.nuclearscience.chapter.othermachines.p1l1" : " The Radioisotropic ", - "guidebook.nuclearscience.chapter.othermachines.p1l2" : "Generator uses the natural ", - "guidebook.nuclearscience.chapter.othermachines.p1l3" : "heat produced from the ", - "guidebook.nuclearscience.chapter.othermachines.p1l4" : "radioactive decay of items. ", - "guidebook.nuclearscience.chapter.othermachines.p1l5" : "Simply place a radioactive item", - "guidebook.nuclearscience.chapter.othermachines.p1l6" : "in it, and it will begin to make", - "guidebook.nuclearscience.chapter.othermachines.p1l7" : "power. See the chapter on ", - "guidebook.nuclearscience.chapter.othermachines.p1l8" : "Radiation to see which items ", - "guidebook.nuclearscience.chapter.othermachines.p1l9" : "are valid. The more radioactive", - "guidebook.nuclearscience.chapter.othermachines.p1l10" : "an item is, the more power the ", - "guidebook.nuclearscience.chapter.othermachines.p1l11" : "generator will produce! ", - - "guidebook.nuclearscience.chapter.othermachines.gascenttitle" : "Gas Centrifuge", - "guidebook.nuclearscience.chapter.othermachines.p2l1" : " The Gas Centrifuge splits ", - "guidebook.nuclearscience.chapter.othermachines.p2l2" : "Uranium Hexafluoride into its ", - "guidebook.nuclearscience.chapter.othermachines.p2l3" : "isotopes of U235 and U238. ", - "guidebook.nuclearscience.chapter.othermachines.p2l4" : "There is a split of 17.5% to ", - "guidebook.nuclearscience.chapter.othermachines.p2l5" : "82.5% respectively for each ", - "guidebook.nuclearscience.chapter.othermachines.p2l6" : "mB of Hexafluoride. The ", - "guidebook.nuclearscience.chapter.othermachines.p2l7" : "Centrifuge runs continuously ", - "guidebook.nuclearscience.chapter.othermachines.p2l8" : "as long as it has at least 42 ", - "guidebook.nuclearscience.chapter.othermachines.p2l9" : "mB per run. 10% of each cycle ", - "guidebook.nuclearscience.chapter.othermachines.p2l10" : "is also converted into waste. ", - "guidebook.nuclearscience.chapter.othermachines.p2l11" : "Note this is not subtracted ", - - "guidebook.nuclearscience.chapter.othermachines.p3l1" : "from the aforementioned split, ", - "guidebook.nuclearscience.chapter.othermachines.p3l2" : "and is added on top of it. ", - "guidebook.nuclearscience.chapter.othermachines.p3l3" : " Once the Centrifuge has ", - "guidebook.nuclearscience.chapter.othermachines.p3l4" : "collected 2500 mB of a material,", - "guidebook.nuclearscience.chapter.othermachines.p3l5" : "it will produce an item of the ", - "guidebook.nuclearscience.chapter.othermachines.p3l6" : "respective material. While this", - "guidebook.nuclearscience.chapter.othermachines.p3l7" : "is not 100% realistic, it is a ", - "guidebook.nuclearscience.chapter.othermachines.p3l8" : "legacy feature to pay tribute ", - "guidebook.nuclearscience.chapter.othermachines.p3l9" : "to Atomic Science. The waste ", - "guidebook.nuclearscience.chapter.othermachines.p3l10" : "material will produce Fissile ", - "guidebook.nuclearscience.chapter.othermachines.p3l11" : "Dust. Uranium Hexaflouride can ", - "guidebook.nuclearscience.chapter.othermachines.p3l12" : "either be piped into the back ", - "guidebook.nuclearscience.chapter.othermachines.p3l13" : "of the Centrifuge, or the ", - "guidebook.nuclearscience.chapter.othermachines.p3l14" : "Nuclear Boiler can output ", - "guidebook.nuclearscience.chapter.othermachines.p3l15" : "directly into it. ", - - "guidebook.nuclearscience.chapter.othermachines.quantumcaptitle" : "Quantum Capacitor", - "guidebook.nuclearscience.chapter.othermachines.p5l1" : " The Quantum Capacitor is ", - "guidebook.nuclearscience.chapter.othermachines.p5l2" : "the ultimate energy storage ", - "guidebook.nuclearscience.chapter.othermachines.p5l3" : "device. It has an unlimited ", - "guidebook.nuclearscience.chapter.othermachines.p5l4" : "energy storage capacity, and ", - "guidebook.nuclearscience.chapter.othermachines.p5l5" : "has a programmable voltage ", - "guidebook.nuclearscience.chapter.othermachines.p5l6" : "and current. Furthermore, ", - "guidebook.nuclearscience.chapter.othermachines.p5l7" : "each Capacitor is linked to ", - "guidebook.nuclearscience.chapter.othermachines.p5l8" : "your player UUID. This means ", - "guidebook.nuclearscience.chapter.othermachines.p5l9" : "no matter where you place one ", - "guidebook.nuclearscience.chapter.othermachines.p5l10" : "in the world, all will share ", - "guidebook.nuclearscience.chapter.othermachines.p5l11" : "the same charge! ", - - "guidebook.nuclearscience.chapter.othermachines.teleportertitle" : "Teleporter", - "guidebook.nuclearscience.chapter.othermachines.p6l1" : " The Teleporter requires ", - "guidebook.nuclearscience.chapter.othermachines.p6l2" : "5 MJ to teleport a player. Two ", - "guidebook.nuclearscience.chapter.othermachines.p6l3" : "teleporters are needed: one ", - "guidebook.nuclearscience.chapter.othermachines.p6l4" : "to send the player, and one to ", - "guidebook.nuclearscience.chapter.othermachines.p6l5" : "recieve them. Only the sending ", - "guidebook.nuclearscience.chapter.othermachines.p6l6" : "end needs to be powered. To ", - "guidebook.nuclearscience.chapter.othermachines.p6l7" : "link two teleporters, right- ", - "guidebook.nuclearscience.chapter.othermachines.p6l8" : "click the sending end with a ", - "guidebook.nuclearscience.chapter.othermachines.p6l9" : "Frequency Card. Then right- ", - "guidebook.nuclearscience.chapter.othermachines.p6l10" : "click the recieving end with the", - "guidebook.nuclearscience.chapter.othermachines.p6l11" : "same card to link them. ", - - "guidebook.nuclearscience.chapter.othermachines.p7l1" : " After each teleport, there ", - "guidebook.nuclearscience.chapter.othermachines.p7l2" : "is 4 second cooldown applied ", - "guidebook.nuclearscience.chapter.othermachines.p7l3" : "to the sending end. Note, it is", - "guidebook.nuclearscience.chapter.othermachines.p7l4" : "possible to link a teleporter to", - "guidebook.nuclearscience.chapter.othermachines.p7l5" : "itself, so be careful! To wipe ", - "guidebook.nuclearscience.chapter.othermachines.p7l6" : "the frequency from a Card, ", - "guidebook.nuclearscience.chapter.othermachines.p7l7" : "craft it in your inventory. ", - - "guidebook.nuclearscience.chapter.othermachines.atomicasstitle" : "Atomic Assembler", - "guidebook.nuclearscience.chapter.othermachines.p8l1" : " The Atomic Assembler makes ", - "guidebook.nuclearscience.chapter.othermachines.p8l2" : "use of the strange properties ", - "guidebook.nuclearscience.chapter.othermachines.p8l3" : "of Dark Matter, and is able to ", - "guidebook.nuclearscience.chapter.othermachines.p8l4" : "duplicate items (we have made ", - "guidebook.nuclearscience.chapter.othermachines.p8l5" : "sure you can't dupe items with ", - "guidebook.nuclearscience.chapter.othermachines.p8l6" : "inventories, so no dupe bugs ", - "guidebook.nuclearscience.chapter.othermachines.p8l7" : "this time (: ). It requires ", - "guidebook.nuclearscience.chapter.othermachines.p8l8" : "72 kW at 480 V to run. If it ", - "guidebook.nuclearscience.chapter.othermachines.p8l9" : "loses power, all progress is ", - "guidebook.nuclearscience.chapter.othermachines.p8l10" : "lost! ", - "guidebook.nuclearscience.chapter.othermachines.p8l11" : " To use it, take an item of ", - - "guidebook.nuclearscience.chapter.othermachines.p9l1" : "your desire and place it in ", - "guidebook.nuclearscience.chapter.othermachines.p9l2" : "the Assembler. Surround the ", - "guidebook.nuclearscience.chapter.othermachines.p9l3" : "item with Dark Matter Cells ", - "guidebook.nuclearscience.chapter.othermachines.p9l4" : "like shown. Each duplication ", - "guidebook.nuclearscience.chapter.othermachines.p9l5" : "3600 ticks, and will take one ", - "guidebook.nuclearscience.chapter.othermachines.p9l6" : "use of the Dark Matter Cells. ", - "guidebook.nuclearscience.chapter.othermachines.p9l7" : "Cells have 64 uses in total. ", - - "guidebook.nuclearscience.chapter.misc" : "Misc", - "guidebook.nuclearscience.chapter.misc.p1l1" : "Futurum Usui.", - - "jei.guilabel.power" : "%1$sV %2$skW", - "jei.guilabel.reactorcore.info.temp" : "Range: 0 C to 1400 C", - "jei.gui.gascentrifuge" : "Gas Centrifuge", - "jei.gui.gascentrifuge.info.power_usage" : "240V 30kW", - "jei.gui.gascentrifuge.info.percent_u235" : "17.2%", - "jei.gui.gascentrifuge.info.percent_u238" : "72.8%", - "jei.gui.gascentrifuge.info.percent_biproduct" : "10.0%", - "jei.gui.particalaccelerator.antimatter" : "Particle Collision", - "jei.gui.particalaccelerator.antimatter.info.power" : "Charge:100% Speed<100%", - "jei.gui.particalaccelerator.darkmatter" : "Particle Collision", - "jei.gui.particalaccelerator.darkmatter.info.power" : "Charge:100% Speed:100%" - -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/atomicassembler.json b/src/main/resources/assets/nuclearscience/models/block/atomicassembler.json index e5b00c03..55a261d0 100644 --- a/src/main/resources/assets/nuclearscience/models/block/atomicassembler.json +++ b/src/main/resources/assets/nuclearscience/models/block/atomicassembler.json @@ -1,683 +1,1562 @@ { - "credit" : "aurilisdev", - "parent" : "block/cube_all", - "textures" : { - "0" : "nuclearscience:model/atomicassembler", - "particle" : "nuclearscience:model/atomicassembler" - }, - "loader" : "forge:multi-layer", - "layers" : { - "solid" : { - "textures" : { - "0" : "nuclearscience:model/atomicassembler", - "particle" : "nuclearscience:model/atomicassembler" - }, - "elements" : [ { - "from" : [ 0, 1, 0 ], - "to" : [ 16, 2, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 8, 4.25, 4, 0.25 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.25, 8, 4.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 0, 14, 0 ], - "to" : [ 16, 16, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 3.75, 8, 4.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 3.75, 8, 4.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 3.75, 8, 4.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 3.75, 8, 4.25 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 8, 4.25, 4, 0.25 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.25, 8, 4.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 14, 2, 14 ], - "to" : [ 16, 14, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 0, 2, 14 ], - "to" : [ 2, 14, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 1, 8, 15 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 14, 2, 0 ], - "to" : [ 16, 14, 2 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 8, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 0, 2, 0 ], - "to" : [ 2, 14, 2 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 7.5, 0.25, 8, 3.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 0.25, 4.5, 3.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 4, 0, 4 ], - "to" : [ 12, 1, 12 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 7, 8, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 4.25, 8, 4.5 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 0, 4.25, 4, 4.5 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 12, 4.25, 16, 4.5 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 8, 4.25, 12, 4.5 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 8, 10.5, 6, 12.5 ], - "texture" : "#0" - } - } - }, { - "from" : [ 0, 0, 0 ], - "to" : [ 1, 1, 16 ], - "faces" : { - "north" : { - "uv" : [ 7.75, 1.5, 8, 1.75 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 3.75, 8, 4 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 7.75, 1.5, 8, 1.75 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 3.75, 8, 4 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.25, 11.75, 4.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 1, 0, 0 ], - "to" : [ 15, 1, 1 ], - "faces" : { - "north" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.5, 11.75, 4 ], - "rotation" : 270, - "texture" : "#0" - } - } - }, { - "from" : [ 1, 0, 15 ], - "to" : [ 15, 1, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 8, 23 ] - }, - "faces" : { - "north" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 4, 4, 8, 4.25 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.5, 11.75, 4 ], - "rotation" : 270, - "texture" : "#0" - } - } - }, { - "from" : [ 15, 0, 0 ], - "to" : [ 16, 1, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 23, 8, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 7.75, 1.5, 8, 1.75 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 4, 3.75, 8, 4 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 7.75, 1.5, 8, 1.75 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 4, 3.75, 8, 4 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 12, 0.25, 11.75, 4.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 2, 2, 2 ], - "to" : [ 14, 3, 14 ], - "faces" : { - "north" : { - "uv" : [ 3, 7.5, 6, 7.75 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 0, 7.5, 3, 7.75 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 9, 7.5, 12, 7.75 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 6, 7.5, 9, 7.75 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 6, 7.5, 3, 4.5 ], - "texture" : "#0" - } - } - }, { - "from" : [ 6, 3, 6 ], - "to" : [ 10, 6, 10 ], - "faces" : { - "north" : { - "uv" : [ 11.5, 13.25, 12.5, 14.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 11.5, 13.25, 12.5, 14.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 11.5, 13.25, 12.5, 14.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 11.5, 13.25, 12.5, 14.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 5, 6, 5 ], - "to" : [ 11, 7, 11 ], - "faces" : { - "north" : { - "uv" : [ 13.25, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 13.25, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 13.25, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 13.25, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 16, 16, 15, 15 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 16, 16, 15, 15 ], - "texture" : "#0" - } - } - }, { - "from" : [ 5.25, 7, 5.25 ], - "to" : [ 6.25, 8, 10.75 ], - "faces" : { - "north" : { - "uv" : [ 13.25, 13.25, 13.5, 13.5 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 14, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 13.25, 13.25, 13.5, 13.5 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 14, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 16, 16, 15.75, 15 ], - "texture" : "#0" - } - } - }, { - "from" : [ 9.75, 7, 5.25 ], - "to" : [ 10.75, 8, 10.75 ], - "faces" : { - "north" : { - "uv" : [ 13.25, 13.25, 13.5, 13.5 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 14, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 13.25, 13.25, 13.5, 13.5 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 14, 13.25, 16, 13.5 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 16, 16, 15.75, 15 ], - "texture" : "#0" - } - } - }, { - "from" : [ 7, 3, 3.5 ], - "to" : [ 9, 7.25, 4.5 ], - "rotation" : { - "angle" : -45, - "axis" : "x", - "origin" : [ 8, 5.625, 4 ] - }, - "rotated" : [ -45, -3.55576, 1.61833 ], - "faces" : { - "north" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 7, 6, 2.5 ], - "to" : [ 9, 8.25, 3.5 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 4.5, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 7, 3, 5.5 ], - "to" : [ 9, 4, 8 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 4.5, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 11, 9.25, 10, 8.25 ], - "texture" : "#0" - } - } - }, { - "from" : [ 7.5, 6.75, 6 ], - "to" : [ 8.5, 14, 7 ], - "rotation" : { - "angle" : 45, - "axis" : "x", - "origin" : [ 8, 11.5, 6 ] - }, - "faces" : { - "north" : { - "uv" : [ 3.25, 7, 3, 4.5 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 3.25, 7, 3, 4.5 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 3.25, 7, 3, 4.5 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 3.25, 7, 3, 4.5 ], - "texture" : "#0" - }, - "up" : { - "uv" : [ 4, 6, 3.5, 5.5 ], - "texture" : "#0" - } - } - }, { - "from" : [ 7.75, 9.25, 7.75 ], - "to" : [ 8.25, 12.5, 8.25 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 4.5, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 12.5, 16, 12.25, 12.75 ], - "texture" : "#0" - }, - "east" : { - "uv" : [ 12.5, 16, 12.25, 12.75 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 12.5, 16, 12.25, 12.75 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 12.5, 16, 12.25, 12.75 ], - "texture" : "#0" - }, - "down" : { - "uv" : [ 14, 14, 13.75, 13.75 ], - "texture" : "#0" - } - } - } ] - }, - "translucent" : { - "textures" : { - "0" : "nuclearscience:model/atomicassembler", - "particle" : "nuclearscience:model/atomicassembler" - }, - "elements" : [ { - "from" : [ 2, 2, 0 ], - "to" : [ 14, 14, 2 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - } - } - }, { - "from" : [ 14, 2, 2 ], - "to" : [ 16, 14, 14 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "east" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - } - } - }, { - "from" : [ 2, 2, 14 ], - "to" : [ 14, 14, 16 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "north" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - }, - "south" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - } - } - }, { - "from" : [ 0, 2, 2 ], - "to" : [ 2, 14, 14 ], - "rotation" : { - "angle" : 0, - "axis" : "y", - "origin" : [ 8, 9, 8 ] - }, - "faces" : { - "east" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - }, - "west" : { - "uv" : [ 0, 13, 3, 16 ], - "texture" : "#0" - } - } - } ] - } - }, - "groups" : [ { - "name" : "solid", - "origin" : [ 8, 8, 8 ], - "color" : 0, - "children" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, { - "name" : "rotational", - "origin" : [ 8, 8, 8 ], - "color" : 0, - "children" : [ 16, 17, 18, 19, 20 ] - } ] - }, { - "name" : "Transparent", - "origin" : [ 8, 8, 8 ], - "color" : 0, - "children" : [ 21, 22, 23, 24 ] - } ] -} \ No newline at end of file + "credit": "aurilisdev", + "parent": "block/cube_all", + "textures": { + "0": "nuclearscience:block/model/atomicassembler", + "particle": "electrodynamics:block/steelcasing" + }, + "loader": "forge:multi-layer", + "layers": { + "solid": { + "render_type": "minecraft:solid", + "textures": { + "0": "nuclearscience:block/model/atomicassembler", + "particle": "electrodynamics:block/steelcasing" + }, + "elements": [ + { + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 2, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 4.25, + 4, + 0.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.25, + 8, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 14, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 3.75, + 8, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 3.75, + 8, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 3.75, + 8, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 3.75, + 8, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 4.25, + 4, + 0.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.25, + 8, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 2, + 14 + ], + "to": [ + 16, + 14, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 2, + 14 + ], + "to": [ + 2, + 14, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 1, + 8, + 15 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 2, + 0 + ], + "to": [ + 16, + 14, + 2 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 2, + 0 + ], + "to": [ + 2, + 14, + 2 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 0.25, + 8, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 0.25, + 4.5, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 0, + 4 + ], + "to": [ + 12, + 1, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 7, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 4.25, + 8, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.25, + 4, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 12, + 4.25, + 16, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 4.25, + 12, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 10.5, + 6, + 12.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 1, + 1, + 16 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 1.5, + 8, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 3.75, + 8, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.75, + 1.5, + 8, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 3.75, + 8, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.25, + 11.75, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 0, + 0 + ], + "to": [ + 15, + 1, + 1 + ], + "faces": { + "north": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.5, + 11.75, + 4 + ], + "rotation": 270, + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 0, + 15 + ], + "to": [ + 15, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 23 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 4, + 8, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.5, + 11.75, + 4 + ], + "rotation": 270, + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 23, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 7.75, + 1.5, + 8, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 3.75, + 8, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.75, + 1.5, + 8, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 3.75, + 8, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 12, + 0.25, + 11.75, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 2 + ], + "to": [ + 14, + 3, + 14 + ], + "faces": { + "north": { + "uv": [ + 3, + 7.5, + 6, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.5, + 3, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 7.5, + 12, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 7.5, + 9, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 7.5, + 3, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 3, + 6 + ], + "to": [ + 10, + 6, + 10 + ], + "faces": { + "north": { + "uv": [ + 11.5, + 13.25, + 12.5, + 14.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.5, + 13.25, + 12.5, + 14.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.5, + 13.25, + 12.5, + 14.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 13.25, + 12.5, + 14.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 6, + 5 + ], + "to": [ + 11, + 7, + 11 + ], + "faces": { + "north": { + "uv": [ + 13.25, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 13.25, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 13.25, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 13.25, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 16, + 16, + 15, + 15 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 16, + 16, + 15, + 15 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5.25, + 7, + 5.25 + ], + "to": [ + 6.25, + 8, + 10.75 + ], + "faces": { + "north": { + "uv": [ + 13.25, + 13.25, + 13.5, + 13.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 14, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 13.25, + 13.25, + 13.5, + 13.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 14, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 16, + 16, + 15.75, + 15 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9.75, + 7, + 5.25 + ], + "to": [ + 10.75, + 8, + 10.75 + ], + "faces": { + "north": { + "uv": [ + 13.25, + 13.25, + 13.5, + 13.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 14, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 13.25, + 13.25, + 13.5, + 13.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 14, + 13.25, + 16, + 13.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 16, + 16, + 15.75, + 15 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 3, + 3.5 + ], + "to": [ + 9, + 7.25, + 4.5 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + 8, + 5.625, + 4 + ] + }, + "rotated": [ + -45, + -3.55576, + 1.61833 + ], + "faces": { + "north": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 6, + 2.5 + ], + "to": [ + 9, + 8.25, + 3.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 4.5, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 3, + 5.5 + ], + "to": [ + 9, + 4, + 8 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 4.5, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 9.25, + 10, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.5, + 6.75, + 6 + ], + "to": [ + 8.5, + 14, + 7 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 8, + 11.5, + 6 + ] + }, + "faces": { + "north": { + "uv": [ + 3.25, + 7, + 3, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 7, + 3, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.25, + 7, + 3, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 7, + 3, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 6, + 3.5, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.75, + 9.25, + 7.75 + ], + "to": [ + 8.25, + 12.5, + 8.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 4.5, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 12.5, + 16, + 12.25, + 12.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 12.5, + 16, + 12.25, + 12.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 12.5, + 16, + 12.25, + 12.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 12.5, + 16, + 12.25, + 12.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 14, + 14, + 13.75, + 13.75 + ], + "texture": "#0" + } + } + } + ] + }, + "translucent": { + "render_type": "minecraft:translucent", + "textures": { + "0": "nuclearscience:block/model/atomicassembler", + "particle": "electrodynamics:block/steelcasing" + }, + "elements": [ + { + "from": [ + 2, + 2, + 0 + ], + "to": [ + 14, + 14, + 2 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 2, + 2 + ], + "to": [ + 16, + 14, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 14 + ], + "to": [ + 14, + 14, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 2, + 2 + ], + "to": [ + 2, + 14, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#0" + } + } + } + ] + } + }, + "groups": [ + { + "name": "solid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + { + "name": "rotational", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 16, + 17, + 18, + 19, + 20 + ] + } + ] + }, + { + "name": "Transparent", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 21, + 22, + 23, + 24 + ] + } + ] +} diff --git a/src/main/resources/assets/nuclearscience/models/block/atomicassemblersingle.json b/src/main/resources/assets/nuclearscience/models/block/atomicassemblersingle.json index 7875643a..8e2c417b 100644 --- a/src/main/resources/assets/nuclearscience/models/block/atomicassemblersingle.json +++ b/src/main/resources/assets/nuclearscience/models/block/atomicassemblersingle.json @@ -2,8 +2,8 @@ "credit": "aurilisdev", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/atomicassembler", - "particle": "nuclearscience:model/atomicassembler" + "0": "nuclearscience:block/model/atomicassembler", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/chemicalboilerhexafluoride.json b/src/main/resources/assets/nuclearscience/models/block/chemicalboilerhexafluoride.json deleted file mode 100644 index b63aa478..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/chemicalboilerhexafluoride.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "aurilisdev", - "parent": "block/cube_all", - "texture_size": [128, 128], - "textures": { - "1": "nuclearscience:fluid/uraniumhexafluoride" - }, - "elements": [ - { - "from": [-1, -1.75, -0.75], - "to": [1, 1.75, 1.25], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#1"}, - "east": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#1"}, - "south": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#1"}, - "west": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#1"}, - "up": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#1"}, - "down": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "transparent", - "origin": [0, 0, 0], - "children": [0] - }, - { - "name": "chemicalboilerwater", - "origin": [8, 8, 8], - "children": [ - { - "name": "transparent", - "origin": [0, 0, 0], - "children": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/chemicalboilerwater.json b/src/main/resources/assets/nuclearscience/models/block/chemicalboilerwater.json deleted file mode 100644 index ee658274..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/chemicalboilerwater.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "aurilisdev", - "parent": "block/cube_all", - "texture_size": [128, 128], - "textures": { - "1_1": "nuclearscience:fluid/water" - }, - "elements": [ - { - "from": [-1, -1.75, -1], - "to": [1, 1.75, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#1_1"}, - "east": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#1_1"}, - "south": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#1_1"}, - "west": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#1_1"}, - "up": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#1_1"}, - "down": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#1_1"} - } - } - ], - "groups": [ - { - "name": "transparent", - "origin": [0, 0, 0], - "children": [] - }, - { - "name": "chemicalboilerwater", - "origin": [8, 8, 8], - "children": [ - { - "name": "transparent", - "origin": [0, 0, 0], - "children": [0] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/chemicalextractor.json b/src/main/resources/assets/nuclearscience/models/block/chemicalextractor.json index 9dff6289..1b6caaaf 100644 --- a/src/main/resources/assets/nuclearscience/models/block/chemicalextractor.json +++ b/src/main/resources/assets/nuclearscience/models/block/chemicalextractor.json @@ -3,784 +3,4364 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "1": "nuclearscience:model/chemicalextractor", - "particle": "nuclearscience:model/chemicalextractor" + "1": "nuclearscience:block/model/chemicalextractor", + "particle": "electrodynamics:block/steelcasing" }, "groups": [ { "name": "translucent", - "origin": [8, 9, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] + "origin": [ + 8, + 9, + 8 + ], + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] }, { "name": "group", - "origin": [7, 8, 8], - "children": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62] + "origin": [ + 7, + 8, + 8 + ], + "children": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62 + ] } ], "loader": "forge:multi-layer", "layers": { "solid": { + "render_type": "minecraft:solid", "parent": "block/cube_all", "textures": { - "1": "nuclearscience:model/chemicalextractor", - "particle": "nuclearscience:model/chemicalextractor" + "1": "nuclearscience:block/model/chemicalextractor", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { - "from": [5, 2, 0], - "to": [11, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 5, + 2, + 0 + ], + "to": [ + 11, + 14, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [7.33333, 5.5, 6.33333, 7.33333], "texture": "#1"}, - "east": {"uv": [2.66667, 5.5, 0, 7.33333], "texture": "#1"}, - "south": {"uv": [3.66667, 5.5, 2.66667, 7.33333], "texture": "#1"}, - "west": {"uv": [6.33333, 5.5, 3.66667, 7.33333], "texture": "#1"}, - "up": {"uv": [2.66667, 5.5, 3.66667, 2.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 7.33333, + 5.5, + 6.33333, + 7.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2.66667, + 5.5, + 0, + 7.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.66667, + 5.5, + 2.66667, + 7.33333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6.33333, + 5.5, + 3.66667, + 7.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.66667, + 5.5, + 3.66667, + 2.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 3.425, 0], - "to": [15.375, 4, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3.425, + 0 + ], + "to": [ + 15.375, + 4, + 1 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 13.5, 2.66667, 13.66667], "texture": "#1"}, - "south": {"uv": [2.5, 13.5, 1.83333, 13.66667], "texture": "#1"}, - "up": {"uv": [1.83333, 13.5, 2.5, 13.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2.5, 13.33333, 3.16667, 13.5], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 13.5, + 2.66667, + 13.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 13.5, + 1.83333, + 13.66667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1.83333, + 13.5, + 2.5, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 2.5, + 13.33333, + 3.16667, + 13.5 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2.5, 4, 12], - "to": [3.5, 5, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2.5, + 4, + 12 + ], + "to": [ + 3.5, + 5, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6.66667, 14, 6.5, 14.16667], "texture": "#1"}, - "east": {"uv": [6.16667, 14, 6, 14.16667], "texture": "#1"}, - "south": {"uv": [6.33333, 14, 6.16667, 14.16667], "texture": "#1"}, - "west": {"uv": [6.5, 14, 6.33333, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 6.66667, + 14, + 6.5, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.16667, + 14, + 6, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6.33333, + 14, + 6.16667, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6.5, + 14, + 6.33333, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [2.5, 4, 9], - "to": [3.5, 5, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2.5, + 4, + 9 + ], + "to": [ + 3.5, + 5, + 10 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [7.33333, 14, 7.16667, 14.16667], "texture": "#1"}, - "east": {"uv": [6.83333, 14, 6.66667, 14.16667], "texture": "#1"}, - "south": {"uv": [7, 14, 6.83333, 14.16667], "texture": "#1"}, - "west": {"uv": [7.16667, 14, 7, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 7.33333, + 14, + 7.16667, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.83333, + 14, + 6.66667, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7, + 14, + 6.83333, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 7.16667, + 14, + 7, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [2.5, 4, 3], - "to": [3.5, 5, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2.5, + 4, + 3 + ], + "to": [ + 3.5, + 5, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [0.66667, 14.5, 0.5, 14.66667], "texture": "#1"}, - "east": {"uv": [0.16667, 14.5, 0, 14.66667], "texture": "#1"}, - "south": {"uv": [0.33333, 14.5, 0.16667, 14.66667], "texture": "#1"}, - "west": {"uv": [0.5, 14.5, 0.33333, 14.66667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 0.66667, + 14.5, + 0.5, + 14.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0.16667, + 14.5, + 0, + 14.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.33333, + 14.5, + 0.16667, + 14.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 0.5, + 14.5, + 0.33333, + 14.66667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [12.5, 4, 12], - "to": [13.5, 5, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12.5, + 4, + 12 + ], + "to": [ + 13.5, + 5, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.33333, 14.5, 1.16667, 14.66667], "texture": "#1"}, - "east": {"uv": [0.83333, 14.5, 0.66667, 14.66667], "texture": "#1"}, - "south": {"uv": [1, 14.5, 0.83333, 14.66667], "texture": "#1"}, - "west": {"uv": [1.16667, 14.5, 1, 14.66667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 1.33333, + 14.5, + 1.16667, + 14.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0.83333, + 14.5, + 0.66667, + 14.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1, + 14.5, + 0.83333, + 14.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.16667, + 14.5, + 1, + 14.66667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [0.625, 3.425, 0], - "to": [5, 4, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 0.625, + 3.425, + 0 + ], + "to": [ + 5, + 4, + 1 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [5, 13.5, 4.33333, 13.66667], "texture": "#1"}, - "south": {"uv": [4.16667, 13.5, 3.5, 13.66667], "texture": "#1"}, - "up": {"uv": [3.5, 13.5, 4.16667, 13.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.16667, 13.33333, 4.83333, 13.5], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5, + 13.5, + 4.33333, + 13.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.16667, + 13.5, + 3.5, + 13.66667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.5, + 13.5, + 4.16667, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.16667, + 13.33333, + 4.83333, + 13.5 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2.875, 1.025, 0], - "to": [3.325, 12.525, 1], - "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 9, 8]}, + "from": [ + 2.875, + 1.025, + 0 + ], + "to": [ + 3.325, + 12.525, + 1 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 8.83333, 3.16667, 10.5], "texture": "#1"}, - "east": {"uv": [2.83333, 8.83333, 2.66667, 10.5], "rotation": 180, "texture": "#1"}, - "south": {"uv": [3, 8.83333, 2.83333, 10.5], "texture": "#1"}, - "west": {"uv": [3.16667, 8.83333, 3, 10.5], "rotation": 180, "texture": "#1"}, - "up": {"uv": [2.83333, 8.83333, 3, 8.66667], "texture": "#1"}, - "down": {"uv": [3, 8.66667, 3.16667, 8.83333], "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 8.83333, + 3.16667, + 10.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2.83333, + 8.83333, + 2.66667, + 10.5 + ], + "rotation": 180, + "texture": "#1" + }, + "south": { + "uv": [ + 3, + 8.83333, + 2.83333, + 10.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.16667, + 8.83333, + 3, + 10.5 + ], + "rotation": 180, + "texture": "#1" + }, + "up": { + "uv": [ + 2.83333, + 8.83333, + 3, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3, + 8.66667, + 3.16667, + 8.83333 + ], + "texture": "#1" + } } }, { - "from": [2.875, 1.025, 15], - "to": [3.325, 12.525, 16], + "from": [ + 2.875, + 1.025, + 15 + ], + "to": [ + 3.325, + 12.525, + 16 + ], "shade": false, - "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 9, 8]}, + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [0.66667, 10.66667, 0.5, 12.33333], "texture": "#1"}, - "east": {"uv": [0.16667, 10.66667, 0, 12.33333], "rotation": 180, "texture": "#1"}, - "south": {"uv": [0.33333, 10.66667, 0.16667, 12.33333], "texture": "#1"}, - "west": {"uv": [0.5, 10.66667, 0.33333, 12.33333], "rotation": 180, "texture": "#1"}, - "up": {"uv": [0.16667, 10.66667, 0.33333, 10.5], "texture": "#1"}, - "down": {"uv": [0.33333, 10.5, 0.5, 10.66667], "texture": "#1"} + "north": { + "uv": [ + 0.66667, + 10.66667, + 0.5, + 12.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0.16667, + 10.66667, + 0, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "south": { + "uv": [ + 0.33333, + 10.66667, + 0.16667, + 12.33333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 0.5, + 10.66667, + 0.33333, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "up": { + "uv": [ + 0.16667, + 10.66667, + 0.33333, + 10.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 0.33333, + 10.5, + 0.5, + 10.66667 + ], + "texture": "#1" + } } }, { - "from": [0.625, 3.425, 15], - "to": [5, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 0.625, + 3.425, + 15 + ], + "to": [ + 5, + 4, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [10, 13, 9.33333, 13.16667], "texture": "#1"}, - "south": {"uv": [9.16667, 13, 8.5, 13.16667], "texture": "#1"}, - "up": {"uv": [8.5, 13, 9.16667, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [9.16667, 12.83333, 9.83333, 13], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 10, + 13, + 9.33333, + 13.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 9.16667, + 13, + 8.5, + 13.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.5, + 13, + 9.16667, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 9.16667, + 12.83333, + 9.83333, + 13 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 3.425, 15], - "to": [15.375, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3.425, + 15 + ], + "to": [ + 15.375, + 4, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.66667, 13.5, 1, 13.66667], "texture": "#1"}, - "south": {"uv": [0.83333, 13.5, 0.16667, 13.66667], "texture": "#1"}, - "up": {"uv": [0.16667, 13.5, 0.83333, 13.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0.83333, 13.33333, 1.5, 13.5], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.66667, + 13.5, + 1, + 13.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.83333, + 13.5, + 0.16667, + 13.66667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 0.16667, + 13.5, + 0.83333, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 0.83333, + 13.33333, + 1.5, + 13.5 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12.675, 1.025, 15], - "to": [13.125, 12.525, 16], - "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 9, 8]}, + "from": [ + 12.675, + 1.025, + 15 + ], + "to": [ + 13.125, + 12.525, + 16 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4.66667, 8.83333, 4.5, 10.5], "texture": "#1"}, - "east": {"uv": [4.16667, 8.83333, 4, 10.5], "texture": "#1"}, - "south": {"uv": [4.33333, 8.83333, 4.16667, 10.5], "texture": "#1"}, - "west": {"uv": [4.5, 8.83333, 4.33333, 10.5], "texture": "#1"}, - "up": {"uv": [4.16667, 8.83333, 4.33333, 8.66667], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.33333, 8.66667, 4.5, 8.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4.66667, + 8.83333, + 4.5, + 10.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4.16667, + 8.83333, + 4, + 10.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.33333, + 8.83333, + 4.16667, + 10.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.5, + 8.83333, + 4.33333, + 10.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4.16667, + 8.83333, + 4.33333, + 8.66667 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.33333, + 8.66667, + 4.5, + 8.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12.675, 1.025, 0], - "to": [13.125, 12.525, 1], - "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 9, 8]}, + "from": [ + 12.675, + 1.025, + 0 + ], + "to": [ + 13.125, + 12.525, + 1 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4, 8.83333, 3.83333, 10.5], "texture": "#1"}, - "east": {"uv": [3.5, 8.83333, 3.33333, 10.5], "texture": "#1"}, - "south": {"uv": [3.66667, 8.83333, 3.5, 10.5], "texture": "#1"}, - "west": {"uv": [3.83333, 8.83333, 3.66667, 10.5], "texture": "#1"}, - "up": {"uv": [3.5, 8.83333, 3.66667, 8.66667], "rotation": 180, "texture": "#1"}, - "down": {"uv": [3.66667, 8.66667, 3.83333, 8.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 8.83333, + 3.83333, + 10.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 8.83333, + 3.33333, + 10.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.66667, + 8.83333, + 3.5, + 10.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.83333, + 8.83333, + 3.66667, + 10.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.5, + 8.83333, + 3.66667, + 8.66667 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 3.66667, + 8.66667, + 3.83333, + 8.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 11.75, 11.25], - "to": [5, 13, 13.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 1.75, + 11.75, + 11.25 + ], + "to": [ + 5, + 13, + 13.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [10, 12.66667, 9.5, 12.83333], "texture": "#1"}, - "south": {"uv": [9.16667, 12.66667, 8.66667, 12.83333], "texture": "#1"}, - "west": {"uv": [9.5, 12.66667, 9.16667, 12.83333], "texture": "#1"}, - "up": {"uv": [8.66667, 12.66667, 9.16667, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [9.16667, 12.33333, 9.66667, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 10, + 12.66667, + 9.5, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 9.16667, + 12.66667, + 8.66667, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 9.5, + 12.66667, + 9.16667, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.66667, + 12.66667, + 9.16667, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 9.16667, + 12.33333, + 9.66667, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 4.75, 11.25], - "to": [5, 6, 13.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 1.75, + 4.75, + 11.25 + ], + "to": [ + 5, + 6, + 13.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [10, 12.66667, 9.5, 12.83333], "texture": "#1"}, - "south": {"uv": [9.16667, 12.66667, 8.66667, 12.83333], "texture": "#1"}, - "west": {"uv": [9.5, 12.66667, 9.16667, 12.83333], "texture": "#1"}, - "up": {"uv": [8.66667, 12.66667, 9.16667, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [9.16667, 12.33333, 9.66667, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 10, + 12.66667, + 9.5, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 9.16667, + 12.66667, + 8.66667, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 9.5, + 12.66667, + 9.16667, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.66667, + 12.66667, + 9.16667, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 9.16667, + 12.33333, + 9.66667, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 3, 11.5], - "to": [5, 4, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 3, + 11.5 + ], + "to": [ + 5, + 4, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.66667, 13.16667, 1.16667, 13.33333], "texture": "#1"}, - "south": {"uv": [0.83333, 13.16667, 0.33333, 13.33333], "texture": "#1"}, - "west": {"uv": [1.16667, 13.16667, 0.83333, 13.33333], "texture": "#1"}, - "up": {"uv": [0.33333, 13.16667, 0.83333, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0.83333, 12.83333, 1.33333, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.66667, + 13.16667, + 1.16667, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.83333, + 13.16667, + 0.33333, + 13.33333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.16667, + 13.16667, + 0.83333, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 0.33333, + 13.16667, + 0.83333, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 0.83333, + 12.83333, + 1.33333, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 3, 8.5], - "to": [5, 4, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 3, + 8.5 + ], + "to": [ + 5, + 4, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2.33333, 10.83333, 1.83333, 11], "texture": "#1"}, - "south": {"uv": [1.5, 10.83333, 1, 11], "texture": "#1"}, - "west": {"uv": [1.83333, 10.83333, 1.5, 11], "texture": "#1"}, - "up": {"uv": [1, 10.83333, 1.5, 10.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1.5, 10.5, 2, 10.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.33333, + 10.83333, + 1.83333, + 11 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 10.83333, + 1, + 11 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.83333, + 10.83333, + 1.5, + 11 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1, + 10.83333, + 1.5, + 10.5 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 1.5, + 10.5, + 2, + 10.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 11.75, 8.25], - "to": [5, 13, 10.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 1.75, + 11.75, + 8.25 + ], + "to": [ + 5, + 13, + 10.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4, 10.83333, 3.5, 11], "texture": "#1"}, - "south": {"uv": [3.16667, 10.83333, 2.66667, 11], "texture": "#1"}, - "west": {"uv": [3.5, 10.83333, 3.16667, 11], "texture": "#1"}, - "up": {"uv": [2.66667, 10.83333, 3.16667, 10.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [3.16667, 10.5, 3.66667, 10.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 10.83333, + 3.5, + 11 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.16667, + 10.83333, + 2.66667, + 11 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 10.83333, + 3.16667, + 11 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.66667, + 10.83333, + 3.16667, + 10.5 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 3.16667, + 10.5, + 3.66667, + 10.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 4.75, 8.25], - "to": [5, 6, 10.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 1.75, + 4.75, + 8.25 + ], + "to": [ + 5, + 6, + 10.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [4, 10.83333, 3.5, 11], "texture": "#1"}, - "south": {"uv": [3.16667, 10.83333, 2.66667, 11], "texture": "#1"}, - "west": {"uv": [3.5, 10.83333, 3.16667, 11], "texture": "#1"}, - "up": {"uv": [2.66667, 10.83333, 3.16667, 10.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [3.16667, 10.5, 3.66667, 10.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 10.83333, + 3.5, + 11 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.16667, + 10.83333, + 2.66667, + 11 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 10.83333, + 3.16667, + 11 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.66667, + 10.83333, + 3.16667, + 10.5 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 3.16667, + 10.5, + 3.66667, + 10.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 3, 5.5], - "to": [5, 4, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 3, + 5.5 + ], + "to": [ + 5, + 4, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4, 11.33333, 3.5, 11.5], "texture": "#1"}, - "south": {"uv": [3.16667, 11.33333, 2.66667, 11.5], "texture": "#1"}, - "west": {"uv": [3.5, 11.33333, 3.16667, 11.5], "texture": "#1"}, - "up": {"uv": [2.66667, 11.33333, 3.16667, 11], "rotation": 180, "texture": "#1"}, - "down": {"uv": [3.16667, 11, 3.66667, 11.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 11.33333, + 3.5, + 11.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.16667, + 11.33333, + 2.66667, + 11.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 11.33333, + 3.16667, + 11.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.66667, + 11.33333, + 3.16667, + 11 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 3.16667, + 11, + 3.66667, + 11.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2.5, 4, 6], - "to": [3.5, 5, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2.5, + 4, + 6 + ], + "to": [ + 3.5, + 5, + 7 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8, 14, 7.83333, 14.16667], "texture": "#1"}, - "east": {"uv": [7.5, 14, 7.33333, 14.16667], "texture": "#1"}, - "south": {"uv": [7.66667, 14, 7.5, 14.16667], "texture": "#1"}, - "west": {"uv": [8, 14, 7.83333, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": { + "uv": [ + 8, + 14, + 7.83333, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7.5, + 14, + 7.33333, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.66667, + 14, + 7.5, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 8, + 14, + 7.83333, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 0, + 0, + 0, + 0 + ], + "texture": "#1" + } } }, { - "from": [1.75, 11.75, 5.25], - "to": [5, 13, 7.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 1.75, + 11.75, + 5.25 + ], + "to": [ + 5, + 13, + 7.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [5, 12.66667, 4.5, 12.83333], "texture": "#1"}, - "south": {"uv": [4.16667, 12.66667, 3.66667, 12.83333], "texture": "#1"}, - "west": {"uv": [4.5, 12.66667, 4.16667, 12.83333], "texture": "#1"}, - "up": {"uv": [3.66667, 12.66667, 4.16667, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.16667, 12.33333, 4.66667, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5, + 12.66667, + 4.5, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.16667, + 12.66667, + 3.66667, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.5, + 12.66667, + 4.16667, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.66667, + 12.66667, + 4.16667, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.16667, + 12.33333, + 4.66667, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 4.75, 5.25], - "to": [5, 6, 7.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 1.75, + 4.75, + 5.25 + ], + "to": [ + 5, + 6, + 7.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [5, 12.66667, 4.5, 12.83333], "texture": "#1"}, - "south": {"uv": [4.16667, 12.66667, 3.66667, 12.83333], "texture": "#1"}, - "west": {"uv": [4.5, 12.66667, 4.16667, 12.83333], "texture": "#1"}, - "up": {"uv": [3.66667, 12.66667, 4.16667, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.16667, 12.33333, 4.66667, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5, + 12.66667, + 4.5, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.16667, + 12.66667, + 3.66667, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.5, + 12.66667, + 4.16667, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.66667, + 12.66667, + 4.16667, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.16667, + 12.33333, + 4.66667, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 3, 2.5], - "to": [5, 4, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 3, + 2.5 + ], + "to": [ + 5, + 4, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6.66667, 12.66667, 6.16667, 12.83333], "texture": "#1"}, - "south": {"uv": [5.83333, 12.66667, 5.33333, 12.83333], "texture": "#1"}, - "west": {"uv": [6.16667, 12.66667, 5.83333, 12.83333], "texture": "#1"}, - "up": {"uv": [5.33333, 12.66667, 5.83333, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [5.83333, 12.33333, 6.33333, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 6.66667, + 12.66667, + 6.16667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.83333, + 12.66667, + 5.33333, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6.16667, + 12.66667, + 5.83333, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.33333, + 12.66667, + 5.83333, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 5.83333, + 12.33333, + 6.33333, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 11.75, 2.25], - "to": [5, 13, 4.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 1.75, + 11.75, + 2.25 + ], + "to": [ + 5, + 13, + 4.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.66667, 12.66667, 1.16667, 12.83333], "texture": "#1"}, - "south": {"uv": [0.83333, 12.66667, 0.33333, 12.83333], "texture": "#1"}, - "west": {"uv": [1.16667, 12.66667, 0.83333, 12.83333], "texture": "#1"}, - "up": {"uv": [0.33333, 12.66667, 0.83333, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0.83333, 12.33333, 1.33333, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.66667, + 12.66667, + 1.16667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.83333, + 12.66667, + 0.33333, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.16667, + 12.66667, + 0.83333, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 0.33333, + 12.66667, + 0.83333, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 0.83333, + 12.33333, + 1.33333, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1.75, 4.75, 2.25], - "to": [5, 6, 4.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 1.75, + 4.75, + 2.25 + ], + "to": [ + 5, + 6, + 4.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [1.66667, 12.66667, 1.16667, 12.83333], "texture": "#1"}, - "south": {"uv": [0.83333, 12.66667, 0.33333, 12.83333], "texture": "#1"}, - "west": {"uv": [1.16667, 12.66667, 0.83333, 12.83333], "texture": "#1"}, - "up": {"uv": [0.33333, 12.66667, 0.83333, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0.83333, 12.33333, 1.33333, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.66667, + 12.66667, + 1.16667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.83333, + 12.66667, + 0.33333, + 12.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.16667, + 12.66667, + 0.83333, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 0.33333, + 12.66667, + 0.83333, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 0.83333, + 12.33333, + 1.33333, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 11.75, 11.25], - "to": [14.25, 13, 13.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 10.75, + 11.75, + 11.25 + ], + "to": [ + 14.25, + 13, + 13.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 13.16667, 2.83333, 13.33333], "texture": "#1"}, - "east": {"uv": [2, 13.16667, 1.66667, 13.33333], "texture": "#1"}, - "south": {"uv": [2.5, 13.16667, 2, 13.33333], "texture": "#1"}, - "up": {"uv": [2, 13.16667, 2.5, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2.5, 12.83333, 3, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 13.16667, + 2.83333, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2, + 13.16667, + 1.66667, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 13.16667, + 2, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2, + 13.16667, + 2.5, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 2.5, + 12.83333, + 3, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 4.75, 11.25], - "to": [14.25, 6, 13.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 10.75, + 4.75, + 11.25 + ], + "to": [ + 14.25, + 6, + 13.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 13.16667, 2.83333, 13.33333], "texture": "#1"}, - "east": {"uv": [2, 13.16667, 1.66667, 13.33333], "texture": "#1"}, - "south": {"uv": [2.5, 13.16667, 2, 13.33333], "texture": "#1"}, - "up": {"uv": [2, 13.16667, 2.5, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2.5, 12.83333, 3, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 13.16667, + 2.83333, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2, + 13.16667, + 1.66667, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 13.16667, + 2, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2, + 13.16667, + 2.5, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 2.5, + 12.83333, + 3, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 3, 11.5], - "to": [14, 4, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3, + 11.5 + ], + "to": [ + 14, + 4, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8.33333, 13.16667, 7.83333, 13.33333], "texture": "#1"}, - "east": {"uv": [7, 13.16667, 6.66667, 13.33333], "texture": "#1"}, - "south": {"uv": [7.5, 13.16667, 7, 13.33333], "texture": "#1"}, - "up": {"uv": [7, 13.16667, 7.5, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [7.5, 12.83333, 8, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 8.33333, + 13.16667, + 7.83333, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7, + 13.16667, + 6.66667, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.5, + 13.16667, + 7, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7, + 13.16667, + 7.5, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 7.5, + 12.83333, + 8, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 3, 8.5], - "to": [14, 4, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3, + 8.5 + ], + "to": [ + 14, + 4, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6.66667, 13.16667, 6.16667, 13.33333], "texture": "#1"}, - "east": {"uv": [5.33333, 13.16667, 5, 13.33333], "texture": "#1"}, - "south": {"uv": [5.83333, 13.16667, 5.33333, 13.33333], "texture": "#1"}, - "up": {"uv": [5.33333, 13.16667, 5.83333, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [5.83333, 12.83333, 6.33333, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 6.66667, + 13.16667, + 6.16667, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.33333, + 13.16667, + 5, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.83333, + 13.16667, + 5.33333, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.33333, + 13.16667, + 5.83333, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 5.83333, + 12.83333, + 6.33333, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12.5, 4, 9], - "to": [13.5, 5, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12.5, + 4, + 9 + ], + "to": [ + 13.5, + 5, + 10 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4.66667, 14, 4.5, 14.16667], "texture": "#1"}, - "east": {"uv": [4.16667, 14, 4, 14.16667], "texture": "#1"}, - "south": {"uv": [4.33333, 14, 4.16667, 14.16667], "texture": "#1"}, - "west": {"uv": [4.5, 14, 4.33333, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 4.66667, + 14, + 4.5, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4.16667, + 14, + 4, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.33333, + 14, + 4.16667, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.5, + 14, + 4.33333, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [10.75, 11.75, 8.25], - "to": [14.25, 13, 10.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 10.75, + 11.75, + 8.25 + ], + "to": [ + 14.25, + 13, + 10.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 12.66667, 2.83333, 12.83333], "texture": "#1"}, - "east": {"uv": [2, 12.66667, 1.66667, 12.83333], "texture": "#1"}, - "south": {"uv": [2.5, 12.66667, 2, 12.83333], "texture": "#1"}, - "up": {"uv": [2, 12.66667, 2.5, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2.5, 12.33333, 3, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 12.66667, + 2.83333, + 12.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2, + 12.66667, + 1.66667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 12.66667, + 2, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2, + 12.66667, + 2.5, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 2.5, + 12.33333, + 3, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 4.75, 8.25], - "to": [14.25, 6, 10.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 10.75, + 4.75, + 8.25 + ], + "to": [ + 14.25, + 6, + 10.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [3.33333, 12.66667, 2.83333, 12.83333], "texture": "#1"}, - "east": {"uv": [2, 12.66667, 1.66667, 12.83333], "texture": "#1"}, - "south": {"uv": [2.5, 12.66667, 2, 12.83333], "texture": "#1"}, - "up": {"uv": [2, 12.66667, 2.5, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2.5, 12.33333, 3, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3.33333, + 12.66667, + 2.83333, + 12.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2, + 12.66667, + 1.66667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 12.66667, + 2, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2, + 12.66667, + 2.5, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 2.5, + 12.33333, + 3, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 11.75, 5.25], - "to": [14.25, 13, 7.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 10.75, + 11.75, + 5.25 + ], + "to": [ + 14.25, + 13, + 7.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [5, 13.16667, 4.5, 13.33333], "texture": "#1"}, - "east": {"uv": [3.66667, 13.16667, 3.33333, 13.33333], "texture": "#1"}, - "south": {"uv": [4.16667, 13.16667, 3.66667, 13.33333], "texture": "#1"}, - "up": {"uv": [3.66667, 13.16667, 4.16667, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.16667, 12.83333, 4.66667, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5, + 13.16667, + 4.5, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.66667, + 13.16667, + 3.33333, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.16667, + 13.16667, + 3.66667, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.66667, + 13.16667, + 4.16667, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.16667, + 12.83333, + 4.66667, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 4.75, 5.25], - "to": [14.25, 6, 7.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 10.75, + 4.75, + 5.25 + ], + "to": [ + 14.25, + 6, + 7.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [5, 13.16667, 4.5, 13.33333], "texture": "#1"}, - "east": {"uv": [3.66667, 13.16667, 3.33333, 13.33333], "texture": "#1"}, - "south": {"uv": [4.16667, 13.16667, 3.66667, 13.33333], "texture": "#1"}, - "up": {"uv": [3.66667, 13.16667, 4.16667, 12.83333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [4.16667, 12.83333, 4.66667, 13.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5, + 13.16667, + 4.5, + 13.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.66667, + 13.16667, + 3.33333, + 13.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.16667, + 13.16667, + 3.66667, + 13.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.66667, + 13.16667, + 4.16667, + 12.83333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 4.16667, + 12.83333, + 4.66667, + 13.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12.5, 4, 6], - "to": [13.5, 5, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12.5, + 4, + 6 + ], + "to": [ + 13.5, + 5, + 7 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6, 14, 5.83333, 14.16667], "texture": "#1"}, - "east": {"uv": [5.5, 14, 5.33333, 14.16667], "texture": "#1"}, - "south": {"uv": [5.66667, 14, 5.5, 14.16667], "texture": "#1"}, - "west": {"uv": [5.83333, 14, 5.66667, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 6, + 14, + 5.83333, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.5, + 14, + 5.33333, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 14, + 5.5, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.83333, + 14, + 5.66667, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [11, 3, 5.5], - "to": [14, 4, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3, + 5.5 + ], + "to": [ + 14, + 4, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2.33333, 11.33333, 1.83333, 11.5], "texture": "#1"}, - "east": {"uv": [1, 11.33333, 0.66667, 11.5], "texture": "#1"}, - "south": {"uv": [1.5, 11.33333, 1, 11.5], "texture": "#1"}, - "up": {"uv": [1, 11.33333, 1.5, 11], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1.5, 11, 2, 11.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.33333, + 11.33333, + 1.83333, + 11.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1, + 11.33333, + 0.66667, + 11.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 11.33333, + 1, + 11.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1, + 11.33333, + 1.5, + 11 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 1.5, + 11, + 2, + 11.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 3, 2.5], - "to": [14, 4, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 3, + 2.5 + ], + "to": [ + 14, + 4, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8.33333, 12.66667, 7.83333, 12.83333], "texture": "#1"}, - "east": {"uv": [7, 12.66667, 6.66667, 12.83333], "texture": "#1"}, - "south": {"uv": [7.5, 12.66667, 7, 12.83333], "texture": "#1"}, - "up": {"uv": [7, 12.66667, 7.5, 12.33333], "rotation": 180, "texture": "#1"}, - "down": {"uv": [7.5, 12.33333, 8, 12.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 8.33333, + 12.66667, + 7.83333, + 12.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7, + 12.66667, + 6.66667, + 12.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.5, + 12.66667, + 7, + 12.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7, + 12.66667, + 7.5, + 12.33333 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 7.5, + 12.33333, + 8, + 12.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12.5, 4, 3], - "to": [13.5, 5, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12.5, + 4, + 3 + ], + "to": [ + 13.5, + 5, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [5.33333, 14, 5.16667, 14.16667], "texture": "#1"}, - "east": {"uv": [4.83333, 14, 4.66667, 14.16667], "texture": "#1"}, - "south": {"uv": [5, 14, 4.83333, 14.16667], "texture": "#1"}, - "west": {"uv": [5.16667, 14, 5, 14.16667], "texture": "#1"}, - "up": {"uv": [5.83333, 14, 6, 14.16667], "texture": "#1"} + "north": { + "uv": [ + 5.33333, + 14, + 5.16667, + 14.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4.83333, + 14, + 4.66667, + 14.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5, + 14, + 4.83333, + 14.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.16667, + 14, + 5, + 14.16667 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.83333, + 14, + 6, + 14.16667 + ], + "texture": "#1" + } } }, { - "from": [10.75, 11.75, 2.25], - "to": [14.25, 13, 4.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 10.75, + 11.75, + 2.25 + ], + "to": [ + 14.25, + 13, + 4.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2.33333, 11.83333, 1.83333, 12], "texture": "#1"}, - "east": {"uv": [1, 11.83333, 0.66667, 12], "texture": "#1"}, - "south": {"uv": [1.5, 11.83333, 1, 12], "texture": "#1"}, - "up": {"uv": [1, 11.83333, 1.5, 11.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1.5, 11.5, 2, 11.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.33333, + 11.83333, + 1.83333, + 12 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1, + 11.83333, + 0.66667, + 12 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 11.83333, + 1, + 12 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1, + 11.83333, + 1.5, + 11.5 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 1.5, + 11.5, + 2, + 11.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [10.75, 4.75, 2.25], - "to": [14.25, 6, 4.75], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 8]}, + "from": [ + 10.75, + 4.75, + 2.25 + ], + "to": [ + 14.25, + 6, + 4.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 2, + 8 + ] + }, "faces": { - "north": {"uv": [2.33333, 11.83333, 1.83333, 12], "texture": "#1"}, - "east": {"uv": [1, 11.83333, 0.66667, 12], "texture": "#1"}, - "south": {"uv": [1.5, 11.83333, 1, 12], "texture": "#1"}, - "up": {"uv": [1, 11.83333, 1.5, 11.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1.5, 11.5, 2, 11.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.33333, + 11.83333, + 1.83333, + 12 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1, + 11.83333, + 0.66667, + 12 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 11.83333, + 1, + 12 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1, + 11.83333, + 1.5, + 11.5 + ], + "rotation": 180, + "texture": "#1" + }, + "down": { + "uv": [ + 1.5, + 11.5, + 2, + 11.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 13, 2.5], - "to": [12.5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 13, + 2.5 + ], + "to": [ + 12.5, + 14, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [3, 14.16667, 2.83333, 14.33333], "texture": "#1"}, - "east": {"uv": [2.33333, 14.16667, 2, 14.33333], "texture": "#1"}, - "south": {"uv": [2.5, 14.16667, 2.33333, 14.33333], "texture": "#1"}, - "up": {"uv": [2.33333, 14.16667, 2.5, 13.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 3, + 14.16667, + 2.83333, + 14.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2.33333, + 14.16667, + 2, + 14.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.5, + 14.16667, + 2.33333, + 14.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.33333, + 14.16667, + 2.5, + 13.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 13, 5.5], - "to": [12.5, 14, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 13, + 5.5 + ], + "to": [ + 12.5, + 14, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2, 14.16667, 1.83333, 14.33333], "texture": "#1"}, - "east": {"uv": [1.33333, 14.16667, 1, 14.33333], "texture": "#1"}, - "south": {"uv": [1.5, 14.16667, 1.33333, 14.33333], "texture": "#1"}, - "up": {"uv": [1.33333, 14.16667, 1.5, 13.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2, + 14.16667, + 1.83333, + 14.33333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1.33333, + 14.16667, + 1, + 14.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 14.16667, + 1.33333, + 14.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1.33333, + 14.16667, + 1.5, + 13.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 13, 8.5], - "to": [12.5, 14, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 13, + 8.5 + ], + "to": [ + 12.5, + 14, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8, 13.66667, 7.83333, 13.83333], "texture": "#1"}, - "east": {"uv": [7.33333, 13.66667, 7, 13.83333], "texture": "#1"}, - "south": {"uv": [7.5, 13.66667, 7.33333, 13.83333], "texture": "#1"}, - "up": {"uv": [7.33333, 13.66667, 7.5, 13.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 8, + 13.66667, + 7.83333, + 13.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7.33333, + 13.66667, + 7, + 13.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.5, + 13.66667, + 7.33333, + 13.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7.33333, + 13.66667, + 7.5, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [11, 13, 11.5], - "to": [12.5, 14, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 11, + 13, + 11.5 + ], + "to": [ + 12.5, + 14, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [7, 13.66667, 6.83333, 13.83333], "texture": "#1"}, - "east": {"uv": [6.33333, 13.66667, 6, 13.83333], "texture": "#1"}, - "south": {"uv": [6.5, 13.66667, 6.33333, 13.83333], "texture": "#1"}, - "up": {"uv": [6.33333, 13.66667, 6.5, 13.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 7, + 13.66667, + 6.83333, + 13.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.33333, + 13.66667, + 6, + 13.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6.5, + 13.66667, + 6.33333, + 13.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 6.33333, + 13.66667, + 6.5, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [3.5, 13, 2.5], - "to": [5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 3.5, + 13, + 2.5 + ], + "to": [ + 5, + 14, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6, 13.66667, 5.83333, 13.83333], "texture": "#1"}, - "south": {"uv": [5.5, 13.66667, 5.33333, 13.83333], "texture": "#1"}, - "west": {"uv": [5.83333, 13.66667, 5.5, 13.83333], "texture": "#1"}, - "up": {"uv": [5.33333, 13.66667, 5.5, 13.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 6, + 13.66667, + 5.83333, + 13.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.5, + 13.66667, + 5.33333, + 13.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.83333, + 13.66667, + 5.5, + 13.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5.33333, + 13.66667, + 5.5, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [3.5, 13, 5.5], - "to": [5, 14, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 3.5, + 13, + 5.5 + ], + "to": [ + 5, + 14, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4, 14.16667, 3.83333, 14.33333], "texture": "#1"}, - "south": {"uv": [3.5, 14.16667, 3.33333, 14.33333], "texture": "#1"}, - "west": {"uv": [3.83333, 14.16667, 3.5, 14.33333], "texture": "#1"}, - "up": {"uv": [3.33333, 14.16667, 3.5, 13.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 14.16667, + 3.83333, + 14.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.5, + 14.16667, + 3.33333, + 14.33333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.83333, + 14.16667, + 3.5, + 14.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.33333, + 14.16667, + 3.5, + 13.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [3.5, 13, 8.5], - "to": [5, 14, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 3.5, + 13, + 8.5 + ], + "to": [ + 5, + 14, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1, 14.16667, 0.83333, 14.33333], "texture": "#1"}, - "south": {"uv": [0.5, 14.16667, 0.33333, 14.33333], "texture": "#1"}, - "west": {"uv": [0.83333, 14.16667, 0.5, 14.33333], "texture": "#1"}, - "up": {"uv": [0.33333, 14.16667, 0.5, 13.83333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1, + 14.16667, + 0.83333, + 14.33333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.5, + 14.16667, + 0.33333, + 14.33333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 0.83333, + 14.16667, + 0.5, + 14.33333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 0.33333, + 14.16667, + 0.5, + 13.83333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [3.5, 13, 11.5], - "to": [5, 14, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 3.5, + 13, + 11.5 + ], + "to": [ + 5, + 14, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [9, 13.66667, 8.83333, 13.83333], "texture": "#1"}, - "south": {"uv": [8.5, 13.66667, 8.33333, 13.83333], "texture": "#1"}, - "west": {"uv": [8.83333, 13.66667, 8.5, 13.83333], "texture": "#1"}, - "up": {"uv": [8.33333, 13.66667, 8.5, 13.33333], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 9, + 13.66667, + 8.83333, + 13.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 8.5, + 13.66667, + 8.33333, + 13.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 8.83333, + 13.66667, + 8.5, + 13.83333 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.33333, + 13.66667, + 8.5, + 13.33333 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [1, 0, 15], - "to": [15, 1, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 23]}, + "from": [ + 1, + 0, + 15 + ], + "to": [ + 15, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 23 + ] + }, "faces": { - "north": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "south": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "down": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"} + "north": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + } } }, { - "from": [0, 1, 0], - "to": [16, 2, 16], + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 2, + 16 + ], "faces": { - "north": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "east": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "south": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "west": {"uv": [4, 2, 6, 2.125], "texture": "#1"}, - "up": {"uv": [8, 2.66667, 5.33333, 0], "texture": "#1"}, - "down": {"uv": [5.33333, 0, 2.66667, 2.66667], "texture": "#1"} + "north": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.125 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8, + 2.66667, + 5.33333, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 5.33333, + 0, + 2.66667, + 2.66667 + ], + "texture": "#1" + } } }, { - "from": [0, 0, 0], - "to": [1, 1, 16], + "from": [ + 0, + 0, + 0 + ], + "to": [ + 1, + 1, + 16 + ], "faces": { - "north": {"uv": [5.66667, 2.5, 5.83333, 2.83333], "texture": "#1"}, - "east": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "south": {"uv": [5.66667, 2.5, 5.83333, 2.83333], "texture": "#1"}, - "west": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "down": {"uv": [2.66667, 0.5, 2.83333, 2.5], "texture": "#1"} + "north": { + "uv": [ + 5.66667, + 2.5, + 5.83333, + 2.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 2.5, + 5.83333, + 2.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 2.66667, + 0.5, + 2.83333, + 2.5 + ], + "texture": "#1" + } } }, { - "from": [15, 0, 0], - "to": [16, 1, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "from": [ + 15, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 23, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [5.66667, 2.5, 5.83333, 2.83333], "texture": "#1"}, - "east": {"uv": [4, 2.66667, 6, 2.83333], "texture": "#1"}, - "south": {"uv": [5.66667, 2.5, 5.83333, 2.83333], "texture": "#1"}, - "west": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "down": {"uv": [2.66667, 0.5, 2.83333, 2.5], "texture": "#1"} + "north": { + "uv": [ + 5.66667, + 2.5, + 5.83333, + 2.83333 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4, + 2.66667, + 6, + 2.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 2.5, + 5.83333, + 2.83333 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 2.66667, + 0.5, + 2.83333, + 2.5 + ], + "texture": "#1" + } } }, { - "from": [1, 0, 0], - "to": [15, 1, 1], + "from": [ + 1, + 0, + 0 + ], + "to": [ + 15, + 1, + 1 + ], "faces": { - "north": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "south": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"}, - "down": {"uv": [5.66667, 2.66667, 7.66667, 2.83333], "texture": "#1"} + "north": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 5.66667, + 2.66667, + 7.66667, + 2.83333 + ], + "texture": "#1" + } } }, { - "from": [4, 0, 4], - "to": [12, 1, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]}, + "from": [ + 4, + 0, + 4 + ], + "to": [ + 12, + 1, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 7, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [6, 0, 7, 0.125], "texture": "#1"}, - "east": {"uv": [6, 0, 7, 0.125], "texture": "#1"}, - "south": {"uv": [6, 0, 7, 0.125], "texture": "#1"}, - "west": {"uv": [6, 0, 7, 0.125], "texture": "#1"}, - "down": {"uv": [11, 6.16667, 9.66667, 7.5], "texture": "#1"} + "north": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 11, + 6.16667, + 9.66667, + 7.5 + ], + "texture": "#1" + } } } ] }, "translucent": { + "render_type": "minecraft:translucent", "parent": "block/cube_all", "textures": { - "1": "nuclearscience:model/chemicalextractor", - "particle": "nuclearscience:model/chemicalextractor" + "1": "nuclearscience:block/model/chemicalextractor", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { - "from": [2, 5, 11.5], - "to": [4, 12, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 5, + 11.5 + ], + "to": [ + 4, + 12, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [5.33333, 7.66667, 5, 8.66667], "texture": "#1"}, - "east": {"uv": [4.33333, 7.66667, 4, 8.66667], "texture": "#1"}, - "south": {"uv": [4.66667, 7.66667, 4.33333, 8.66667], "texture": "#1"}, - "west": {"uv": [5, 7.66667, 4.66667, 8.66667], "texture": "#1"}, - "down": {"uv": [4.66667, 7.33333, 5, 7.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 5.33333, + 7.66667, + 5, + 8.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4.33333, + 7.66667, + 4, + 8.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4.66667, + 7.66667, + 4.33333, + 8.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5, + 7.66667, + 4.66667, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 4.66667, + 7.33333, + 5, + 7.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 5, 8.5], - "to": [4, 12, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 5, + 8.5 + ], + "to": [ + 4, + 12, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2.66667, 9, 2.33333, 10], "texture": "#1"}, - "east": {"uv": [1.66667, 9, 1.33333, 10], "texture": "#1"}, - "south": {"uv": [2, 9, 1.66667, 10], "texture": "#1"}, - "west": {"uv": [2.33333, 9, 2, 10], "texture": "#1"}, - "down": {"uv": [2, 8.66667, 2.33333, 9], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.66667, + 9, + 2.33333, + 10 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1.66667, + 9, + 1.33333, + 10 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2, + 9, + 1.66667, + 10 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 2.33333, + 9, + 2, + 10 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 2, + 8.66667, + 2.33333, + 9 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 5, 5.5], - "to": [4, 12, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 5, + 5.5 + ], + "to": [ + 4, + 12, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [6.66667, 7.66667, 6.33333, 8.66667], "texture": "#1"}, - "east": {"uv": [5.66667, 7.66667, 5.33333, 8.66667], "texture": "#1"}, - "south": {"uv": [6, 7.66667, 5.66667, 8.66667], "texture": "#1"}, - "west": {"uv": [6.33333, 7.66667, 6, 8.66667], "texture": "#1"}, - "down": {"uv": [6, 7.33333, 6.33333, 7.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 6.66667, + 7.66667, + 6.33333, + 8.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.66667, + 7.66667, + 5.33333, + 8.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 7.66667, + 5.66667, + 8.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6.33333, + 7.66667, + 6, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 6, + 7.33333, + 6.33333, + 7.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [2, 5, 2.5], - "to": [4, 12, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 5, + 2.5 + ], + "to": [ + 4, + 12, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [4, 7.66667, 3.66667, 8.66667], "texture": "#1"}, - "east": {"uv": [3, 7.66667, 2.66667, 8.66667], "texture": "#1"}, - "south": {"uv": [3.33333, 7.66667, 3, 8.66667], "texture": "#1"}, - "west": {"uv": [3.66667, 7.66667, 3.33333, 8.66667], "texture": "#1"}, - "down": {"uv": [3.33333, 7.33333, 3.66667, 7.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 4, + 7.66667, + 3.66667, + 8.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3, + 7.66667, + 2.66667, + 8.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.33333, + 7.66667, + 3, + 8.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.66667, + 7.66667, + 3.33333, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3.33333, + 7.33333, + 3.66667, + 7.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12, 5, 11.5], - "to": [14, 12, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12, + 5, + 11.5 + ], + "to": [ + 14, + 12, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8.66667, 3.16667, 8.33333, 4.16667], "texture": "#1"}, - "east": {"uv": [7.66667, 3.16667, 7.33333, 4.16667], "texture": "#1"}, - "south": {"uv": [8, 3.16667, 7.66667, 4.16667], "texture": "#1"}, - "west": {"uv": [8.33333, 3.16667, 8, 4.16667], "texture": "#1"}, - "down": {"uv": [8, 2.83333, 8.33333, 3.16667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 8.66667, + 3.16667, + 8.33333, + 4.16667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7.66667, + 3.16667, + 7.33333, + 4.16667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 8, + 3.16667, + 7.66667, + 4.16667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 8.33333, + 3.16667, + 8, + 4.16667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 8, + 2.83333, + 8.33333, + 3.16667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12, 5, 5.5], - "to": [14, 12, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12, + 5, + 5.5 + ], + "to": [ + 14, + 12, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.33333, 9, 1, 10], "texture": "#1"}, - "east": {"uv": [0.33333, 9, 0, 10], "texture": "#1"}, - "south": {"uv": [0.66667, 9, 0.33333, 10], "texture": "#1"}, - "west": {"uv": [1, 9, 0.66667, 10], "texture": "#1"}, - "down": {"uv": [0.66667, 8.66667, 1, 9], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.33333, + 9, + 1, + 10 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0.33333, + 9, + 0, + 10 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.66667, + 9, + 0.33333, + 10 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1, + 9, + 0.66667, + 10 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 0.66667, + 8.66667, + 1, + 9 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12, 5, 2.5], - "to": [14, 12, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12, + 5, + 2.5 + ], + "to": [ + 14, + 12, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [1.33333, 7.66667, 1, 8.66667], "texture": "#1"}, - "east": {"uv": [0.33333, 7.66667, 0, 8.66667], "texture": "#1"}, - "south": {"uv": [0.66667, 7.66667, 0.33333, 8.66667], "texture": "#1"}, - "west": {"uv": [1, 7.66667, 0.66667, 8.66667], "texture": "#1"}, - "down": {"uv": [0.66667, 7.33333, 1, 7.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 1.33333, + 7.66667, + 1, + 8.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0.33333, + 7.66667, + 0, + 8.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 0.66667, + 7.66667, + 0.33333, + 8.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1, + 7.66667, + 0.66667, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 0.66667, + 7.33333, + 1, + 7.66667 + ], + "rotation": 180, + "texture": "#1" + } } }, { - "from": [12, 5, 8.5], - "to": [14, 12, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 12, + 5, + 8.5 + ], + "to": [ + 14, + 12, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [2.66667, 7.66667, 2.33333, 8.66667], "texture": "#1"}, - "east": {"uv": [1.66667, 7.66667, 1.33333, 8.66667], "texture": "#1"}, - "south": {"uv": [2, 7.66667, 1.66667, 8.66667], "texture": "#1"}, - "west": {"uv": [2.33333, 7.66667, 2, 8.66667], "texture": "#1"}, - "down": {"uv": [2, 7.33333, 2.33333, 7.66667], "rotation": 180, "texture": "#1"} + "north": { + "uv": [ + 2.66667, + 7.66667, + 2.33333, + 8.66667 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 1.66667, + 7.66667, + 1.33333, + 8.66667 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2, + 7.66667, + 1.66667, + 8.66667 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 2.33333, + 7.66667, + 2, + 8.66667 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 2, + 7.33333, + 2.33333, + 7.66667 + ], + "rotation": 180, + "texture": "#1" + } } } ] } } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/chemicalextractorwater.json b/src/main/resources/assets/nuclearscience/models/block/chemicalextractorwater.json deleted file mode 100644 index 254b5f5e..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/chemicalextractorwater.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "aurilisdev", - "parent": "block/cube_all", - "textures": { - "2": "nuclearscience:fluid/water", - "particle": "nuclearscience:fluid/water" - }, - "elements": [ - { - "from": [-5.75, 0, 4], - "to": [-4.25, 7, 5.25], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [-5.75, 0, 1], - "to": [-4.25, 7, 2.25], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [-5.75, 0, -2], - "to": [-4.25, 7, -0.75], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [-5.75, 0, -5], - "to": [-4.25, 7, -3.75], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [4.25, 0, 4], - "to": [5.75, 7, 5.25], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [4.25, 0, -2], - "to": [5.75, 7, -0.75], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [4.25, 0, -5], - "to": [5.75, 7, -3.75], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - }, - { - "from": [4.25, 0, 1], - "to": [5.75, 7, 2.25], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, - "faces": { - "north": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "east": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "south": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "west": {"uv": [13, 8, 14, 15], "texture": "#2"}, - "up": {"uv": [11, 8, 13, 9], "texture": "#2"}, - "down": {"uv": [11, 8, 13, 9], "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "group", - "origin": [8, 9, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/controlrodassembly.json b/src/main/resources/assets/nuclearscience/models/block/controlrodassembly.json index 48ae3997..71f38989 100644 --- a/src/main/resources/assets/nuclearscience/models/block/controlrodassembly.json +++ b/src/main/resources/assets/nuclearscience/models/block/controlrodassembly.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "0": "nuclearscience:model/controlrods", - "particle": "nuclearscience:model/controlrods" + "0": "nuclearscience:block/model/controlrods", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/controlrodassemblyrod.json b/src/main/resources/assets/nuclearscience/models/block/controlrodassemblyrod.json index 06f89805..33bb58c0 100644 --- a/src/main/resources/assets/nuclearscience/models/block/controlrodassemblyrod.json +++ b/src/main/resources/assets/nuclearscience/models/block/controlrodassemblyrod.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "0": "nuclearscience:model/controlrods", - "particle": "nuclearscience:model/controlrods" + "0": "nuclearscience:block/model/controlrods", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/controlrodassemblystructure.json b/src/main/resources/assets/nuclearscience/models/block/controlrodassemblystructure.json index 96b2bec3..945ea51d 100644 --- a/src/main/resources/assets/nuclearscience/models/block/controlrodassemblystructure.json +++ b/src/main/resources/assets/nuclearscience/models/block/controlrodassemblystructure.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "0": "nuclearscience:model/controlrods", - "particle": "nuclearscience:model/controlrods" + "0": "nuclearscience:block/model/controlrods", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/electromagnet.json b/src/main/resources/assets/nuclearscience/models/block/electromagnet.json deleted file mode 100644 index 47b2996e..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/electromagnet.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "particle": "nuclearscience:block/electromagnet", - "north": "nuclearscience:block/electromagnet", - "south": "nuclearscience:block/electromagnet", - "east": "nuclearscience:block/electromagnet", - "west": "nuclearscience:block/electromagnet", - "up": "nuclearscience:block/electromagnettop", - "down": "nuclearscience:block/electromagnettop" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/block/electromagneticbooster.json b/src/main/resources/assets/nuclearscience/models/block/electromagneticbooster.json index aac7c9c6..ef5387c1 100644 --- a/src/main/resources/assets/nuclearscience/models/block/electromagneticbooster.json +++ b/src/main/resources/assets/nuclearscience/models/block/electromagneticbooster.json @@ -1,6 +1,7 @@ { "credit": "aurilisdev", "parent": "block/cube_all", + "render_type": "minecraft:translucent", "textures": { "particle": "nuclearscience:block/electromagneticbooster", "east": "nuclearscience:block/electromagneticbooster", diff --git a/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterleft.json b/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterleft.json index d2afad6c..bf78ba87 100644 --- a/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterleft.json +++ b/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterleft.json @@ -1,6 +1,7 @@ { "credit": "aurilisdev", "parent": "block/cube_all", + "render_type": "minecraft:translucent", "textures": { "particle": "nuclearscience:block/electromagneticbooster", "east": "nuclearscience:block/electromagneticbooster", diff --git a/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterright.json b/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterright.json index 853da496..ca8928ac 100644 --- a/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterright.json +++ b/src/main/resources/assets/nuclearscience/models/block/electromagneticboosterright.json @@ -1,6 +1,7 @@ { "credit": "aurilisdev", "parent": "block/cube_all", + "render_type": "minecraft:translucent", "textures": { "particle": "nuclearscience:block/electromagneticbooster", "east": "nuclearscience:block/electromagneticbooster", diff --git a/src/main/resources/assets/nuclearscience/models/block/electromagneticglass.json b/src/main/resources/assets/nuclearscience/models/block/electromagneticglass.json deleted file mode 100644 index cfffe234..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/electromagneticglass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "nuclearscience:block/electromagneticglass" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/block/freezeplug.json b/src/main/resources/assets/nuclearscience/models/block/freezeplug.json index 4e636fa8..7aae0674 100644 --- a/src/main/resources/assets/nuclearscience/models/block/freezeplug.json +++ b/src/main/resources/assets/nuclearscience/models/block/freezeplug.json @@ -1,70 +1,3301 @@ { - "credit":"AurilisDev", + "credit": "AurilisDev", "parent": "block/cube_all", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/freezeplug", - "particle":"nuclearscience:model/freezeplug" + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/freezeplug", + "particle":"electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[4,2.5,4],"to":[12,4.5,12],"faces":{"north":{"uv":[1,1,2,1.25],"texture":"#0"},"east":{"uv":[0,1,1,1.25],"texture":"#0"},"south":{"uv":[3,1,4,1.25],"texture":"#0"},"west":{"uv":[2,1,3,1.25],"texture":"#0"},"up":{"uv":[2,1,1,0],"texture":"#0"},"down":{"uv":[3,0,2,1],"texture":"#0"}}},{"from":[5,4,5],"to":[11,13,11],"faces":{"north":{"uv":[0.75,3.375,1.5,4.5],"texture":"#0"},"east":{"uv":[0,3.375,0.75,4.5],"texture":"#0"},"south":{"uv":[2.25,3.375,3,4.5],"texture":"#0"},"west":{"uv":[1.5,3.375,2.25,4.5],"texture":"#0"},"up":{"uv":[1.5,3.375,0.75,2.625],"texture":"#0"},"down":{"uv":[2.25,2.625,1.5,3.375],"texture":"#0"}}}, - {"from":[2,15,13],"to":[14,16,14],"faces":{"north":{"uv":[3.25,2,4.75,2.125],"texture":"#0"},"east":{"uv":[3.125,2,3.25,2.125],"texture":"#0"},"south":{"uv":[4.875,2,6.375,2.125],"texture":"#0"},"west":{"uv":[4.75,2,4.875,2.125],"texture":"#0"},"up":{"uv":[4.75,2,3.25,1.875],"texture":"#0"},"down":{"uv":[6.25,1.875,4.75,2],"texture":"#0"}}},{"from":[2,15,2],"to":[14,16,3],"faces":{"north":{"uv":[3.25,0.125,4.75,0.25],"texture":"#0"},"east":{"uv":[3.125,0.125,3.25,0.25],"texture":"#0"},"south":{"uv":[4.875,0.125,6.375,0.25],"texture":"#0"},"west":{"uv":[4.75,0.125,4.875,0.25],"texture":"#0"},"up":{"uv":[4.75,0.125,3.25,0],"texture":"#0"},"down":{"uv":[6.25,0,4.75,0.125],"texture":"#0"}}}, - {"from":[3,14,12],"to":[13,15,13],"faces":{"north":{"uv":[0.125,4.75,1.375,4.875],"texture":"#0"},"east":{"uv":[0,4.75,0.125,4.875],"texture":"#0"},"south":{"uv":[1.5,4.75,2.75,4.875],"texture":"#0"},"west":{"uv":[1.375,4.75,1.5,4.875],"texture":"#0"},"up":{"uv":[1.375,4.75,0.125,4.625],"texture":"#0"},"down":{"uv":[2.625,4.625,1.375,4.75],"texture":"#0"}}},{"from":[4,13,4],"to":[12,14,12],"faces":{"north":{"uv":[1,2.375,2,2.5],"texture":"#0"},"east":{"uv":[0,2.375,1,2.5],"texture":"#0"},"south":{"uv":[3,2.375,4,2.5],"texture":"#0"},"west":{"uv":[2,2.375,3,2.5],"texture":"#0"},"up":{"uv":[2,2.375,1,1.375],"texture":"#0"},"down":{"uv":[3,1.375,2,2.375],"texture":"#0"}}}, - {"from":[3,14,3],"to":[13,15,4],"faces":{"north":{"uv":[4.25,2.375,5.5,2.5],"texture":"#0"},"east":{"uv":[4.125,2.375,4.25,2.5],"texture":"#0"},"south":{"uv":[5.625,2.375,6.875,2.5],"texture":"#0"},"west":{"uv":[5.5,2.375,5.625,2.5],"texture":"#0"},"up":{"uv":[5.5,2.375,4.25,2.25],"texture":"#0"},"down":{"uv":[6.75,2.25,5.5,2.375],"texture":"#0"}}},{"from":[3,14,4],"to":[4,15,12],"faces":{"north":{"uv":[6.375,5.75,6.5,5.875],"texture":"#0"},"east":{"uv":[5.375,5.75,6.375,5.875],"texture":"#0"},"south":{"uv":[7.5,5.75,7.625,5.875],"texture":"#0"},"west":{"uv":[6.5,5.75,7.5,5.875],"texture":"#0"},"up":{"uv":[6.5,5.75,6.375,4.75],"texture":"#0"},"down":{"uv":[6.625,4.75,6.5,5.75],"texture":"#0"}}}, - {"from":[12,14,4],"to":[13,15,12],"faces":{"north":{"uv":[3.125,6.25,3.25,6.375],"texture":"#0"},"east":{"uv":[2.125,6.25,3.125,6.375],"texture":"#0"},"south":{"uv":[4.25,6.25,4.375,6.375],"texture":"#0"},"west":{"uv":[3.25,6.25,4.25,6.375],"texture":"#0"},"up":{"uv":[3.25,6.25,3.125,5.25],"texture":"#0"},"down":{"uv":[3.375,5.25,3.25,6.25],"texture":"#0"}}},{"from":[13,15,3],"to":[14,16,13],"faces":{"north":{"uv":[4.75,5.25,4.875,5.375],"texture":"#0"},"east":{"uv":[3.5,5.25,4.75,5.375],"texture":"#0"},"south":{"uv":[6.125,5.25,6.25,5.375],"texture":"#0"},"west":{"uv":[4.875,5.25,6.125,5.375],"texture":"#0"},"up":{"uv":[4.875,5.25,4.75,4],"texture":"#0"},"down":{"uv":[5,4,4.875,5.25],"texture":"#0"}}}, - {"from":[2,15,3],"to":[3,16,13],"faces":{"north":{"uv":[3.125,5,3.25,5.125],"texture":"#0"},"east":{"uv":[1.875,5,3.125,5.125],"texture":"#0"},"south":{"uv":[4.5,5,4.625,5.125],"texture":"#0"},"west":{"uv":[3.25,5,4.5,5.125],"texture":"#0"},"up":{"uv":[3.25,5,3.125,3.75],"texture":"#0"},"down":{"uv":[3.375,3.75,3.25,5],"texture":"#0"}}},{"from":[12,4.5,7.5],"to":[13,9.5,8.5],"rotation":{"angle":45,"axis":"z","origin":[0,0,0]},"faces":{"north":{"uv":[7.375,0.125,7.5,0.75],"texture":"#0"},"east":{"uv":[7.25,0.125,7.375,0.75],"texture":"#0"},"south":{"uv":[7.625,0.125,7.75,0.75],"texture":"#0"},"west":{"uv":[7.5,0.125,7.625,0.75],"texture":"#0"},"up":{"uv":[7.5,0.125,7.375,0],"texture":"#0"},"down":{"uv":[7.625,0,7.5,0.125],"texture":"#0"}}}, - {"from":[-1.7,15.8,7.5],"to":[-0.7,20.8,8.5],"rotation":{"angle":-45,"axis":"z","origin":[0,0,0]},"faces":{"north":{"uv":[8.125,0.125,8.25,0.75],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.75],"texture":"#0"},"south":{"uv":[8.375,0.125,8.5,0.75],"texture":"#0"},"west":{"uv":[8.25,0.125,8.375,0.75],"texture":"#0"},"up":{"uv":[8.25,0.125,8.125,0],"texture":"#0"},"down":{"uv":[8.375,0,8.25,0.125],"texture":"#0"}}},{"from":[7.5,4.5,12],"to":[8.5,9.5,13],"rotation":{"angle":-45,"axis":"x","origin":[0,0,0]},"faces":{"north":{"uv":[7.375,1.125,7.5,1.75],"texture":"#0"},"east":{"uv":[7.25,1.125,7.375,1.75],"texture":"#0"},"south":{"uv":[7.625,1.125,7.75,1.75],"texture":"#0"},"west":{"uv":[7.5,1.125,7.625,1.75],"texture":"#0"},"up":{"uv":[7.5,1.125,7.375,1],"texture":"#0"},"down":{"uv":[7.625,1,7.5,1.125],"texture":"#0"}}}, - {"from":[7.5,15.8,-1.7],"to":[8.5,20.8,-0.7],"rotation":{"angle":45,"axis":"x","origin":[0,0,0]},"faces":{"north":{"uv":[8.125,1.125,8.25,1.75],"texture":"#0"},"east":{"uv":[8,1.125,8.125,1.75],"texture":"#0"},"south":{"uv":[8.375,1.125,8.5,1.75],"texture":"#0"},"west":{"uv":[8.25,1.125,8.375,1.75],"texture":"#0"},"up":{"uv":[8.25,1.125,8.125,1],"texture":"#0"},"down":{"uv":[8.375,1,8.25,1.125],"texture":"#0"}}},{"from":[4.75,10,4.75],"to":[11.25,11,11.25],"faces":{"north":{"uv":[0.75,6,1.5,6.125],"texture":"#0"},"east":{"uv":[0,6,0.75,6.125],"texture":"#0"},"south":{"uv":[2.25,6,3,6.125],"texture":"#0"},"west":{"uv":[1.5,6,2.25,6.125],"texture":"#0"},"up":{"uv":[1.5,6,0.75,5.25],"texture":"#0"},"down":{"uv":[2.25,5.25,1.5,6],"texture":"#0"}}}, - {"from":[4.5,8,4.5],"to":[11.5,9,11.5],"faces":{"north":{"uv":[4,3.5,4.875,3.625],"texture":"#0"},"east":{"uv":[3.125,3.5,4,3.625],"texture":"#0"},"south":{"uv":[5.75,3.5,6.625,3.625],"texture":"#0"},"west":{"uv":[4.875,3.5,5.75,3.625],"texture":"#0"},"up":{"uv":[4.875,3.5,4,2.625],"texture":"#0"},"down":{"uv":[5.75,2.625,4.875,3.5],"texture":"#0"}}},{"from":[4.75,6,4.75],"to":[11.25,7,11.25],"faces":{"north":{"uv":[5.875,4.5,6.625,4.625],"texture":"#0"},"east":{"uv":[5.125,4.5,5.875,4.625],"texture":"#0"},"south":{"uv":[7.375,4.5,8.125,4.625],"texture":"#0"},"west":{"uv":[6.625,4.5,7.375,4.625],"texture":"#0"},"up":{"uv":[6.625,4.5,5.875,3.75],"texture":"#0"},"down":{"uv":[7.375,3.75,6.625,4.5],"texture":"#0"}}}, - {"from":[1.25,0,4.75],"to":[2.5,5,6.25],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,6.375,0.25,7],"texture":"#0"},"east":{"uv":[0,6.375,0.125,7],"texture":"#0"},"south":{"uv":[0.375,6.375,0.5,7],"texture":"#0"},"west":{"uv":[0.25,6.375,0.375,7],"texture":"#0"},"up":{"uv":[0.25,6.375,0.125,6.25],"texture":"#0"},"down":{"uv":[0.375,6.25,0.25,6.375],"texture":"#0"}}},{"from":[1.25,0,7.25],"to":[2.5,5,8.75],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.875,6.125,6,6.75],"texture":"#0"},"east":{"uv":[5.75,6.125,5.875,6.75],"texture":"#0"},"south":{"uv":[6.125,6.125,6.25,6.75],"texture":"#0"},"west":{"uv":[6,6.125,6.125,6.75],"texture":"#0"},"up":{"uv":[6,6.125,5.875,6],"texture":"#0"},"down":{"uv":[6.125,6,6,6.125],"texture":"#0"}}}, - {"from":[1.25,0,9.75],"to":[2.5,5,11.25],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.25,6.125,5.375,6.75],"texture":"#0"},"east":{"uv":[5.125,6.125,5.25,6.75],"texture":"#0"},"south":{"uv":[5.5,6.125,5.625,6.75],"texture":"#0"},"west":{"uv":[5.375,6.125,5.5,6.75],"texture":"#0"},"up":{"uv":[5.375,6.125,5.25,6],"texture":"#0"},"down":{"uv":[5.5,6,5.375,6.125],"texture":"#0"}}},{"from":[4.75,0,13.5],"to":[6.25,5,14.75],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[6,2.75,6.125,3.375],"texture":"#0"},"east":{"uv":[5.875,2.75,6,3.375],"texture":"#0"},"south":{"uv":[6.25,2.75,6.375,3.375],"texture":"#0"},"west":{"uv":[6.125,2.75,6.25,3.375],"texture":"#0"},"up":{"uv":[6.125,2.75,6,2.625],"texture":"#0"},"down":{"uv":[6.25,2.625,6.125,2.75],"texture":"#0"}}}, - {"from":[7.25,0,13.5],"to":[8.75,5,14.75],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.875,0.5,6,1.125],"texture":"#0"},"east":{"uv":[5.75,0.5,5.875,1.125],"texture":"#0"},"south":{"uv":[6.125,0.5,6.25,1.125],"texture":"#0"},"west":{"uv":[6,0.5,6.125,1.125],"texture":"#0"},"up":{"uv":[6,0.5,5.875,0.375],"texture":"#0"},"down":{"uv":[6.125,0.375,6,0.5],"texture":"#0"}}},{"from":[9.75,0,13.5],"to":[11.25,5,14.75],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[4.625,5.625,4.75,6.25],"texture":"#0"},"east":{"uv":[4.5,5.625,4.625,6.25],"texture":"#0"},"south":{"uv":[4.875,5.625,5,6.25],"texture":"#0"},"west":{"uv":[4.75,5.625,4.875,6.25],"texture":"#0"},"up":{"uv":[4.75,5.625,4.625,5.5],"texture":"#0"},"down":{"uv":[4.875,5.5,4.75,5.625],"texture":"#0"}}}, - {"from":[13.5,0,9.75],"to":[14.75,5,11.25],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,5.125,0.25,5.75],"texture":"#0"},"east":{"uv":[0,5.125,0.125,5.75],"texture":"#0"},"south":{"uv":[0.375,5.125,0.5,5.75],"texture":"#0"},"west":{"uv":[0.25,5.125,0.375,5.75],"texture":"#0"},"up":{"uv":[0.25,5.125,0.125,5],"texture":"#0"},"down":{"uv":[0.375,5,0.25,5.125],"texture":"#0"}}},{"from":[13.5,0,7.25],"to":[14.75,5,8.75],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[4.25,3.875,4.375,4.5],"texture":"#0"},"east":{"uv":[4.125,3.875,4.25,4.5],"texture":"#0"},"south":{"uv":[4.5,3.875,4.625,4.5],"texture":"#0"},"west":{"uv":[4.375,3.875,4.5,4.5],"texture":"#0"},"up":{"uv":[4.375,3.875,4.25,3.75],"texture":"#0"},"down":{"uv":[4.5,3.75,4.375,3.875],"texture":"#0"}}}, - {"from":[13.5,0,4.75],"to":[14.75,5,6.25],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[3.625,3.875,3.75,4.5],"texture":"#0"},"east":{"uv":[3.5,3.875,3.625,4.5],"texture":"#0"},"south":{"uv":[3.875,3.875,4,4.5],"texture":"#0"},"west":{"uv":[3.75,3.875,3.875,4.5],"texture":"#0"},"up":{"uv":[3.75,3.875,3.625,3.75],"texture":"#0"},"down":{"uv":[3.875,3.75,3.75,3.875],"texture":"#0"}}},{"from":[9.75,0,1.25],"to":[11.25,5,2.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[3.25,2.75,3.375,3.375],"texture":"#0"},"east":{"uv":[3.125,2.75,3.25,3.375],"texture":"#0"},"south":{"uv":[3.5,2.75,3.625,3.375],"texture":"#0"},"west":{"uv":[3.375,2.75,3.5,3.375],"texture":"#0"},"up":{"uv":[3.375,2.75,3.25,2.625],"texture":"#0"},"down":{"uv":[3.5,2.625,3.375,2.75],"texture":"#0"}}}, - {"from":[7.25,0,1.25],"to":[8.75,5,2.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,1.5,0.25,2.125],"texture":"#0"},"east":{"uv":[0,1.5,0.125,2.125],"texture":"#0"},"south":{"uv":[0.375,1.5,0.5,2.125],"texture":"#0"},"west":{"uv":[0.25,1.5,0.375,2.125],"texture":"#0"},"up":{"uv":[0.25,1.5,0.125,1.375],"texture":"#0"},"down":{"uv":[0.375,1.375,0.25,1.5],"texture":"#0"}}},{"from":[4.75,0,1.25],"to":[6.25,5,2.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,0.125,0.25,0.75],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.75],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.75],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.75],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}}, - {"from":[10,3,2.5],"to":[11,4,4],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[3.625,5.625,3.75,5.75],"texture":"#0"},"east":{"uv":[3.5,5.625,3.625,5.75],"texture":"#0"},"south":{"uv":[3.875,5.625,4,5.75],"texture":"#0"},"west":{"uv":[3.75,5.625,3.875,5.75],"texture":"#0"},"up":{"uv":[3.75,5.625,3.625,5.5],"texture":"#0"},"down":{"uv":[3.875,5.5,3.75,5.625],"texture":"#0"}}},{"from":[7.5,3,2.5],"to":[8.5,4,4],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[2.5,5.375,2.625,5.5],"texture":"#0"},"east":{"uv":[2.375,5.375,2.5,5.5],"texture":"#0"},"south":{"uv":[2.75,5.375,2.875,5.5],"texture":"#0"},"west":{"uv":[2.625,5.375,2.75,5.5],"texture":"#0"},"up":{"uv":[2.625,5.375,2.5,5.25],"texture":"#0"},"down":{"uv":[2.75,5.25,2.625,5.375],"texture":"#0"}}}, - {"from":[5,3,2.5],"to":[6,4,4],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.25,4.875,5.375,5],"texture":"#0"},"east":{"uv":[5.125,4.875,5.25,5],"texture":"#0"},"south":{"uv":[5.5,4.875,5.625,5],"texture":"#0"},"west":{"uv":[5.375,4.875,5.5,5],"texture":"#0"},"up":{"uv":[5.375,4.875,5.25,4.75],"texture":"#0"},"down":{"uv":[5.5,4.75,5.375,4.875],"texture":"#0"}}},{"from":[2.5,3,5],"to":[4,4,6],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.25,4.25,5.375,4.375],"texture":"#0"},"east":{"uv":[5.125,4.25,5.25,4.375],"texture":"#0"},"south":{"uv":[5.5,4.25,5.625,4.375],"texture":"#0"},"west":{"uv":[5.375,4.25,5.5,4.375],"texture":"#0"},"up":{"uv":[5.375,4.25,5.25,4.125],"texture":"#0"},"down":{"uv":[5.5,4.125,5.375,4.25],"texture":"#0"}}}, - {"from":[2.5,3,7.5],"to":[4,4,8.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[5.25,3.875,5.375,4],"texture":"#0"},"east":{"uv":[5.125,3.875,5.25,4],"texture":"#0"},"south":{"uv":[5.5,3.875,5.625,4],"texture":"#0"},"west":{"uv":[5.375,3.875,5.5,4],"texture":"#0"},"up":{"uv":[5.375,3.875,5.25,3.75],"texture":"#0"},"down":{"uv":[5.5,3.75,5.375,3.875],"texture":"#0"}}},{"from":[2.5,3,10],"to":[4,4,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[4.25,4.75,4.375,4.875],"texture":"#0"},"east":{"uv":[4.125,4.75,4.25,4.875],"texture":"#0"},"south":{"uv":[4.5,4.75,4.625,4.875],"texture":"#0"},"west":{"uv":[4.375,4.75,4.5,4.875],"texture":"#0"},"up":{"uv":[4.375,4.75,4.25,4.625],"texture":"#0"},"down":{"uv":[4.5,4.625,4.375,4.75],"texture":"#0"}}}, - {"from":[5,3,12],"to":[6,4,13.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[3.625,4.75,3.75,4.875],"texture":"#0"},"east":{"uv":[3.5,4.75,3.625,4.875],"texture":"#0"},"south":{"uv":[3.875,4.75,4,4.875],"texture":"#0"},"west":{"uv":[3.75,4.75,3.875,4.875],"texture":"#0"},"up":{"uv":[3.75,4.75,3.625,4.625],"texture":"#0"},"down":{"uv":[3.875,4.625,3.75,4.75],"texture":"#0"}}},{"from":[7.5,3,12],"to":[8.5,4,13.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[3.25,0.5,3.375,0.625],"texture":"#0"},"east":{"uv":[3.125,0.5,3.25,0.625],"texture":"#0"},"south":{"uv":[3.5,0.5,3.625,0.625],"texture":"#0"},"west":{"uv":[3.375,0.5,3.5,0.625],"texture":"#0"},"up":{"uv":[3.375,0.5,3.25,0.375],"texture":"#0"},"down":{"uv":[3.5,0.375,3.375,0.5],"texture":"#0"}}}, - {"from":[10,3,12],"to":[11,4,13.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[2.5,3.125,2.625,3.25],"texture":"#0"},"east":{"uv":[2.375,3.125,2.5,3.25],"texture":"#0"},"south":{"uv":[2.75,3.125,2.875,3.25],"texture":"#0"},"west":{"uv":[2.625,3.125,2.75,3.25],"texture":"#0"},"up":{"uv":[2.625,3.125,2.5,3],"texture":"#0"},"down":{"uv":[2.75,3,2.625,3.125],"texture":"#0"}}},{"from":[12,3,10],"to":[13.5,4,11],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,3.125,0.25,3.25],"texture":"#0"},"east":{"uv":[0,3.125,0.125,3.25],"texture":"#0"},"south":{"uv":[0.375,3.125,0.5,3.25],"texture":"#0"},"west":{"uv":[0.25,3.125,0.375,3.25],"texture":"#0"},"up":{"uv":[0.25,3.125,0.125,3],"texture":"#0"},"down":{"uv":[0.375,3,0.25,3.125],"texture":"#0"}}}, - {"from":[12,3,7.5],"to":[13.5,4,8.5],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[2.5,2.75,2.625,2.875],"texture":"#0"},"east":{"uv":[2.375,2.75,2.5,2.875],"texture":"#0"},"south":{"uv":[2.75,2.75,2.875,2.875],"texture":"#0"},"west":{"uv":[2.625,2.75,2.75,2.875],"texture":"#0"},"up":{"uv":[2.625,2.75,2.5,2.625],"texture":"#0"},"down":{"uv":[2.75,2.625,2.625,2.75],"texture":"#0"}}},{"from":[12,3,5],"to":[13.5,4,6],"rotation":{"angle":0,"axis":"y","origin":[8,8,8]},"faces":{"north":{"uv":[0.125,2.75,0.25,2.875],"texture":"#0"},"east":{"uv":[0,2.75,0.125,2.875],"texture":"#0"},"south":{"uv":[0.375,2.75,0.5,2.875],"texture":"#0"},"west":{"uv":[0.25,2.75,0.375,2.875],"texture":"#0"},"up":{"uv":[0.25,2.75,0.125,2.625],"texture":"#0"},"down":{"uv":[0.375,2.625,0.25,2.75],"texture":"#0"}}}, - {"from":[5,0,5],"to":[11,3,11],"faces":{"north":{"uv":[4.125,1.375,4.875,1.75],"texture":"#0"},"east":{"uv":[3.375,1.375,4.125,1.75],"texture":"#0"},"south":{"uv":[5.625,1.375,6.375,1.75],"texture":"#0"},"west":{"uv":[4.875,1.375,5.625,1.75],"texture":"#0"},"up":{"uv":[4.875,1.375,4.125,0.625],"texture":"#0"},"down":{"uv":[5.625,0.625,4.875,1.375],"texture":"#0"}}} + "elements": [ + { + "from": [ + 4, + 2.5, + 4 + ], + "to": [ + 12, + 4.5, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 1, + 2, + 1.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1, + 1, + 1.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 1, + 4, + 1.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 1, + 3, + 1.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 1, + 1, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 0, + 2, + 1 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 4, + 5 + ], + "to": [ + 11, + 13, + 11 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 3.375, + 1.5, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 0.75, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 3.375, + 3, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 3.375, + 2.25, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 3.375, + 0.75, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.25, + 2.625, + 1.5, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 15, + 13 + ], + "to": [ + 14, + 16, + 14 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2, + 4.75, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2, + 3.25, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 2, + 6.375, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 2, + 4.875, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 2, + 3.25, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 1.875, + 4.75, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 15, + 2 + ], + "to": [ + 14, + 16, + 3 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 0.125, + 4.75, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 0.125, + 3.25, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 0.125, + 6.375, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 0.125, + 4.875, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 0.125, + 3.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 0, + 4.75, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 12 + ], + "to": [ + 13, + 15, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 4.75, + 1.375, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.75, + 0.125, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 4.75, + 2.75, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 4.75, + 1.5, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 4.75, + 0.125, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 4.625, + 1.375, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 13, + 4 + ], + "to": [ + 12, + 14, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 2.375, + 2, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.375, + 1, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 2.375, + 4, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 2.375, + 3, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 2.375, + 1, + 1.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 1.375, + 2, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 3 + ], + "to": [ + 13, + 15, + 4 + ], + "faces": { + "north": { + "uv": [ + 4.25, + 2.375, + 5.5, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 2.375, + 4.25, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 2.375, + 6.875, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 2.375, + 5.625, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 2.375, + 4.25, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 2.25, + 5.5, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 4 + ], + "to": [ + 4, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 6.375, + 5.75, + 6.5, + 5.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 5.75, + 6.375, + 5.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 5.75, + 7.625, + 5.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 5.75, + 7.5, + 5.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 5.75, + 6.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.625, + 4.75, + 6.5, + 5.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 4 + ], + "to": [ + 13, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.125, + 6.25, + 3.25, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 6.25, + 3.125, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 6.25, + 4.375, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 6.25, + 4.25, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.25, + 6.25, + 3.125, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.375, + 5.25, + 3.25, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 15, + 3 + ], + "to": [ + 14, + 16, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 5.25, + 4.875, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 5.25, + 4.75, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 5.25, + 6.25, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 5.25, + 6.125, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 5.25, + 4.75, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 4, + 4.875, + 5.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 15, + 3 + ], + "to": [ + 3, + 16, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.125, + 5, + 3.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 5, + 3.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 5, + 4.625, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 5, + 4.5, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.25, + 5, + 3.125, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.375, + 3.75, + 3.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4.5, + 7.5 + ], + "to": [ + 13, + 9.5, + 8.5 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 0, + 0, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 7.375, + 0.125, + 7.5, + 0.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 0.125, + 7.375, + 0.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 0.125, + 7.75, + 0.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 0.125, + 7.625, + 0.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 0.125, + 7.375, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 0, + 7.5, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -1.7, + 15.8, + 7.5 + ], + "to": [ + -0.7, + 20.8, + 8.5 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 0, + 0, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 8.125, + 0.125, + 8.25, + 0.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.125, + 8.125, + 0.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.125, + 8.5, + 0.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.125, + 8.375, + 0.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.125, + 8.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0, + 8.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.5, + 4.5, + 12 + ], + "to": [ + 8.5, + 9.5, + 13 + ], + "rotation": { + "angle": -45, + "axis": "x", + "origin": [ + 0, + 0, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 7.375, + 1.125, + 7.5, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 1.125, + 7.375, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 1.125, + 7.75, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 1.125, + 7.625, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 1.125, + 7.375, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 1, + 7.5, + 1.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.5, + 15.8, + -1.7 + ], + "to": [ + 8.5, + 20.8, + -0.7 + ], + "rotation": { + "angle": 45, + "axis": "x", + "origin": [ + 0, + 0, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 8.125, + 1.125, + 8.25, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 1.125, + 8.125, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 1.125, + 8.5, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 1.125, + 8.375, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 1.125, + 8.125, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 1, + 8.25, + 1.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4.75, + 10, + 4.75 + ], + "to": [ + 11.25, + 11, + 11.25 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 6, + 1.5, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6, + 0.75, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 6, + 3, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 6, + 2.25, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 6, + 0.75, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.25, + 5.25, + 1.5, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4.5, + 8, + 4.5 + ], + "to": [ + 11.5, + 9, + 11.5 + ], + "faces": { + "north": { + "uv": [ + 4, + 3.5, + 4.875, + 3.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 3.5, + 4, + 3.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.75, + 3.5, + 6.625, + 3.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 3.5, + 5.75, + 3.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 3.5, + 4, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.75, + 2.625, + 4.875, + 3.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4.75, + 6, + 4.75 + ], + "to": [ + 11.25, + 7, + 11.25 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 4.5, + 6.625, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 4.5, + 5.875, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 4.5, + 8.125, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 4.5, + 7.375, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 4.5, + 5.875, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 3.75, + 6.625, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1.25, + 0, + 4.75 + ], + "to": [ + 2.5, + 5, + 6.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 6.375, + 0.25, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6.375, + 0.125, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 6.375, + 0.5, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 6.375, + 0.375, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 6.375, + 0.125, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 6.25, + 0.25, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1.25, + 0, + 7.25 + ], + "to": [ + 2.5, + 5, + 8.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.875, + 6.125, + 6, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 6.125, + 5.875, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 6.125, + 6.25, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 6.125, + 6.125, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 6.125, + 5.875, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 6, + 6, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1.25, + 0, + 9.75 + ], + "to": [ + 2.5, + 5, + 11.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 6.125, + 5.375, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 6.125, + 5.25, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 6.125, + 5.625, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 6.125, + 5.5, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 6.125, + 5.25, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 6, + 5.375, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4.75, + 0, + 13.5 + ], + "to": [ + 6.25, + 5, + 14.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 2.75, + 6.125, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.875, + 2.75, + 6, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.25, + 2.75, + 6.375, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 2.75, + 6.25, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 2.75, + 6, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 2.625, + 6.125, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.25, + 0, + 13.5 + ], + "to": [ + 8.75, + 5, + 14.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.875, + 0.5, + 6, + 1.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 0.5, + 5.875, + 1.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 0.5, + 6.25, + 1.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 0.5, + 6.125, + 1.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 0.5, + 5.875, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 0.375, + 6, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9.75, + 0, + 13.5 + ], + "to": [ + 11.25, + 5, + 14.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4.625, + 5.625, + 4.75, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 5.625, + 4.625, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 5.625, + 5, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 5.625, + 4.875, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 5.625, + 4.625, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 5.5, + 4.75, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13.5, + 0, + 9.75 + ], + "to": [ + 14.75, + 5, + 11.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 5.125, + 0.25, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.125, + 0.125, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5.125, + 0.5, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5.125, + 0.375, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5.125, + 0.125, + 5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 5, + 0.25, + 5.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13.5, + 0, + 7.25 + ], + "to": [ + 14.75, + 5, + 8.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4.25, + 3.875, + 4.375, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 3.875, + 4.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 3.875, + 4.625, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.375, + 3.875, + 4.5, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.375, + 3.875, + 4.25, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 3.75, + 4.375, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13.5, + 0, + 4.75 + ], + "to": [ + 14.75, + 5, + 6.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3.625, + 3.875, + 3.75, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 3.875, + 3.625, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 3.875, + 4, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 3.875, + 3.875, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 3.875, + 3.625, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 3.75, + 3.75, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9.75, + 0, + 1.25 + ], + "to": [ + 11.25, + 5, + 2.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3.25, + 2.75, + 3.375, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.75, + 3.25, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.75, + 3.625, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.75, + 3.5, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.75, + 3.25, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.625, + 3.375, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.25, + 0, + 1.25 + ], + "to": [ + 8.75, + 5, + 2.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 1.5, + 0.25, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1.5, + 0.125, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 1.5, + 0.5, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 1.5, + 0.375, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 1.5, + 0.125, + 1.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 1.375, + 0.25, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4.75, + 0, + 1.25 + ], + "to": [ + 6.25, + 5, + 2.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 2.5 + ], + "to": [ + 11, + 4, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3.625, + 5.625, + 3.75, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 5.625, + 3.625, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 5.625, + 4, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 5.625, + 3.875, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 5.625, + 3.625, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 5.5, + 3.75, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.5, + 3, + 2.5 + ], + "to": [ + 8.5, + 4, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 2.5, + 5.375, + 2.625, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 5.375, + 2.5, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 5.375, + 2.875, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 5.375, + 2.75, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.625, + 5.375, + 2.5, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 5.25, + 2.625, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 2.5 + ], + "to": [ + 6, + 4, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 4.875, + 5.375, + 5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 4.875, + 5.25, + 5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 4.875, + 5.625, + 5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 4.875, + 5.5, + 5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 4.875, + 5.25, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 4.75, + 5.375, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2.5, + 3, + 5 + ], + "to": [ + 4, + 4, + 6 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 4.25, + 5.375, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 4.25, + 5.25, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 4.25, + 5.625, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 4.25, + 5.5, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 4.25, + 5.25, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 4.125, + 5.375, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2.5, + 3, + 7.5 + ], + "to": [ + 4, + 4, + 8.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 3.875, + 5.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 3.875, + 5.25, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 3.875, + 5.625, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 3.875, + 5.5, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 3.875, + 5.25, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 3.75, + 5.375, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2.5, + 3, + 10 + ], + "to": [ + 4, + 4, + 11 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 4.25, + 4.75, + 4.375, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 4.75, + 4.25, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 4.75, + 4.625, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.375, + 4.75, + 4.5, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.375, + 4.75, + 4.25, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 4.625, + 4.375, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 12 + ], + "to": [ + 6, + 4, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3.625, + 4.75, + 3.75, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 4.75, + 3.625, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 4.75, + 4, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 4.75, + 3.875, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 4.75, + 3.625, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 4.625, + 3.75, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.5, + 3, + 12 + ], + "to": [ + 8.5, + 4, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3.25, + 0.5, + 3.375, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 0.5, + 3.25, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 0.5, + 3.625, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 0.5, + 3.5, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 0.5, + 3.25, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 0.375, + 3.375, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 12 + ], + "to": [ + 11, + 4, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 2.5, + 3.125, + 2.625, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 3.125, + 2.5, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 3.125, + 2.875, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 3.125, + 2.75, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.625, + 3.125, + 2.5, + 3 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 3, + 2.625, + 3.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 10 + ], + "to": [ + 13.5, + 4, + 11 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 3.125, + 0.25, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.125, + 0.125, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 3.125, + 0.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 3.125, + 0.375, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 3.125, + 0.125, + 3 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 3, + 0.25, + 3.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 7.5 + ], + "to": [ + 13.5, + 4, + 8.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 2.5, + 2.75, + 2.625, + 2.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 2.75, + 2.5, + 2.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 2.75, + 2.875, + 2.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 2.75, + 2.75, + 2.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.625, + 2.75, + 2.5, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 2.625, + 2.625, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 5 + ], + "to": [ + 13.5, + 4, + 6 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0.125, + 2.75, + 0.25, + 2.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.75, + 0.125, + 2.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.75, + 0.5, + 2.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.75, + 0.375, + 2.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.75, + 0.125, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.625, + 0.25, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 0, + 5 + ], + "to": [ + 11, + 3, + 11 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 1.375, + 4.875, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 1.375, + 4.125, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 1.375, + 6.375, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 1.375, + 5.625, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 1.375, + 4.125, + 0.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 0.625, + 4.875, + 1.375 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"freezeplug", - "origin":[0,0,0], - "color":0, - "children":[ + "name": "freezeplug", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ { - "name":"frame", - "origin":[0,0,0], - "color":0, - "children":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] - },{ - "name":"coils", - "origin":[0,0,0], - "color":0, - "children":[15,16,17] - },{ - "name":"feet", - "origin":[0,0,0], - "color":0, - "children":[18,19,20,21,22,23,24,25,26,27,28,29, + "name": "frame", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "name": "coils", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 15, + 16, + 17 + ] + }, + { + "name": "feet", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, { - "name":"connectors", - "origin":[0,0,0], - "color":0, - "children":[30,31,32,33,34,35,36,37,38,39,40,41] + "name": "connectors", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ] } ] - },{ - "name":"power", - "origin":[0,0,0], - "color":0, - "children":[42] + }, + { + "name": "power", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 42 + ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessor.json b/src/main/resources/assets/nuclearscience/models/block/fuelreprocessor.json index 220b48cf..aad55155 100644 --- a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessor.json +++ b/src/main/resources/assets/nuclearscience/models/block/fuelreprocessor.json @@ -1,138 +1,4953 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/fuelreprocessor", - "particle":"nuclearscience:model/fuelreprocessor" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0":"nuclearscience:block/model/fuelreprocessor", + "particle":"electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[14,0,15],"to":[16,16,16],"faces":{"north":{"uv":[1,5.625,1.25,7.625],"texture":"#0"},"east":{"uv":[0.875,5.625,1,7.625],"texture":"#0"},"south":{"uv":[1.375,5.625,1.625,7.625],"texture":"#0"},"west":{"uv":[1.25,5.625,1.375,7.625],"texture":"#0"},"up":{"uv":[1.25,5.625,1,5.5],"texture":"#0"},"down":{"uv":[1.5,5.5,1.25,5.625],"texture":"#0"}}},{"from":[14,0,0],"to":[16,16,1],"faces":{"north":{"uv":[0.125,5.625,0.375,7.625],"texture":"#0"},"east":{"uv":[0,5.625,0.125,7.625],"texture":"#0"},"south":{"uv":[0.5,5.625,0.75,7.625],"texture":"#0"},"west":{"uv":[0.375,5.625,0.5,7.625],"texture":"#0"},"up":{"uv":[0.375,5.625,0.125,5.5],"texture":"#0"},"down":{"uv":[0.625,5.5,0.375,5.625],"texture":"#0"}}}, - {"from":[0,0,0],"to":[2,16,1],"faces":{"north":{"uv":[5.25,4.875,5.5,6.875],"texture":"#0"},"east":{"uv":[5.125,4.875,5.25,6.875],"texture":"#0"},"south":{"uv":[5.625,4.875,5.875,6.875],"texture":"#0"},"west":{"uv":[5.5,4.875,5.625,6.875],"texture":"#0"},"up":{"uv":[5.5,4.875,5.25,4.75],"texture":"#0"},"down":{"uv":[5.75,4.75,5.5,4.875],"texture":"#0"}}},{"from":[0,0,15],"to":[2,16,16],"faces":{"north":{"uv":[4.375,4.875,4.625,6.875],"texture":"#0"},"east":{"uv":[4.25,4.875,4.375,6.875],"texture":"#0"},"south":{"uv":[4.75,4.875,5,6.875],"texture":"#0"},"west":{"uv":[4.625,4.875,4.75,6.875],"texture":"#0"},"up":{"uv":[4.625,4.875,4.375,4.75],"texture":"#0"},"down":{"uv":[4.875,4.75,4.625,4.875],"texture":"#0"}}}, - {"from":[0,0,14],"to":[1,16,15],"faces":{"north":{"uv":[3.125,6.75,3.25,8.75],"texture":"#0"},"east":{"uv":[3,6.75,3.125,8.75],"texture":"#0"},"south":{"uv":[3.375,6.75,3.5,8.75],"texture":"#0"},"west":{"uv":[3.25,6.75,3.375,8.75],"texture":"#0"},"up":{"uv":[3.25,6.75,3.125,6.625],"texture":"#0"},"down":{"uv":[3.375,6.625,3.25,6.75],"texture":"#0"}}},{"from":[0,0,1],"to":[1,16,2],"faces":{"north":{"uv":[2.5,6.75,2.625,8.75],"texture":"#0"},"east":{"uv":[2.375,6.75,2.5,8.75],"texture":"#0"},"south":{"uv":[2.75,6.75,2.875,8.75],"texture":"#0"},"west":{"uv":[2.625,6.75,2.75,8.75],"texture":"#0"},"up":{"uv":[2.625,6.75,2.5,6.625],"texture":"#0"},"down":{"uv":[2.75,6.625,2.625,6.75],"texture":"#0"}}}, - {"from":[15,0,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,6.75,2,8.75],"texture":"#0"},"east":{"uv":[1.75,6.75,1.875,8.75],"texture":"#0"},"south":{"uv":[2.125,6.75,2.25,8.75],"texture":"#0"},"west":{"uv":[2,6.75,2.125,8.75],"texture":"#0"},"up":{"uv":[2,6.75,1.875,6.625],"texture":"#0"},"down":{"uv":[2.125,6.625,2,6.75],"texture":"#0"}}},{"from":[15,0,14],"to":[16,16,15],"faces":{"north":{"uv":[6.125,4.75,6.25,6.75],"texture":"#0"},"east":{"uv":[6,4.75,6.125,6.75],"texture":"#0"},"south":{"uv":[6.375,4.75,6.5,6.75],"texture":"#0"},"west":{"uv":[6.25,4.75,6.375,6.75],"texture":"#0"},"up":{"uv":[6.25,4.75,6.125,4.625],"texture":"#0"},"down":{"uv":[6.375,4.625,6.25,4.75],"texture":"#0"}}}, - {"from":[1,7,13],"to":[3,9,15],"faces":{"north":{"uv":[8.125,4.5,8.375,4.75],"texture":"#0"},"east":{"uv":[7.875,4.5,8.125,4.75],"texture":"#0"},"south":{"uv":[8.625,4.5,8.875,4.75],"texture":"#0"},"west":{"uv":[8.375,4.5,8.625,4.75],"texture":"#0"},"up":{"uv":[8.375,4.5,8.125,4.25],"texture":"#0"},"down":{"uv":[8.625,4.25,8.375,4.5],"texture":"#0"}}},{"from":[2,7,12],"to":[4,9,14],"faces":{"north":{"uv":[8,3.875,8.25,4.125],"texture":"#0"},"east":{"uv":[7.75,3.875,8,4.125],"texture":"#0"},"south":{"uv":[8.5,3.875,8.75,4.125],"texture":"#0"},"west":{"uv":[8.25,3.875,8.5,4.125],"texture":"#0"},"up":{"uv":[8.25,3.875,8,3.625],"texture":"#0"},"down":{"uv":[8.5,3.625,8.25,3.875],"texture":"#0"}}}, - {"from":[3,7,11],"to":[4,9,12],"faces":{"north":{"uv":[5.625,3.75,5.75,4],"texture":"#0"},"east":{"uv":[5.5,3.75,5.625,4],"texture":"#0"},"south":{"uv":[5.875,3.75,6,4],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4],"texture":"#0"},"up":{"uv":[5.75,3.75,5.625,3.625],"texture":"#0"},"down":{"uv":[5.875,3.625,5.75,3.75],"texture":"#0"}}},{"from":[4,7,12],"to":[5,9,13],"faces":{"north":{"uv":[4.625,2.75,4.75,3],"texture":"#0"},"east":{"uv":[4.5,2.75,4.625,3],"texture":"#0"},"south":{"uv":[4.875,2.75,5,3],"texture":"#0"},"west":{"uv":[4.75,2.75,4.875,3],"texture":"#0"},"up":{"uv":[4.75,2.75,4.625,2.625],"texture":"#0"},"down":{"uv":[4.875,2.625,4.75,2.75],"texture":"#0"}}}, - {"from":[1,7,1],"to":[3,9,3],"faces":{"north":{"uv":[0.25,8,0.5,8.25],"texture":"#0"},"east":{"uv":[0,8,0.25,8.25],"texture":"#0"},"south":{"uv":[0.75,8,1,8.25],"texture":"#0"},"west":{"uv":[0.5,8,0.75,8.25],"texture":"#0"},"up":{"uv":[0.5,8,0.25,7.75],"texture":"#0"},"down":{"uv":[0.75,7.75,0.5,8],"texture":"#0"}}},{"from":[2,7,2],"to":[4,9,4],"faces":{"north":{"uv":[7.875,1.5,8.125,1.75],"texture":"#0"},"east":{"uv":[7.625,1.5,7.875,1.75],"texture":"#0"},"south":{"uv":[8.375,1.5,8.625,1.75],"texture":"#0"},"west":{"uv":[8.125,1.5,8.375,1.75],"texture":"#0"},"up":{"uv":[8.125,1.5,7.875,1.25],"texture":"#0"},"down":{"uv":[8.375,1.25,8.125,1.5],"texture":"#0"}}}, - {"from":[4,7,3],"to":[5,9,4],"faces":{"north":{"uv":[2.25,4.25,2.375,4.5],"texture":"#0"},"east":{"uv":[2.125,4.25,2.25,4.5],"texture":"#0"},"south":{"uv":[2.5,4.25,2.625,4.5],"texture":"#0"},"west":{"uv":[2.375,4.25,2.5,4.5],"texture":"#0"},"up":{"uv":[2.375,4.25,2.25,4.125],"texture":"#0"},"down":{"uv":[2.5,4.125,2.375,4.25],"texture":"#0"}}},{"from":[3,7,4],"to":[4,9,5],"faces":{"north":{"uv":[2.25,3.75,2.375,4],"texture":"#0"},"east":{"uv":[2.125,3.75,2.25,4],"texture":"#0"},"south":{"uv":[2.5,3.75,2.625,4],"texture":"#0"},"west":{"uv":[2.375,3.75,2.5,4],"texture":"#0"},"up":{"uv":[2.375,3.75,2.25,3.625],"texture":"#0"},"down":{"uv":[2.5,3.625,2.375,3.75],"texture":"#0"}}}, - {"from":[13,7,13],"to":[15,9,15],"faces":{"north":{"uv":[7.75,2.875,8,3.125],"texture":"#0"},"east":{"uv":[7.5,2.875,7.75,3.125],"texture":"#0"},"south":{"uv":[8.25,2.875,8.5,3.125],"texture":"#0"},"west":{"uv":[8,2.875,8.25,3.125],"texture":"#0"},"up":{"uv":[8,2.875,7.75,2.625],"texture":"#0"},"down":{"uv":[8.25,2.625,8,2.875],"texture":"#0"}}},{"from":[12,7,12],"to":[14,9,14],"faces":{"north":{"uv":[7.125,2.125,7.375,2.375],"texture":"#0"},"east":{"uv":[6.875,2.125,7.125,2.375],"texture":"#0"},"south":{"uv":[7.625,2.125,7.875,2.375],"texture":"#0"},"west":{"uv":[7.375,2.125,7.625,2.375],"texture":"#0"},"up":{"uv":[7.375,2.125,7.125,1.875],"texture":"#0"},"down":{"uv":[7.625,1.875,7.375,2.125],"texture":"#0"}}}, - {"from":[12,7,11],"to":[13,9,12],"faces":{"north":{"uv":[3.25,2.75,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.75,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.75,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.75,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.75,3.25,2.625],"texture":"#0"},"down":{"uv":[3.5,2.625,3.375,2.75],"texture":"#0"}}},{"from":[11,7,12],"to":[12,9,13],"faces":{"north":{"uv":[0.125,3,0.25,3.25],"texture":"#0"},"east":{"uv":[0,3,0.125,3.25],"texture":"#0"},"south":{"uv":[0.375,3,0.5,3.25],"texture":"#0"},"west":{"uv":[0.25,3,0.375,3.25],"texture":"#0"},"up":{"uv":[0.25,3,0.125,2.875],"texture":"#0"},"down":{"uv":[0.375,2.875,0.25,3],"texture":"#0"}}}, - {"from":[13,7,1],"to":[15,9,3],"faces":{"north":{"uv":[6.875,3.875,7.125,4.125],"texture":"#0"},"east":{"uv":[6.625,3.875,6.875,4.125],"texture":"#0"},"south":{"uv":[7.375,3.875,7.625,4.125],"texture":"#0"},"west":{"uv":[7.125,3.875,7.375,4.125],"texture":"#0"},"up":{"uv":[7.125,3.875,6.875,3.625],"texture":"#0"},"down":{"uv":[7.375,3.625,7.125,3.875],"texture":"#0"}}},{"from":[12,7,2],"to":[14,9,4],"faces":{"north":{"uv":[3.625,0.25,3.875,0.5],"texture":"#0"},"east":{"uv":[3.375,0.25,3.625,0.5],"texture":"#0"},"south":{"uv":[4.125,0.25,4.375,0.5],"texture":"#0"},"west":{"uv":[3.875,0.25,4.125,0.5],"texture":"#0"},"up":{"uv":[3.875,0.25,3.625,0],"texture":"#0"},"down":{"uv":[4.125,0,3.875,0.25],"texture":"#0"}}}, - {"from":[11,7,3],"to":[12,9,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.75],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.75],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.75],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.75],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[12,7,4],"to":[13,9,5],"faces":{"north":{"uv":[0.125,0.125,0.25,0.375],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.375],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.375],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.375],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}}, - {"from":[3,2,5],"to":[13,14,11],"faces":{"north":{"uv":[0.75,0.75,2,2.25],"texture":"#0"},"east":{"uv":[0,0.75,0.75,2.25],"texture":"#0"},"south":{"uv":[2.75,0.75,4,2.25],"texture":"#0"},"west":{"uv":[2,0.75,2.75,2.25],"texture":"#0"},"up":{"uv":[2,0.75,0.75,0],"texture":"#0"},"down":{"uv":[3.25,0,2,0.75],"texture":"#0"}}},{"from":[4,2,11],"to":[5,14,12],"faces":{"north":{"uv":[6,7,6.125,8.5],"texture":"#0"},"east":{"uv":[5.875,7,6,8.5],"texture":"#0"},"south":{"uv":[6.25,7,6.375,8.5],"texture":"#0"},"west":{"uv":[6.125,7,6.25,8.5],"texture":"#0"},"up":{"uv":[6.125,7,6,6.875],"texture":"#0"},"down":{"uv":[6.25,6.875,6.125,7],"texture":"#0"}}}, - {"from":[4,2,4],"to":[5,14,5],"faces":{"north":{"uv":[6.75,6.5,6.875,8],"texture":"#0"},"east":{"uv":[6.625,6.5,6.75,8],"texture":"#0"},"south":{"uv":[7,6.5,7.125,8],"texture":"#0"},"west":{"uv":[6.875,6.5,7,8],"texture":"#0"},"up":{"uv":[6.875,6.5,6.75,6.375],"texture":"#0"},"down":{"uv":[7,6.375,6.875,6.5],"texture":"#0"}}},{"from":[11,2,4],"to":[12,14,5],"faces":{"north":{"uv":[6.75,4.75,6.875,6.25],"texture":"#0"},"east":{"uv":[6.625,4.75,6.75,6.25],"texture":"#0"},"south":{"uv":[7,4.75,7.125,6.25],"texture":"#0"},"west":{"uv":[6.875,4.75,7,6.25],"texture":"#0"},"up":{"uv":[6.875,4.75,6.75,4.625],"texture":"#0"},"down":{"uv":[7,4.625,6.875,4.75],"texture":"#0"}}}, - {"from":[11,2,11],"to":[12,14,12],"faces":{"north":{"uv":[3.75,6.75,3.875,8.25],"texture":"#0"},"east":{"uv":[3.625,6.75,3.75,8.25],"texture":"#0"},"south":{"uv":[4,6.75,4.125,8.25],"texture":"#0"},"west":{"uv":[3.875,6.75,4,8.25],"texture":"#0"},"up":{"uv":[3.875,6.75,3.75,6.625],"texture":"#0"},"down":{"uv":[4,6.625,3.875,6.75],"texture":"#0"}}},{"from":[5,2,11],"to":[11,14,13],"faces":{"north":{"uv":[2.375,5,3.125,6.5],"texture":"#0"},"east":{"uv":[2.125,5,2.375,6.5],"texture":"#0"},"south":{"uv":[3.375,5,4.125,6.5],"texture":"#0"},"west":{"uv":[3.125,5,3.375,6.5],"texture":"#0"},"up":{"uv":[3.125,5,2.375,4.75],"texture":"#0"},"down":{"uv":[3.875,4.75,3.125,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[11,14,5],"faces":{"north":{"uv":[0.25,3.875,1,5.375],"texture":"#0"},"east":{"uv":[0,3.875,0.25,5.375],"texture":"#0"},"south":{"uv":[1.25,3.875,2,5.375],"texture":"#0"},"west":{"uv":[1,3.875,1.25,5.375],"texture":"#0"},"up":{"uv":[1,3.875,0.25,3.625],"texture":"#0"},"down":{"uv":[1.75,3.625,1,3.875],"texture":"#0"}}},{"from":[4,15,4],"to":[12,16,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}}, - {"from":[5,14,5],"to":[11,15,11],"faces":{"north":{"uv":[4.125,2.375,4.875,2.5],"texture":"#0"},"east":{"uv":[3.375,2.375,4.125,2.5],"texture":"#0"},"south":{"uv":[5.625,2.375,6.375,2.5],"texture":"#0"},"west":{"uv":[4.875,2.375,5.625,2.5],"texture":"#0"},"up":{"uv":[4.875,2.375,4.125,1.625],"texture":"#0"},"down":{"uv":[5.625,1.625,4.875,2.375],"texture":"#0"}}},{"from":[15,4,4],"to":[16,12,12],"faces":{"north":{"uv":[4.125,3.625,4.25,4.625],"texture":"#0"},"east":{"uv":[3.125,3.625,4.125,4.625],"texture":"#0"},"south":{"uv":[5.25,3.625,5.375,4.625],"texture":"#0"},"west":{"uv":[4.25,3.625,5.25,4.625],"texture":"#0"},"up":{"uv":[4.25,3.625,4.125,2.625],"texture":"#0"},"down":{"uv":[4.375,2.625,4.25,3.625],"texture":"#0"}}}, - {"from":[13,5,5],"to":[15,11,11],"faces":{"north":{"uv":[4.875,0.75,5.125,1.5],"texture":"#0"},"east":{"uv":[4.125,0.75,4.875,1.5],"texture":"#0"},"south":{"uv":[5.875,0.75,6.125,1.5],"texture":"#0"},"west":{"uv":[5.125,0.75,5.875,1.5],"texture":"#0"},"up":{"uv":[5.125,0.75,4.875,0],"texture":"#0"},"down":{"uv":[5.375,0,5.125,0.75],"texture":"#0"}}},{"from":[5,3,2],"to":[11,4,3],"faces":{"north":{"uv":[6.5,3.375,7.25,3.5],"texture":"#0"},"east":{"uv":[6.375,3.375,6.5,3.5],"texture":"#0"},"south":{"uv":[7.375,3.375,8.125,3.5],"texture":"#0"},"west":{"uv":[7.25,3.375,7.375,3.5],"texture":"#0"},"up":{"uv":[7.25,3.375,6.5,3.25],"texture":"#0"},"down":{"uv":[8,3.25,7.25,3.375],"texture":"#0"}}}, - {"from":[13,3,5],"to":[14,4,11],"faces":{"north":{"uv":[6.5,2.625,6.625,2.75],"texture":"#0"},"east":{"uv":[5.75,2.625,6.5,2.75],"texture":"#0"},"south":{"uv":[7.375,2.625,7.5,2.75],"texture":"#0"},"west":{"uv":[6.625,2.625,7.375,2.75],"texture":"#0"},"up":{"uv":[6.625,2.625,6.5,1.875],"texture":"#0"},"down":{"uv":[6.75,1.875,6.625,2.625],"texture":"#0"}}},{"from":[12,3,11],"to":[13,4,12],"faces":{"north":{"uv":[8.375,3.375,8.5,3.5],"texture":"#0"},"east":{"uv":[8.25,3.375,8.375,3.5],"texture":"#0"},"south":{"uv":[8.625,3.375,8.75,3.5],"texture":"#0"},"west":{"uv":[8.5,3.375,8.625,3.5],"texture":"#0"},"up":{"uv":[8.5,3.375,8.375,3.25],"texture":"#0"},"down":{"uv":[8.625,3.25,8.5,3.375],"texture":"#0"}}}, - {"from":[11,3,12],"to":[12,4,13],"faces":{"north":{"uv":[6.625,8.25,6.75,8.375],"texture":"#0"},"east":{"uv":[6.5,8.25,6.625,8.375],"texture":"#0"},"south":{"uv":[6.875,8.25,7,8.375],"texture":"#0"},"west":{"uv":[6.75,8.25,6.875,8.375],"texture":"#0"},"up":{"uv":[6.75,8.25,6.625,8.125],"texture":"#0"},"down":{"uv":[6.875,8.125,6.75,8.25],"texture":"#0"}}},{"from":[11,3,3],"to":[12,4,4],"faces":{"north":{"uv":[1.25,8.25,1.375,8.375],"texture":"#0"},"east":{"uv":[1.125,8.25,1.25,8.375],"texture":"#0"},"south":{"uv":[1.5,8.25,1.625,8.375],"texture":"#0"},"west":{"uv":[1.375,8.25,1.5,8.375],"texture":"#0"},"up":{"uv":[1.375,8.25,1.25,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.375,8.25],"texture":"#0"}}}, - {"from":[12,3,4],"to":[13,4,5],"faces":{"north":{"uv":[8.125,2.375,8.25,2.5],"texture":"#0"},"east":{"uv":[8,2.375,8.125,2.5],"texture":"#0"},"south":{"uv":[8.375,2.375,8.5,2.5],"texture":"#0"},"west":{"uv":[8.25,2.375,8.375,2.5],"texture":"#0"},"up":{"uv":[8.25,2.375,8.125,2.25],"texture":"#0"},"down":{"uv":[8.375,2.25,8.25,2.375],"texture":"#0"}}},{"from":[3,3,4],"to":[4,4,5],"faces":{"north":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"east":{"uv":[8,2,8.125,2.125],"texture":"#0"},"south":{"uv":[8.375,2,8.5,2.125],"texture":"#0"},"west":{"uv":[8.25,2,8.375,2.125],"texture":"#0"},"up":{"uv":[8.25,2,8.125,1.875],"texture":"#0"},"down":{"uv":[8.375,1.875,8.25,2],"texture":"#0"}}}, - {"from":[4,3,3],"to":[5,4,4],"faces":{"north":{"uv":[8.125,0.875,8.25,1],"texture":"#0"},"east":{"uv":[8,0.875,8.125,1],"texture":"#0"},"south":{"uv":[8.375,0.875,8.5,1],"texture":"#0"},"west":{"uv":[8.25,0.875,8.375,1],"texture":"#0"},"up":{"uv":[8.25,0.875,8.125,0.75],"texture":"#0"},"down":{"uv":[8.375,0.75,8.25,0.875],"texture":"#0"}}},{"from":[4,3,12],"to":[5,4,13],"faces":{"north":{"uv":[8.125,0.5,8.25,0.625],"texture":"#0"},"east":{"uv":[8,0.5,8.125,0.625],"texture":"#0"},"south":{"uv":[8.375,0.5,8.5,0.625],"texture":"#0"},"west":{"uv":[8.25,0.5,8.375,0.625],"texture":"#0"},"up":{"uv":[8.25,0.5,8.125,0.375],"texture":"#0"},"down":{"uv":[8.375,0.375,8.25,0.5],"texture":"#0"}}}, - {"from":[3,3,11],"to":[4,4,12],"faces":{"north":{"uv":[8.125,0.125,8.25,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[8.375,0.125,8.5,0.25],"texture":"#0"},"west":{"uv":[8.25,0.125,8.375,0.25],"texture":"#0"},"up":{"uv":[8.25,0.125,8.125,0],"texture":"#0"},"down":{"uv":[8.375,0,8.25,0.125],"texture":"#0"}}},{"from":[2,3,5],"to":[3,4,11],"faces":{"north":{"uv":[6.5,1.625,6.625,1.75],"texture":"#0"},"east":{"uv":[5.75,1.625,6.5,1.75],"texture":"#0"},"south":{"uv":[7.375,1.625,7.5,1.75],"texture":"#0"},"west":{"uv":[6.625,1.625,7.375,1.75],"texture":"#0"},"up":{"uv":[6.625,1.625,6.5,0.875],"texture":"#0"},"down":{"uv":[6.75,0.875,6.625,1.625],"texture":"#0"}}}, - {"from":[5,3,13],"to":[11,4,14],"faces":{"north":{"uv":[5.75,3,6.5,3.125],"texture":"#0"},"east":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"south":{"uv":[6.625,3,7.375,3.125],"texture":"#0"},"west":{"uv":[6.5,3,6.625,3.125],"texture":"#0"},"up":{"uv":[6.5,3,5.75,2.875],"texture":"#0"},"down":{"uv":[7.25,2.875,6.5,3],"texture":"#0"}}},{"from":[5,12,2],"to":[11,13,3],"faces":{"north":{"uv":[5.625,0.5,6.375,0.625],"texture":"#0"},"east":{"uv":[5.5,0.5,5.625,0.625],"texture":"#0"},"south":{"uv":[6.5,0.5,7.25,0.625],"texture":"#0"},"west":{"uv":[6.375,0.5,6.5,0.625],"texture":"#0"},"up":{"uv":[6.375,0.5,5.625,0.375],"texture":"#0"},"down":{"uv":[7.125,0.375,6.375,0.5],"texture":"#0"}}}, - {"from":[13,12,5],"to":[14,13,11],"faces":{"north":{"uv":[6.25,4.375,6.375,4.5],"texture":"#0"},"east":{"uv":[5.5,4.375,6.25,4.5],"texture":"#0"},"south":{"uv":[7.125,4.375,7.25,4.5],"texture":"#0"},"west":{"uv":[6.375,4.375,7.125,4.5],"texture":"#0"},"up":{"uv":[6.375,4.375,6.25,3.625],"texture":"#0"},"down":{"uv":[6.5,3.625,6.375,4.375],"texture":"#0"}}},{"from":[12,12,11],"to":[13,13,12],"faces":{"north":{"uv":[8,8,8.125,8.125],"texture":"#0"},"east":{"uv":[7.875,8,8,8.125],"texture":"#0"},"south":{"uv":[8.25,8,8.375,8.125],"texture":"#0"},"west":{"uv":[8.125,8,8.25,8.125],"texture":"#0"},"up":{"uv":[8.125,8,8,7.875],"texture":"#0"},"down":{"uv":[8.25,7.875,8.125,8],"texture":"#0"}}}, - {"from":[11,12,12],"to":[12,13,13],"faces":{"north":{"uv":[8,7.625,8.125,7.75],"texture":"#0"},"east":{"uv":[7.875,7.625,8,7.75],"texture":"#0"},"south":{"uv":[8.25,7.625,8.375,7.75],"texture":"#0"},"west":{"uv":[8.125,7.625,8.25,7.75],"texture":"#0"},"up":{"uv":[8.125,7.625,8,7.5],"texture":"#0"},"down":{"uv":[8.25,7.5,8.125,7.625],"texture":"#0"}}},{"from":[11,12,3],"to":[12,13,4],"faces":{"north":{"uv":[8,7.25,8.125,7.375],"texture":"#0"},"east":{"uv":[7.875,7.25,8,7.375],"texture":"#0"},"south":{"uv":[8.25,7.25,8.375,7.375],"texture":"#0"},"west":{"uv":[8.125,7.25,8.25,7.375],"texture":"#0"},"up":{"uv":[8.125,7.25,8,7.125],"texture":"#0"},"down":{"uv":[8.25,7.125,8.125,7.25],"texture":"#0"}}}, - {"from":[12,12,4],"to":[13,13,5],"faces":{"north":{"uv":[8,6.875,8.125,7],"texture":"#0"},"east":{"uv":[7.875,6.875,8,7],"texture":"#0"},"south":{"uv":[8.25,6.875,8.375,7],"texture":"#0"},"west":{"uv":[8.125,6.875,8.25,7],"texture":"#0"},"up":{"uv":[8.125,6.875,8,6.75],"texture":"#0"},"down":{"uv":[8.25,6.75,8.125,6.875],"texture":"#0"}}},{"from":[3,12,4],"to":[4,13,5],"faces":{"north":{"uv":[8,6.5,8.125,6.625],"texture":"#0"},"east":{"uv":[7.875,6.5,8,6.625],"texture":"#0"},"south":{"uv":[8.25,6.5,8.375,6.625],"texture":"#0"},"west":{"uv":[8.125,6.5,8.25,6.625],"texture":"#0"},"up":{"uv":[8.125,6.5,8,6.375],"texture":"#0"},"down":{"uv":[8.25,6.375,8.125,6.5],"texture":"#0"}}}, - {"from":[4,12,3],"to":[5,13,4],"faces":{"north":{"uv":[8,6.125,8.125,6.25],"texture":"#0"},"east":{"uv":[7.875,6.125,8,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[8.125,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[8.125,6.125,8,6],"texture":"#0"},"down":{"uv":[8.25,6,8.125,6.125],"texture":"#0"}}},{"from":[4,12,12],"to":[5,13,13],"faces":{"north":{"uv":[8,5.75,8.125,5.875],"texture":"#0"},"east":{"uv":[7.875,5.75,8,5.875],"texture":"#0"},"south":{"uv":[8.25,5.75,8.375,5.875],"texture":"#0"},"west":{"uv":[8.125,5.75,8.25,5.875],"texture":"#0"},"up":{"uv":[8.125,5.75,8,5.625],"texture":"#0"},"down":{"uv":[8.25,5.625,8.125,5.75],"texture":"#0"}}}, - {"from":[3,12,11],"to":[4,13,12],"faces":{"north":{"uv":[8,5.375,8.125,5.5],"texture":"#0"},"east":{"uv":[7.875,5.375,8,5.5],"texture":"#0"},"south":{"uv":[8.25,5.375,8.375,5.5],"texture":"#0"},"west":{"uv":[8.125,5.375,8.25,5.5],"texture":"#0"},"up":{"uv":[8.125,5.375,8,5.25],"texture":"#0"},"down":{"uv":[8.25,5.25,8.125,5.375],"texture":"#0"}}},{"from":[2,12,5],"to":[3,13,11],"faces":{"north":{"uv":[5.25,3.375,5.375,3.5],"texture":"#0"},"east":{"uv":[4.5,3.375,5.25,3.5],"texture":"#0"},"south":{"uv":[6.125,3.375,6.25,3.5],"texture":"#0"},"west":{"uv":[5.375,3.375,6.125,3.5],"texture":"#0"},"up":{"uv":[5.375,3.375,5.25,2.625],"texture":"#0"},"down":{"uv":[5.5,2.625,5.375,3.375],"texture":"#0"}}}, - {"from":[5,12,13],"to":[11,13,14],"faces":{"north":{"uv":[5.625,0.125,6.375,0.25],"texture":"#0"},"east":{"uv":[5.5,0.125,5.625,0.25],"texture":"#0"},"south":{"uv":[6.5,0.125,7.25,0.25],"texture":"#0"},"west":{"uv":[6.375,0.125,6.5,0.25],"texture":"#0"},"up":{"uv":[6.375,0.125,5.625,0],"texture":"#0"},"down":{"uv":[7.125,0,6.375,0.125],"texture":"#0"}}},{"from":[2,4,6],"to":[3,12,7],"faces":{"north":{"uv":[7.5,0.125,7.625,1.125],"texture":"#0"},"east":{"uv":[7.375,0.125,7.5,1.125],"texture":"#0"},"south":{"uv":[7.75,0.125,7.875,1.125],"texture":"#0"},"west":{"uv":[7.625,0.125,7.75,1.125],"texture":"#0"},"up":{"uv":[7.625,0.125,7.5,0],"texture":"#0"},"down":{"uv":[7.75,0,7.625,0.125],"texture":"#0"}}}, - {"from":[9,4,2],"to":[10,12,3],"faces":{"north":{"uv":[7.375,7.125,7.5,8.125],"texture":"#0"},"east":{"uv":[7.25,7.125,7.375,8.125],"texture":"#0"},"south":{"uv":[7.625,7.125,7.75,8.125],"texture":"#0"},"west":{"uv":[7.5,7.125,7.625,8.125],"texture":"#0"},"up":{"uv":[7.5,7.125,7.375,7],"texture":"#0"},"down":{"uv":[7.625,7,7.5,7.125],"texture":"#0"}}},{"from":[6,4,2],"to":[7,12,3],"faces":{"north":{"uv":[7.375,5.875,7.5,6.875],"texture":"#0"},"east":{"uv":[7.25,5.875,7.375,6.875],"texture":"#0"},"south":{"uv":[7.625,5.875,7.75,6.875],"texture":"#0"},"west":{"uv":[7.5,5.875,7.625,6.875],"texture":"#0"},"up":{"uv":[7.5,5.875,7.375,5.75],"texture":"#0"},"down":{"uv":[7.625,5.75,7.5,5.875],"texture":"#0"}}}, - {"from":[6,4,13],"to":[7,12,14],"faces":{"north":{"uv":[7.375,4.625,7.5,5.625],"texture":"#0"},"east":{"uv":[7.25,4.625,7.375,5.625],"texture":"#0"},"south":{"uv":[7.625,4.625,7.75,5.625],"texture":"#0"},"west":{"uv":[7.5,4.625,7.625,5.625],"texture":"#0"},"up":{"uv":[7.5,4.625,7.375,4.5],"texture":"#0"},"down":{"uv":[7.625,4.5,7.5,4.625],"texture":"#0"}}},{"from":[9,4,13],"to":[10,12,14],"faces":{"north":{"uv":[5,7.125,5.125,8.125],"texture":"#0"},"east":{"uv":[4.875,7.125,5,8.125],"texture":"#0"},"south":{"uv":[5.25,7.125,5.375,8.125],"texture":"#0"},"west":{"uv":[5.125,7.125,5.25,8.125],"texture":"#0"},"up":{"uv":[5.125,7.125,5,7],"texture":"#0"},"down":{"uv":[5.25,7,5.125,7.125],"texture":"#0"}}}, - {"from":[2,4,9],"to":[3,12,10],"faces":{"north":{"uv":[4.375,7.125,4.5,8.125],"texture":"#0"},"east":{"uv":[4.25,7.125,4.375,8.125],"texture":"#0"},"south":{"uv":[4.625,7.125,4.75,8.125],"texture":"#0"},"west":{"uv":[4.5,7.125,4.625,8.125],"texture":"#0"},"up":{"uv":[4.5,7.125,4.375,7],"texture":"#0"},"down":{"uv":[4.625,7,4.5,7.125],"texture":"#0"}}},{"from":[13,11,9],"to":[14,12,10],"faces":{"north":{"uv":[8,5,8.125,5.125],"texture":"#0"},"east":{"uv":[7.875,5,8,5.125],"texture":"#0"},"south":{"uv":[8.25,5,8.375,5.125],"texture":"#0"},"west":{"uv":[8.125,5,8.25,5.125],"texture":"#0"},"up":{"uv":[8.125,5,8,4.875],"texture":"#0"},"down":{"uv":[8.25,4.875,8.125,5],"texture":"#0"}}}, - {"from":[13,11,6],"to":[14,12,7],"faces":{"north":{"uv":[1.25,7.875,1.375,8],"texture":"#0"},"east":{"uv":[1.125,7.875,1.25,8],"texture":"#0"},"south":{"uv":[1.5,7.875,1.625,8],"texture":"#0"},"west":{"uv":[1.375,7.875,1.5,8],"texture":"#0"},"up":{"uv":[1.375,7.875,1.25,7.75],"texture":"#0"},"down":{"uv":[1.5,7.75,1.375,7.875],"texture":"#0"}}},{"from":[13,4,6],"to":[14,5,7],"faces":{"north":{"uv":[7,1.25,7.125,1.375],"texture":"#0"},"east":{"uv":[6.875,1.25,7,1.375],"texture":"#0"},"south":{"uv":[7.25,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[7.125,1.25,7.25,1.375],"texture":"#0"},"up":{"uv":[7.125,1.25,7,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,7.125,1.25],"texture":"#0"}}}, - {"from":[13,4,9],"to":[14,5,10],"faces":{"north":{"uv":[5.875,2,6,2.125],"texture":"#0"},"east":{"uv":[5.75,2,5.875,2.125],"texture":"#0"},"south":{"uv":[6.125,2,6.25,2.125],"texture":"#0"},"west":{"uv":[6,2,6.125,2.125],"texture":"#0"},"up":{"uv":[6,2,5.875,1.875],"texture":"#0"},"down":{"uv":[6.125,1.875,6,2],"texture":"#0"}}} + "elements": [ + { + "from": [ + 14, + 0, + 15 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.625, + 1.25, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 5.625, + 1, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 5.625, + 1.625, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 5.625, + 1.375, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 5.625, + 1, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 5.5, + 1.25, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 0, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.625, + 0.375, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.625, + 0.125, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 5.625, + 0.75, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 5.625, + 0.5, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 5.625, + 0.125, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 5.5, + 0.375, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 2, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 4.875, + 5.5, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 4.875, + 5.25, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 4.875, + 5.875, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 4.875, + 5.625, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 4.875, + 5.25, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.75, + 4.75, + 5.5, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 15 + ], + "to": [ + 2, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 4.875, + 4.625, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 4.875, + 4.375, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 4.875, + 5, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.625, + 4.875, + 4.75, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.625, + 4.875, + 4.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 4.75, + 4.625, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 14 + ], + "to": [ + 1, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 3.125, + 6.75, + 3.25, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3, + 6.75, + 3.125, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 6.75, + 3.5, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 6.75, + 3.375, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.25, + 6.75, + 3.125, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.375, + 6.625, + 3.25, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 1 + ], + "to": [ + 1, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 2.5, + 6.75, + 2.625, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 6.75, + 2.5, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 6.75, + 2.875, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 6.75, + 2.75, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.625, + 6.75, + 2.5, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 6.625, + 2.625, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 0, + 1 + ], + "to": [ + 16, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 6.75, + 2, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 6.75, + 1.875, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 6.75, + 2.25, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 6.75, + 2.125, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 6.75, + 1.875, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.125, + 6.625, + 2, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 0, + 14 + ], + "to": [ + 16, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 6.125, + 4.75, + 6.25, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 4.75, + 6.125, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.375, + 4.75, + 6.5, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.25, + 4.75, + 6.375, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.25, + 4.75, + 6.125, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.375, + 4.625, + 6.25, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 7, + 13 + ], + "to": [ + 3, + 9, + 15 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 4.5, + 8.375, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 4.5, + 8.125, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.625, + 4.5, + 8.875, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 4.5, + 8.625, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 4.5, + 8.125, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 4.25, + 8.375, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 7, + 12 + ], + "to": [ + 4, + 9, + 14 + ], + "faces": { + "north": { + "uv": [ + 8, + 3.875, + 8.25, + 4.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 3.875, + 8, + 4.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 3.875, + 8.75, + 4.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 3.875, + 8.5, + 4.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 3.875, + 8, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 3.625, + 8.25, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 7, + 11 + ], + "to": [ + 4, + 9, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3.75, + 5.75, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 3.75, + 5.625, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 3.75, + 6, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.75, + 5.875, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.75, + 5.625, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 3.625, + 5.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 7, + 12 + ], + "to": [ + 5, + 9, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 2.75, + 4.75, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 2.75, + 4.625, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 2.75, + 5, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 2.75, + 4.875, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 2.75, + 4.625, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 2.625, + 4.75, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 7, + 1 + ], + "to": [ + 3, + 9, + 3 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 8, + 0.5, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8, + 0.25, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 8, + 1, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.5, + 8, + 0.75, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.5, + 8, + 0.25, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.75, + 7.75, + 0.5, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 7, + 2 + ], + "to": [ + 4, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 1.5, + 8.125, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.625, + 1.5, + 7.875, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 1.5, + 8.625, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 1.5, + 8.375, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 1.5, + 7.875, + 1.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 1.25, + 8.125, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 7, + 3 + ], + "to": [ + 5, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.25, + 4.25, + 2.375, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 4.25, + 2.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 4.25, + 2.625, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.375, + 4.25, + 2.5, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.375, + 4.25, + 2.25, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.5, + 4.125, + 2.375, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 7, + 4 + ], + "to": [ + 4, + 9, + 5 + ], + "faces": { + "north": { + "uv": [ + 2.25, + 3.75, + 2.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 3.75, + 2.25, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 3.75, + 2.625, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.375, + 3.75, + 2.5, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.375, + 3.75, + 2.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.5, + 3.625, + 2.375, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 7, + 13 + ], + "to": [ + 15, + 9, + 15 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 2.875, + 8, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 2.875, + 7.75, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 2.875, + 8.5, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 2.875, + 8.25, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 2.875, + 7.75, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 2.625, + 8, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 12 + ], + "to": [ + 14, + 9, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 2.125, + 7.375, + 2.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 2.125, + 7.125, + 2.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 2.125, + 7.875, + 2.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 2.125, + 7.625, + 2.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 2.125, + 7.125, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 1.875, + 7.375, + 2.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 11 + ], + "to": [ + 13, + 9, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.75, + 3.375, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.75, + 3.25, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.75, + 3.625, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.75, + 3.5, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.75, + 3.25, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.625, + 3.375, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 7, + 12 + ], + "to": [ + 12, + 9, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 3, + 0.25, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3, + 0.125, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 3, + 0.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 3, + 0.375, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 3, + 0.125, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.875, + 0.25, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 7, + 1 + ], + "to": [ + 15, + 9, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 3.875, + 7.125, + 4.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 3.875, + 6.875, + 4.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 3.875, + 7.625, + 4.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 3.875, + 7.375, + 4.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 3.875, + 6.875, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 3.625, + 7.125, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 2 + ], + "to": [ + 14, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 0.25, + 3.875, + 0.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 0.25, + 3.625, + 0.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 0.25, + 4.375, + 0.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 0.25, + 4.125, + 0.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 0.25, + 3.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 0, + 3.875, + 0.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 7, + 3 + ], + "to": [ + 12, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.5, + 0.25, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.5, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.5, + 0.5, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.5, + 0.375, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.5, + 0.125, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.375, + 0.25, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 4 + ], + "to": [ + 13, + 9, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 2, + 5 + ], + "to": [ + 13, + 14, + 11 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 0.75, + 2, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.75, + 0.75, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 0.75, + 4, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 0.75, + 2.75, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 0.75, + 0.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 0, + 2, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 2, + 11 + ], + "to": [ + 5, + 14, + 12 + ], + "faces": { + "north": { + "uv": [ + 6, + 7, + 6.125, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.875, + 7, + 6, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.25, + 7, + 6.375, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 7, + 6.25, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 7, + 6, + 6.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 6.875, + 6.125, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 2, + 4 + ], + "to": [ + 5, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 6.5, + 6.875, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 6.5, + 6.75, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 6.5, + 7.125, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 6.5, + 7, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 6.5, + 6.75, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 6.375, + 6.875, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 2, + 4 + ], + "to": [ + 12, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 4.75, + 6.875, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 4.75, + 6.75, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 4.75, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 4.75, + 7, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 4.75, + 6.75, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 4.625, + 6.875, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 2, + 11 + ], + "to": [ + 12, + 14, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 6.75, + 3.875, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.625, + 6.75, + 3.75, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.75, + 4.125, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 6.75, + 4, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 6.75, + 3.75, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 6.625, + 3.875, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 11 + ], + "to": [ + 11, + 14, + 13 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 5, + 3.125, + 6.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 5, + 2.375, + 6.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 5, + 4.125, + 6.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 5, + 3.375, + 6.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.125, + 5, + 2.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 4.75, + 3.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 3 + ], + "to": [ + 11, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 3.875, + 1, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.875, + 0.25, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.25, + 3.875, + 2, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1, + 3.875, + 1.25, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1, + 3.875, + 0.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 3.625, + 1, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 15, + 4 + ], + "to": [ + 12, + 16, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 3.375, + 2, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 1, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 3.375, + 4, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 3.375, + 3, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 3.375, + 1, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 2.375, + 2, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 14, + 5 + ], + "to": [ + 11, + 15, + 11 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 2.375, + 4.875, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 2.375, + 4.125, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 2.375, + 6.375, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 2.375, + 5.625, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 2.375, + 4.125, + 1.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 1.625, + 4.875, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 4, + 4 + ], + "to": [ + 1, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 3.625, + 4.25, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 3.625, + 5.25, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 3.625, + 5.375, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 3.625, + 4.125, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.25, + 3.625, + 4.125, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.375, + 2.625, + 4.25, + 3.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 5, + 5 + ], + "to": [ + 3, + 11, + 11 + ], + "faces": { + "north": { + "uv": [ + 4.875, + 0.75, + 5.125, + 1.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 0.75, + 4.875, + 1.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 0.75, + 6.125, + 1.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 0.75, + 5.875, + 1.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.125, + 0.75, + 4.875, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 0, + 5.125, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 2 + ], + "to": [ + 11, + 4, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 3.375, + 7.25, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.375, + 3.375, + 6.5, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 3.375, + 8.125, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 3.375, + 7.375, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 3.375, + 6.5, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 3.25, + 7.25, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 5 + ], + "to": [ + 14, + 4, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 2.625, + 6.625, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 2.625, + 6.5, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 2.625, + 7.5, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 2.625, + 7.375, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 2.625, + 6.5, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 1.875, + 6.625, + 2.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 11 + ], + "to": [ + 13, + 4, + 12 + ], + "faces": { + "north": { + "uv": [ + 8.375, + 3.375, + 8.5, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.25, + 3.375, + 8.375, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.625, + 3.375, + 8.75, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.5, + 3.375, + 8.625, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.5, + 3.375, + 8.375, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 3.25, + 8.5, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 3, + 12 + ], + "to": [ + 12, + 4, + 13 + ], + "faces": { + "north": { + "uv": [ + 6.625, + 8.25, + 6.75, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.5, + 8.25, + 6.625, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 8.25, + 7, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 8.25, + 6.875, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 8.25, + 6.625, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.875, + 8.125, + 6.75, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 3, + 3 + ], + "to": [ + 12, + 4, + 4 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 8.25, + 1.375, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.125, + 8.25, + 1.25, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 8.25, + 1.625, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 8.25, + 1.5, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 8.25, + 1.25, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 8.125, + 1.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 4 + ], + "to": [ + 13, + 4, + 5 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 2.375, + 8.25, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 2.375, + 8.125, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 2.375, + 8.5, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 2.375, + 8.375, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 2.375, + 8.125, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 2.25, + 8.25, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 3, + 4 + ], + "to": [ + 4, + 4, + 5 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 2, + 8.25, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 2, + 8.125, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 2, + 8.5, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 2, + 8.375, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 2, + 8.125, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 1.875, + 8.25, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 3, + 3 + ], + "to": [ + 5, + 4, + 4 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.875, + 8.25, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.875, + 8.125, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.875, + 8.5, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.875, + 8.375, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.875, + 8.125, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0.75, + 8.25, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 3, + 12 + ], + "to": [ + 5, + 4, + 13 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.5, + 8.25, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.5, + 8.125, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.5, + 8.5, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.5, + 8.375, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.5, + 8.125, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0.375, + 8.25, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 3, + 11 + ], + "to": [ + 4, + 4, + 12 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.125, + 8.25, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.125, + 8.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.125, + 8.5, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.125, + 8.375, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.125, + 8.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0, + 8.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 5 + ], + "to": [ + 3, + 4, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 1.625, + 6.625, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 1.625, + 6.5, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 1.625, + 7.5, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 1.625, + 7.375, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 1.625, + 6.5, + 0.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 0.875, + 6.625, + 1.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 13 + ], + "to": [ + 11, + 4, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 3, + 6.5, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.625, + 3, + 5.75, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 3, + 7.375, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 3, + 6.625, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 3, + 5.75, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 2.875, + 6.5, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 2 + ], + "to": [ + 11, + 13, + 3 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 0.5, + 6.375, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 0.5, + 5.625, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 0.5, + 7.25, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 0.5, + 6.5, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 0.5, + 5.625, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 0.375, + 6.375, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 12, + 5 + ], + "to": [ + 14, + 13, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 4.375, + 6.375, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 4.375, + 6.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 4.375, + 7.25, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 4.375, + 7.125, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 4.375, + 6.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 3.625, + 6.375, + 4.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 12, + 11 + ], + "to": [ + 13, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 8, + 8, + 8.125, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 8, + 8, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 8, + 8.375, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 8, + 8.25, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 8, + 8, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.875, + 8.125, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 12, + 12 + ], + "to": [ + 12, + 13, + 13 + ], + "faces": { + "north": { + "uv": [ + 8, + 7.625, + 8.125, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 7.625, + 8, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 7.625, + 8.375, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 7.625, + 8.25, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 7.625, + 8, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.5, + 8.125, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 12, + 3 + ], + "to": [ + 12, + 13, + 4 + ], + "faces": { + "north": { + "uv": [ + 8, + 7.25, + 8.125, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 7.25, + 8, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 7.25, + 8.375, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 7.25, + 8.25, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 7.25, + 8, + 7.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.125, + 8.125, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 12, + 4 + ], + "to": [ + 13, + 13, + 5 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.875, + 8.125, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.875, + 8, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.875, + 8.375, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.875, + 8.25, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.875, + 8, + 6.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6.75, + 8.125, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 12, + 4 + ], + "to": [ + 4, + 13, + 5 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.5, + 8.125, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.5, + 8, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.5, + 8.375, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.5, + 8.25, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.5, + 8, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6.375, + 8.125, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 12, + 3 + ], + "to": [ + 5, + 13, + 4 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.125, + 8.125, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.125, + 8, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.125, + 8.375, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.125, + 8.25, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.125, + 8, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6, + 8.125, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 12, + 12 + ], + "to": [ + 5, + 13, + 13 + ], + "faces": { + "north": { + "uv": [ + 8, + 5.75, + 8.125, + 5.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5.75, + 8, + 5.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5.75, + 8.375, + 5.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5.75, + 8.25, + 5.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5.75, + 8, + 5.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 5.625, + 8.125, + 5.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 12, + 11 + ], + "to": [ + 4, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 8, + 5.375, + 8.125, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5.375, + 8, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5.375, + 8.375, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5.375, + 8.25, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5.375, + 8, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 5.25, + 8.125, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 12, + 5 + ], + "to": [ + 3, + 13, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 3.375, + 5.375, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 3.375, + 5.25, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 3.375, + 6.25, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 3.375, + 6.125, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 3.375, + 5.25, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 2.625, + 5.375, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 13 + ], + "to": [ + 11, + 13, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 0.125, + 6.375, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 0.125, + 5.625, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 0.125, + 7.25, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 0.125, + 6.5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 0.125, + 5.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 0, + 6.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 6 + ], + "to": [ + 14, + 12, + 7 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 0.125, + 7.625, + 1.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 0.125, + 7.5, + 1.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.75, + 0.125, + 7.875, + 1.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.625, + 0.125, + 7.75, + 1.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.625, + 0.125, + 7.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.75, + 0, + 7.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 2 + ], + "to": [ + 10, + 12, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 7.125, + 7.5, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 7.125, + 7.375, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 7.125, + 7.75, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 7.125, + 7.625, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 7.125, + 7.375, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 7, + 7.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 2 + ], + "to": [ + 7, + 12, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 5.875, + 7.5, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 5.875, + 7.375, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 5.875, + 7.75, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 5.875, + 7.625, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 5.875, + 7.375, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 5.75, + 7.5, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 13 + ], + "to": [ + 7, + 12, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 4.625, + 7.5, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 4.625, + 7.375, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 4.625, + 7.75, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 4.625, + 7.625, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 4.625, + 7.375, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 4.5, + 7.5, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 13 + ], + "to": [ + 10, + 12, + 14 + ], + "faces": { + "north": { + "uv": [ + 5, + 7.125, + 5.125, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.875, + 7.125, + 5, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 7.125, + 5.375, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 7.125, + 5.25, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.125, + 7.125, + 5, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.25, + 7, + 5.125, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 9 + ], + "to": [ + 14, + 12, + 10 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 7.125, + 4.5, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 7.125, + 4.375, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 7.125, + 4.75, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 7.125, + 4.625, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 7.125, + 4.375, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.625, + 7, + 4.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 9 + ], + "to": [ + 3, + 12, + 10 + ], + "faces": { + "north": { + "uv": [ + 8, + 5, + 8.125, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5, + 8, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5, + 8.375, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5, + 8.25, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5, + 8, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 4.875, + 8.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 6 + ], + "to": [ + 3, + 12, + 7 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 7.875, + 1.375, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.125, + 7.875, + 1.25, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 7.875, + 1.625, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 7.875, + 1.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 7.875, + 1.25, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 7.75, + 1.375, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 6 + ], + "to": [ + 3, + 5, + 7 + ], + "faces": { + "north": { + "uv": [ + 7, + 1.25, + 7.125, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 1.25, + 7, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.25, + 1.25, + 7.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 1.25, + 7.25, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 1.25, + 7, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1.125, + 7.125, + 1.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 9 + ], + "to": [ + 3, + 5, + 10 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 2, + 6, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 2, + 5.875, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 2, + 6.25, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 2, + 6.125, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 2, + 5.875, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 1.875, + 6, + 2 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"fuelreprocessor", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "fuelreprocessor", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "frame", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"legs", - "origin":[8,8,8], - "color":0, - "children":[0,1,2,3,4,5,6,7] - },{ - "name":"supports", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "legs", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + { + "name": "supports", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "frontright", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 8, + 9, + 10, + 11 + ] + }, { - "name":"frontright", - "origin":[8,8,8], - "color":0, - "children":[8,9,10,11] - },{ - "name":"frontleft", - "origin":[8,8,8], - "color":0, - "children":[12,13,14,15] - },{ - "name":"backright", - "origin":[8,8,8], - "color":0, - "children":[16,17,18,19] - },{ - "name":"backleft", - "origin":[8,8,8], - "color":0, - "children":[20,21,22,23] + "name": "frontleft", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 12, + 13, + 14, + 15 + ] + }, + { + "name": "backright", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 16, + 17, + 18, + 19 + ] + }, + { + "name": "backleft", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 20, + 21, + 22, + 23 + ] } ] } ] - },{ - "name":"cyllinder", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"ports", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "cyllinder", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + }, + { + "name": "ports", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"liquid", - "origin":[8,8,8], - "color":0, - "children":[31,32] - },{ - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[33,34] + "name": "liquid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 31, + 32 + ] + }, + { + "name": "power", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 33, + 34 + ] } ] - },{ - "name":"heating coil", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "heating coil", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"bottom", - "origin":[8,8,8], - "color":0, - "children":[35,36,37,38,39,40,41,42,43,44,45,46] - },{ - "name":"top", - "origin":[8,8,8], - "color":0, - "children":[47,48,49,50,51,52,53,54,55,56,57,58] - },{ - "name":"middle", - "origin":[8,8,8], - "color":0, - "children":[59,60,61,62,63,64,65,66,67,68] + "name": "bottom", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + }, + { + "name": "top", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + }, + { + "name": "middle", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] } ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoritem.json b/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoritem.json deleted file mode 100644 index 3a7bc223..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoritem.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "parent": "block/cube_all", - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/fuelreprocessor", - "particle":"nuclearscience:model/fuelreprocessor" - }, - "elements":[ - {"from":[14,0,15],"to":[16,16,16],"faces":{"north":{"uv":[1,5.625,1.25,7.625],"texture":"#0"},"east":{"uv":[0.875,5.625,1,7.625],"texture":"#0"},"south":{"uv":[1.375,5.625,1.625,7.625],"texture":"#0"},"west":{"uv":[1.25,5.625,1.375,7.625],"texture":"#0"},"up":{"uv":[1.25,5.625,1,5.5],"texture":"#0"},"down":{"uv":[1.5,5.5,1.25,5.625],"texture":"#0"}}},{"from":[14,0,0],"to":[16,16,1],"faces":{"north":{"uv":[0.125,5.625,0.375,7.625],"texture":"#0"},"east":{"uv":[0,5.625,0.125,7.625],"texture":"#0"},"south":{"uv":[0.5,5.625,0.75,7.625],"texture":"#0"},"west":{"uv":[0.375,5.625,0.5,7.625],"texture":"#0"},"up":{"uv":[0.375,5.625,0.125,5.5],"texture":"#0"},"down":{"uv":[0.625,5.5,0.375,5.625],"texture":"#0"}}}, - {"from":[0,0,0],"to":[2,16,1],"faces":{"north":{"uv":[5.25,4.875,5.5,6.875],"texture":"#0"},"east":{"uv":[5.125,4.875,5.25,6.875],"texture":"#0"},"south":{"uv":[5.625,4.875,5.875,6.875],"texture":"#0"},"west":{"uv":[5.5,4.875,5.625,6.875],"texture":"#0"},"up":{"uv":[5.5,4.875,5.25,4.75],"texture":"#0"},"down":{"uv":[5.75,4.75,5.5,4.875],"texture":"#0"}}},{"from":[0,0,15],"to":[2,16,16],"faces":{"north":{"uv":[4.375,4.875,4.625,6.875],"texture":"#0"},"east":{"uv":[4.25,4.875,4.375,6.875],"texture":"#0"},"south":{"uv":[4.75,4.875,5,6.875],"texture":"#0"},"west":{"uv":[4.625,4.875,4.75,6.875],"texture":"#0"},"up":{"uv":[4.625,4.875,4.375,4.75],"texture":"#0"},"down":{"uv":[4.875,4.75,4.625,4.875],"texture":"#0"}}}, - {"from":[0,0,14],"to":[1,16,15],"faces":{"north":{"uv":[3.125,6.75,3.25,8.75],"texture":"#0"},"east":{"uv":[3,6.75,3.125,8.75],"texture":"#0"},"south":{"uv":[3.375,6.75,3.5,8.75],"texture":"#0"},"west":{"uv":[3.25,6.75,3.375,8.75],"texture":"#0"},"up":{"uv":[3.25,6.75,3.125,6.625],"texture":"#0"},"down":{"uv":[3.375,6.625,3.25,6.75],"texture":"#0"}}},{"from":[0,0,1],"to":[1,16,2],"faces":{"north":{"uv":[2.5,6.75,2.625,8.75],"texture":"#0"},"east":{"uv":[2.375,6.75,2.5,8.75],"texture":"#0"},"south":{"uv":[2.75,6.75,2.875,8.75],"texture":"#0"},"west":{"uv":[2.625,6.75,2.75,8.75],"texture":"#0"},"up":{"uv":[2.625,6.75,2.5,6.625],"texture":"#0"},"down":{"uv":[2.75,6.625,2.625,6.75],"texture":"#0"}}}, - {"from":[15,0,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,6.75,2,8.75],"texture":"#0"},"east":{"uv":[1.75,6.75,1.875,8.75],"texture":"#0"},"south":{"uv":[2.125,6.75,2.25,8.75],"texture":"#0"},"west":{"uv":[2,6.75,2.125,8.75],"texture":"#0"},"up":{"uv":[2,6.75,1.875,6.625],"texture":"#0"},"down":{"uv":[2.125,6.625,2,6.75],"texture":"#0"}}},{"from":[15,0,14],"to":[16,16,15],"faces":{"north":{"uv":[6.125,4.75,6.25,6.75],"texture":"#0"},"east":{"uv":[6,4.75,6.125,6.75],"texture":"#0"},"south":{"uv":[6.375,4.75,6.5,6.75],"texture":"#0"},"west":{"uv":[6.25,4.75,6.375,6.75],"texture":"#0"},"up":{"uv":[6.25,4.75,6.125,4.625],"texture":"#0"},"down":{"uv":[6.375,4.625,6.25,4.75],"texture":"#0"}}}, - {"from":[1,7,13],"to":[3,9,15],"faces":{"north":{"uv":[8.125,4.5,8.375,4.75],"texture":"#0"},"east":{"uv":[7.875,4.5,8.125,4.75],"texture":"#0"},"south":{"uv":[8.625,4.5,8.875,4.75],"texture":"#0"},"west":{"uv":[8.375,4.5,8.625,4.75],"texture":"#0"},"up":{"uv":[8.375,4.5,8.125,4.25],"texture":"#0"},"down":{"uv":[8.625,4.25,8.375,4.5],"texture":"#0"}}},{"from":[2,7,12],"to":[4,9,14],"faces":{"north":{"uv":[8,3.875,8.25,4.125],"texture":"#0"},"east":{"uv":[7.75,3.875,8,4.125],"texture":"#0"},"south":{"uv":[8.5,3.875,8.75,4.125],"texture":"#0"},"west":{"uv":[8.25,3.875,8.5,4.125],"texture":"#0"},"up":{"uv":[8.25,3.875,8,3.625],"texture":"#0"},"down":{"uv":[8.5,3.625,8.25,3.875],"texture":"#0"}}}, - {"from":[3,7,11],"to":[4,9,12],"faces":{"north":{"uv":[5.625,3.75,5.75,4],"texture":"#0"},"east":{"uv":[5.5,3.75,5.625,4],"texture":"#0"},"south":{"uv":[5.875,3.75,6,4],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4],"texture":"#0"},"up":{"uv":[5.75,3.75,5.625,3.625],"texture":"#0"},"down":{"uv":[5.875,3.625,5.75,3.75],"texture":"#0"}}},{"from":[4,7,12],"to":[5,9,13],"faces":{"north":{"uv":[4.625,2.75,4.75,3],"texture":"#0"},"east":{"uv":[4.5,2.75,4.625,3],"texture":"#0"},"south":{"uv":[4.875,2.75,5,3],"texture":"#0"},"west":{"uv":[4.75,2.75,4.875,3],"texture":"#0"},"up":{"uv":[4.75,2.75,4.625,2.625],"texture":"#0"},"down":{"uv":[4.875,2.625,4.75,2.75],"texture":"#0"}}}, - {"from":[1,7,1],"to":[3,9,3],"faces":{"north":{"uv":[0.25,8,0.5,8.25],"texture":"#0"},"east":{"uv":[0,8,0.25,8.25],"texture":"#0"},"south":{"uv":[0.75,8,1,8.25],"texture":"#0"},"west":{"uv":[0.5,8,0.75,8.25],"texture":"#0"},"up":{"uv":[0.5,8,0.25,7.75],"texture":"#0"},"down":{"uv":[0.75,7.75,0.5,8],"texture":"#0"}}},{"from":[2,7,2],"to":[4,9,4],"faces":{"north":{"uv":[7.875,1.5,8.125,1.75],"texture":"#0"},"east":{"uv":[7.625,1.5,7.875,1.75],"texture":"#0"},"south":{"uv":[8.375,1.5,8.625,1.75],"texture":"#0"},"west":{"uv":[8.125,1.5,8.375,1.75],"texture":"#0"},"up":{"uv":[8.125,1.5,7.875,1.25],"texture":"#0"},"down":{"uv":[8.375,1.25,8.125,1.5],"texture":"#0"}}}, - {"from":[4,7,3],"to":[5,9,4],"faces":{"north":{"uv":[2.25,4.25,2.375,4.5],"texture":"#0"},"east":{"uv":[2.125,4.25,2.25,4.5],"texture":"#0"},"south":{"uv":[2.5,4.25,2.625,4.5],"texture":"#0"},"west":{"uv":[2.375,4.25,2.5,4.5],"texture":"#0"},"up":{"uv":[2.375,4.25,2.25,4.125],"texture":"#0"},"down":{"uv":[2.5,4.125,2.375,4.25],"texture":"#0"}}},{"from":[3,7,4],"to":[4,9,5],"faces":{"north":{"uv":[2.25,3.75,2.375,4],"texture":"#0"},"east":{"uv":[2.125,3.75,2.25,4],"texture":"#0"},"south":{"uv":[2.5,3.75,2.625,4],"texture":"#0"},"west":{"uv":[2.375,3.75,2.5,4],"texture":"#0"},"up":{"uv":[2.375,3.75,2.25,3.625],"texture":"#0"},"down":{"uv":[2.5,3.625,2.375,3.75],"texture":"#0"}}}, - {"from":[13,7,13],"to":[15,9,15],"faces":{"north":{"uv":[7.75,2.875,8,3.125],"texture":"#0"},"east":{"uv":[7.5,2.875,7.75,3.125],"texture":"#0"},"south":{"uv":[8.25,2.875,8.5,3.125],"texture":"#0"},"west":{"uv":[8,2.875,8.25,3.125],"texture":"#0"},"up":{"uv":[8,2.875,7.75,2.625],"texture":"#0"},"down":{"uv":[8.25,2.625,8,2.875],"texture":"#0"}}},{"from":[12,7,12],"to":[14,9,14],"faces":{"north":{"uv":[7.125,2.125,7.375,2.375],"texture":"#0"},"east":{"uv":[6.875,2.125,7.125,2.375],"texture":"#0"},"south":{"uv":[7.625,2.125,7.875,2.375],"texture":"#0"},"west":{"uv":[7.375,2.125,7.625,2.375],"texture":"#0"},"up":{"uv":[7.375,2.125,7.125,1.875],"texture":"#0"},"down":{"uv":[7.625,1.875,7.375,2.125],"texture":"#0"}}}, - {"from":[12,7,11],"to":[13,9,12],"faces":{"north":{"uv":[3.25,2.75,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.75,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.75,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.75,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.75,3.25,2.625],"texture":"#0"},"down":{"uv":[3.5,2.625,3.375,2.75],"texture":"#0"}}},{"from":[11,7,12],"to":[12,9,13],"faces":{"north":{"uv":[0.125,3,0.25,3.25],"texture":"#0"},"east":{"uv":[0,3,0.125,3.25],"texture":"#0"},"south":{"uv":[0.375,3,0.5,3.25],"texture":"#0"},"west":{"uv":[0.25,3,0.375,3.25],"texture":"#0"},"up":{"uv":[0.25,3,0.125,2.875],"texture":"#0"},"down":{"uv":[0.375,2.875,0.25,3],"texture":"#0"}}}, - {"from":[13,7,1],"to":[15,9,3],"faces":{"north":{"uv":[6.875,3.875,7.125,4.125],"texture":"#0"},"east":{"uv":[6.625,3.875,6.875,4.125],"texture":"#0"},"south":{"uv":[7.375,3.875,7.625,4.125],"texture":"#0"},"west":{"uv":[7.125,3.875,7.375,4.125],"texture":"#0"},"up":{"uv":[7.125,3.875,6.875,3.625],"texture":"#0"},"down":{"uv":[7.375,3.625,7.125,3.875],"texture":"#0"}}},{"from":[12,7,2],"to":[14,9,4],"faces":{"north":{"uv":[3.625,0.25,3.875,0.5],"texture":"#0"},"east":{"uv":[3.375,0.25,3.625,0.5],"texture":"#0"},"south":{"uv":[4.125,0.25,4.375,0.5],"texture":"#0"},"west":{"uv":[3.875,0.25,4.125,0.5],"texture":"#0"},"up":{"uv":[3.875,0.25,3.625,0],"texture":"#0"},"down":{"uv":[4.125,0,3.875,0.25],"texture":"#0"}}}, - {"from":[11,7,3],"to":[12,9,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.75],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.75],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.75],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.75],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[12,7,4],"to":[13,9,5],"faces":{"north":{"uv":[0.125,0.125,0.25,0.375],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.375],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.375],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.375],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}}, - {"from":[3,2,5],"to":[13,14,11],"faces":{"north":{"uv":[0.75,0.75,2,2.25],"texture":"#0"},"east":{"uv":[0,0.75,0.75,2.25],"texture":"#0"},"south":{"uv":[2.75,0.75,4,2.25],"texture":"#0"},"west":{"uv":[2,0.75,2.75,2.25],"texture":"#0"},"up":{"uv":[2,0.75,0.75,0],"texture":"#0"},"down":{"uv":[3.25,0,2,0.75],"texture":"#0"}}},{"from":[4,2,11],"to":[5,14,12],"faces":{"north":{"uv":[6,7,6.125,8.5],"texture":"#0"},"east":{"uv":[5.875,7,6,8.5],"texture":"#0"},"south":{"uv":[6.25,7,6.375,8.5],"texture":"#0"},"west":{"uv":[6.125,7,6.25,8.5],"texture":"#0"},"up":{"uv":[6.125,7,6,6.875],"texture":"#0"},"down":{"uv":[6.25,6.875,6.125,7],"texture":"#0"}}}, - {"from":[4,2,4],"to":[5,14,5],"faces":{"north":{"uv":[6.75,6.5,6.875,8],"texture":"#0"},"east":{"uv":[6.625,6.5,6.75,8],"texture":"#0"},"south":{"uv":[7,6.5,7.125,8],"texture":"#0"},"west":{"uv":[6.875,6.5,7,8],"texture":"#0"},"up":{"uv":[6.875,6.5,6.75,6.375],"texture":"#0"},"down":{"uv":[7,6.375,6.875,6.5],"texture":"#0"}}},{"from":[11,2,4],"to":[12,14,5],"faces":{"north":{"uv":[6.75,4.75,6.875,6.25],"texture":"#0"},"east":{"uv":[6.625,4.75,6.75,6.25],"texture":"#0"},"south":{"uv":[7,4.75,7.125,6.25],"texture":"#0"},"west":{"uv":[6.875,4.75,7,6.25],"texture":"#0"},"up":{"uv":[6.875,4.75,6.75,4.625],"texture":"#0"},"down":{"uv":[7,4.625,6.875,4.75],"texture":"#0"}}}, - {"from":[11,2,11],"to":[12,14,12],"faces":{"north":{"uv":[3.75,6.75,3.875,8.25],"texture":"#0"},"east":{"uv":[3.625,6.75,3.75,8.25],"texture":"#0"},"south":{"uv":[4,6.75,4.125,8.25],"texture":"#0"},"west":{"uv":[3.875,6.75,4,8.25],"texture":"#0"},"up":{"uv":[3.875,6.75,3.75,6.625],"texture":"#0"},"down":{"uv":[4,6.625,3.875,6.75],"texture":"#0"}}},{"from":[5,2,11],"to":[11,14,13],"faces":{"north":{"uv":[2.375,5,3.125,6.5],"texture":"#0"},"east":{"uv":[2.125,5,2.375,6.5],"texture":"#0"},"south":{"uv":[3.375,5,4.125,6.5],"texture":"#0"},"west":{"uv":[3.125,5,3.375,6.5],"texture":"#0"},"up":{"uv":[3.125,5,2.375,4.75],"texture":"#0"},"down":{"uv":[3.875,4.75,3.125,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[11,14,5],"faces":{"north":{"uv":[0.25,3.875,1,5.375],"texture":"#0"},"east":{"uv":[0,3.875,0.25,5.375],"texture":"#0"},"south":{"uv":[1.25,3.875,2,5.375],"texture":"#0"},"west":{"uv":[1,3.875,1.25,5.375],"texture":"#0"},"up":{"uv":[1,3.875,0.25,3.625],"texture":"#0"},"down":{"uv":[1.75,3.625,1,3.875],"texture":"#0"}}},{"from":[4,15,4],"to":[12,16,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}}, - {"from":[5,14,5],"to":[11,15,11],"faces":{"north":{"uv":[4.125,2.375,4.875,2.5],"texture":"#0"},"east":{"uv":[3.375,2.375,4.125,2.5],"texture":"#0"},"south":{"uv":[5.625,2.375,6.375,2.5],"texture":"#0"},"west":{"uv":[4.875,2.375,5.625,2.5],"texture":"#0"},"up":{"uv":[4.875,2.375,4.125,1.625],"texture":"#0"},"down":{"uv":[5.625,1.625,4.875,2.375],"texture":"#0"}}},{"from":[15,4,4],"to":[16,12,12],"faces":{"north":{"uv":[4.125,3.625,4.25,4.625],"texture":"#0"},"east":{"uv":[3.125,3.625,4.125,4.625],"texture":"#0"},"south":{"uv":[5.25,3.625,5.375,4.625],"texture":"#0"},"west":{"uv":[4.25,3.625,5.25,4.625],"texture":"#0"},"up":{"uv":[4.25,3.625,4.125,2.625],"texture":"#0"},"down":{"uv":[4.375,2.625,4.25,3.625],"texture":"#0"}}}, - {"from":[13,5,5],"to":[15,11,11],"faces":{"north":{"uv":[4.875,0.75,5.125,1.5],"texture":"#0"},"east":{"uv":[4.125,0.75,4.875,1.5],"texture":"#0"},"south":{"uv":[5.875,0.75,6.125,1.5],"texture":"#0"},"west":{"uv":[5.125,0.75,5.875,1.5],"texture":"#0"},"up":{"uv":[5.125,0.75,4.875,0],"texture":"#0"},"down":{"uv":[5.375,0,5.125,0.75],"texture":"#0"}}},{"from":[5,3,2],"to":[11,4,3],"faces":{"north":{"uv":[6.5,3.375,7.25,3.5],"texture":"#0"},"east":{"uv":[6.375,3.375,6.5,3.5],"texture":"#0"},"south":{"uv":[7.375,3.375,8.125,3.5],"texture":"#0"},"west":{"uv":[7.25,3.375,7.375,3.5],"texture":"#0"},"up":{"uv":[7.25,3.375,6.5,3.25],"texture":"#0"},"down":{"uv":[8,3.25,7.25,3.375],"texture":"#0"}}}, - {"from":[13,3,5],"to":[14,4,11],"faces":{"north":{"uv":[6.5,2.625,6.625,2.75],"texture":"#0"},"east":{"uv":[5.75,2.625,6.5,2.75],"texture":"#0"},"south":{"uv":[7.375,2.625,7.5,2.75],"texture":"#0"},"west":{"uv":[6.625,2.625,7.375,2.75],"texture":"#0"},"up":{"uv":[6.625,2.625,6.5,1.875],"texture":"#0"},"down":{"uv":[6.75,1.875,6.625,2.625],"texture":"#0"}}},{"from":[12,3,11],"to":[13,4,12],"faces":{"north":{"uv":[8.375,3.375,8.5,3.5],"texture":"#0"},"east":{"uv":[8.25,3.375,8.375,3.5],"texture":"#0"},"south":{"uv":[8.625,3.375,8.75,3.5],"texture":"#0"},"west":{"uv":[8.5,3.375,8.625,3.5],"texture":"#0"},"up":{"uv":[8.5,3.375,8.375,3.25],"texture":"#0"},"down":{"uv":[8.625,3.25,8.5,3.375],"texture":"#0"}}}, - {"from":[11,3,12],"to":[12,4,13],"faces":{"north":{"uv":[6.625,8.25,6.75,8.375],"texture":"#0"},"east":{"uv":[6.5,8.25,6.625,8.375],"texture":"#0"},"south":{"uv":[6.875,8.25,7,8.375],"texture":"#0"},"west":{"uv":[6.75,8.25,6.875,8.375],"texture":"#0"},"up":{"uv":[6.75,8.25,6.625,8.125],"texture":"#0"},"down":{"uv":[6.875,8.125,6.75,8.25],"texture":"#0"}}},{"from":[11,3,3],"to":[12,4,4],"faces":{"north":{"uv":[1.25,8.25,1.375,8.375],"texture":"#0"},"east":{"uv":[1.125,8.25,1.25,8.375],"texture":"#0"},"south":{"uv":[1.5,8.25,1.625,8.375],"texture":"#0"},"west":{"uv":[1.375,8.25,1.5,8.375],"texture":"#0"},"up":{"uv":[1.375,8.25,1.25,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.375,8.25],"texture":"#0"}}}, - {"from":[12,3,4],"to":[13,4,5],"faces":{"north":{"uv":[8.125,2.375,8.25,2.5],"texture":"#0"},"east":{"uv":[8,2.375,8.125,2.5],"texture":"#0"},"south":{"uv":[8.375,2.375,8.5,2.5],"texture":"#0"},"west":{"uv":[8.25,2.375,8.375,2.5],"texture":"#0"},"up":{"uv":[8.25,2.375,8.125,2.25],"texture":"#0"},"down":{"uv":[8.375,2.25,8.25,2.375],"texture":"#0"}}},{"from":[3,3,4],"to":[4,4,5],"faces":{"north":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"east":{"uv":[8,2,8.125,2.125],"texture":"#0"},"south":{"uv":[8.375,2,8.5,2.125],"texture":"#0"},"west":{"uv":[8.25,2,8.375,2.125],"texture":"#0"},"up":{"uv":[8.25,2,8.125,1.875],"texture":"#0"},"down":{"uv":[8.375,1.875,8.25,2],"texture":"#0"}}}, - {"from":[4,3,3],"to":[5,4,4],"faces":{"north":{"uv":[8.125,0.875,8.25,1],"texture":"#0"},"east":{"uv":[8,0.875,8.125,1],"texture":"#0"},"south":{"uv":[8.375,0.875,8.5,1],"texture":"#0"},"west":{"uv":[8.25,0.875,8.375,1],"texture":"#0"},"up":{"uv":[8.25,0.875,8.125,0.75],"texture":"#0"},"down":{"uv":[8.375,0.75,8.25,0.875],"texture":"#0"}}},{"from":[4,3,12],"to":[5,4,13],"faces":{"north":{"uv":[8.125,0.5,8.25,0.625],"texture":"#0"},"east":{"uv":[8,0.5,8.125,0.625],"texture":"#0"},"south":{"uv":[8.375,0.5,8.5,0.625],"texture":"#0"},"west":{"uv":[8.25,0.5,8.375,0.625],"texture":"#0"},"up":{"uv":[8.25,0.5,8.125,0.375],"texture":"#0"},"down":{"uv":[8.375,0.375,8.25,0.5],"texture":"#0"}}}, - {"from":[3,3,11],"to":[4,4,12],"faces":{"north":{"uv":[8.125,0.125,8.25,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[8.375,0.125,8.5,0.25],"texture":"#0"},"west":{"uv":[8.25,0.125,8.375,0.25],"texture":"#0"},"up":{"uv":[8.25,0.125,8.125,0],"texture":"#0"},"down":{"uv":[8.375,0,8.25,0.125],"texture":"#0"}}},{"from":[2,3,5],"to":[3,4,11],"faces":{"north":{"uv":[6.5,1.625,6.625,1.75],"texture":"#0"},"east":{"uv":[5.75,1.625,6.5,1.75],"texture":"#0"},"south":{"uv":[7.375,1.625,7.5,1.75],"texture":"#0"},"west":{"uv":[6.625,1.625,7.375,1.75],"texture":"#0"},"up":{"uv":[6.625,1.625,6.5,0.875],"texture":"#0"},"down":{"uv":[6.75,0.875,6.625,1.625],"texture":"#0"}}}, - {"from":[5,3,13],"to":[11,4,14],"faces":{"north":{"uv":[5.75,3,6.5,3.125],"texture":"#0"},"east":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"south":{"uv":[6.625,3,7.375,3.125],"texture":"#0"},"west":{"uv":[6.5,3,6.625,3.125],"texture":"#0"},"up":{"uv":[6.5,3,5.75,2.875],"texture":"#0"},"down":{"uv":[7.25,2.875,6.5,3],"texture":"#0"}}},{"from":[5,12,2],"to":[11,13,3],"faces":{"north":{"uv":[5.625,0.5,6.375,0.625],"texture":"#0"},"east":{"uv":[5.5,0.5,5.625,0.625],"texture":"#0"},"south":{"uv":[6.5,0.5,7.25,0.625],"texture":"#0"},"west":{"uv":[6.375,0.5,6.5,0.625],"texture":"#0"},"up":{"uv":[6.375,0.5,5.625,0.375],"texture":"#0"},"down":{"uv":[7.125,0.375,6.375,0.5],"texture":"#0"}}}, - {"from":[13,12,5],"to":[14,13,11],"faces":{"north":{"uv":[6.25,4.375,6.375,4.5],"texture":"#0"},"east":{"uv":[5.5,4.375,6.25,4.5],"texture":"#0"},"south":{"uv":[7.125,4.375,7.25,4.5],"texture":"#0"},"west":{"uv":[6.375,4.375,7.125,4.5],"texture":"#0"},"up":{"uv":[6.375,4.375,6.25,3.625],"texture":"#0"},"down":{"uv":[6.5,3.625,6.375,4.375],"texture":"#0"}}},{"from":[12,12,11],"to":[13,13,12],"faces":{"north":{"uv":[8,8,8.125,8.125],"texture":"#0"},"east":{"uv":[7.875,8,8,8.125],"texture":"#0"},"south":{"uv":[8.25,8,8.375,8.125],"texture":"#0"},"west":{"uv":[8.125,8,8.25,8.125],"texture":"#0"},"up":{"uv":[8.125,8,8,7.875],"texture":"#0"},"down":{"uv":[8.25,7.875,8.125,8],"texture":"#0"}}}, - {"from":[11,12,12],"to":[12,13,13],"faces":{"north":{"uv":[8,7.625,8.125,7.75],"texture":"#0"},"east":{"uv":[7.875,7.625,8,7.75],"texture":"#0"},"south":{"uv":[8.25,7.625,8.375,7.75],"texture":"#0"},"west":{"uv":[8.125,7.625,8.25,7.75],"texture":"#0"},"up":{"uv":[8.125,7.625,8,7.5],"texture":"#0"},"down":{"uv":[8.25,7.5,8.125,7.625],"texture":"#0"}}},{"from":[11,12,3],"to":[12,13,4],"faces":{"north":{"uv":[8,7.25,8.125,7.375],"texture":"#0"},"east":{"uv":[7.875,7.25,8,7.375],"texture":"#0"},"south":{"uv":[8.25,7.25,8.375,7.375],"texture":"#0"},"west":{"uv":[8.125,7.25,8.25,7.375],"texture":"#0"},"up":{"uv":[8.125,7.25,8,7.125],"texture":"#0"},"down":{"uv":[8.25,7.125,8.125,7.25],"texture":"#0"}}}, - {"from":[12,12,4],"to":[13,13,5],"faces":{"north":{"uv":[8,6.875,8.125,7],"texture":"#0"},"east":{"uv":[7.875,6.875,8,7],"texture":"#0"},"south":{"uv":[8.25,6.875,8.375,7],"texture":"#0"},"west":{"uv":[8.125,6.875,8.25,7],"texture":"#0"},"up":{"uv":[8.125,6.875,8,6.75],"texture":"#0"},"down":{"uv":[8.25,6.75,8.125,6.875],"texture":"#0"}}},{"from":[3,12,4],"to":[4,13,5],"faces":{"north":{"uv":[8,6.5,8.125,6.625],"texture":"#0"},"east":{"uv":[7.875,6.5,8,6.625],"texture":"#0"},"south":{"uv":[8.25,6.5,8.375,6.625],"texture":"#0"},"west":{"uv":[8.125,6.5,8.25,6.625],"texture":"#0"},"up":{"uv":[8.125,6.5,8,6.375],"texture":"#0"},"down":{"uv":[8.25,6.375,8.125,6.5],"texture":"#0"}}}, - {"from":[4,12,3],"to":[5,13,4],"faces":{"north":{"uv":[8,6.125,8.125,6.25],"texture":"#0"},"east":{"uv":[7.875,6.125,8,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[8.125,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[8.125,6.125,8,6],"texture":"#0"},"down":{"uv":[8.25,6,8.125,6.125],"texture":"#0"}}},{"from":[4,12,12],"to":[5,13,13],"faces":{"north":{"uv":[8,5.75,8.125,5.875],"texture":"#0"},"east":{"uv":[7.875,5.75,8,5.875],"texture":"#0"},"south":{"uv":[8.25,5.75,8.375,5.875],"texture":"#0"},"west":{"uv":[8.125,5.75,8.25,5.875],"texture":"#0"},"up":{"uv":[8.125,5.75,8,5.625],"texture":"#0"},"down":{"uv":[8.25,5.625,8.125,5.75],"texture":"#0"}}}, - {"from":[3,12,11],"to":[4,13,12],"faces":{"north":{"uv":[8,5.375,8.125,5.5],"texture":"#0"},"east":{"uv":[7.875,5.375,8,5.5],"texture":"#0"},"south":{"uv":[8.25,5.375,8.375,5.5],"texture":"#0"},"west":{"uv":[8.125,5.375,8.25,5.5],"texture":"#0"},"up":{"uv":[8.125,5.375,8,5.25],"texture":"#0"},"down":{"uv":[8.25,5.25,8.125,5.375],"texture":"#0"}}},{"from":[2,12,5],"to":[3,13,11],"faces":{"north":{"uv":[5.25,3.375,5.375,3.5],"texture":"#0"},"east":{"uv":[4.5,3.375,5.25,3.5],"texture":"#0"},"south":{"uv":[6.125,3.375,6.25,3.5],"texture":"#0"},"west":{"uv":[5.375,3.375,6.125,3.5],"texture":"#0"},"up":{"uv":[5.375,3.375,5.25,2.625],"texture":"#0"},"down":{"uv":[5.5,2.625,5.375,3.375],"texture":"#0"}}}, - {"from":[5,12,13],"to":[11,13,14],"faces":{"north":{"uv":[5.625,0.125,6.375,0.25],"texture":"#0"},"east":{"uv":[5.5,0.125,5.625,0.25],"texture":"#0"},"south":{"uv":[6.5,0.125,7.25,0.25],"texture":"#0"},"west":{"uv":[6.375,0.125,6.5,0.25],"texture":"#0"},"up":{"uv":[6.375,0.125,5.625,0],"texture":"#0"},"down":{"uv":[7.125,0,6.375,0.125],"texture":"#0"}}},{"from":[2,4,6],"to":[3,12,7],"faces":{"north":{"uv":[7.5,0.125,7.625,1.125],"texture":"#0"},"east":{"uv":[7.375,0.125,7.5,1.125],"texture":"#0"},"south":{"uv":[7.75,0.125,7.875,1.125],"texture":"#0"},"west":{"uv":[7.625,0.125,7.75,1.125],"texture":"#0"},"up":{"uv":[7.625,0.125,7.5,0],"texture":"#0"},"down":{"uv":[7.75,0,7.625,0.125],"texture":"#0"}}}, - {"from":[9,4,2],"to":[10,12,3],"faces":{"north":{"uv":[7.375,7.125,7.5,8.125],"texture":"#0"},"east":{"uv":[7.25,7.125,7.375,8.125],"texture":"#0"},"south":{"uv":[7.625,7.125,7.75,8.125],"texture":"#0"},"west":{"uv":[7.5,7.125,7.625,8.125],"texture":"#0"},"up":{"uv":[7.5,7.125,7.375,7],"texture":"#0"},"down":{"uv":[7.625,7,7.5,7.125],"texture":"#0"}}},{"from":[6,4,2],"to":[7,12,3],"faces":{"north":{"uv":[7.375,5.875,7.5,6.875],"texture":"#0"},"east":{"uv":[7.25,5.875,7.375,6.875],"texture":"#0"},"south":{"uv":[7.625,5.875,7.75,6.875],"texture":"#0"},"west":{"uv":[7.5,5.875,7.625,6.875],"texture":"#0"},"up":{"uv":[7.5,5.875,7.375,5.75],"texture":"#0"},"down":{"uv":[7.625,5.75,7.5,5.875],"texture":"#0"}}}, - {"from":[6,4,13],"to":[7,12,14],"faces":{"north":{"uv":[7.375,4.625,7.5,5.625],"texture":"#0"},"east":{"uv":[7.25,4.625,7.375,5.625],"texture":"#0"},"south":{"uv":[7.625,4.625,7.75,5.625],"texture":"#0"},"west":{"uv":[7.5,4.625,7.625,5.625],"texture":"#0"},"up":{"uv":[7.5,4.625,7.375,4.5],"texture":"#0"},"down":{"uv":[7.625,4.5,7.5,4.625],"texture":"#0"}}},{"from":[9,4,13],"to":[10,12,14],"faces":{"north":{"uv":[5,7.125,5.125,8.125],"texture":"#0"},"east":{"uv":[4.875,7.125,5,8.125],"texture":"#0"},"south":{"uv":[5.25,7.125,5.375,8.125],"texture":"#0"},"west":{"uv":[5.125,7.125,5.25,8.125],"texture":"#0"},"up":{"uv":[5.125,7.125,5,7],"texture":"#0"},"down":{"uv":[5.25,7,5.125,7.125],"texture":"#0"}}}, - {"from":[2,4,9],"to":[3,12,10],"faces":{"north":{"uv":[4.375,7.125,4.5,8.125],"texture":"#0"},"east":{"uv":[4.25,7.125,4.375,8.125],"texture":"#0"},"south":{"uv":[4.625,7.125,4.75,8.125],"texture":"#0"},"west":{"uv":[4.5,7.125,4.625,8.125],"texture":"#0"},"up":{"uv":[4.5,7.125,4.375,7],"texture":"#0"},"down":{"uv":[4.625,7,4.5,7.125],"texture":"#0"}}},{"from":[13,11,9],"to":[14,12,10],"faces":{"north":{"uv":[8,5,8.125,5.125],"texture":"#0"},"east":{"uv":[7.875,5,8,5.125],"texture":"#0"},"south":{"uv":[8.25,5,8.375,5.125],"texture":"#0"},"west":{"uv":[8.125,5,8.25,5.125],"texture":"#0"},"up":{"uv":[8.125,5,8,4.875],"texture":"#0"},"down":{"uv":[8.25,4.875,8.125,5],"texture":"#0"}}}, - {"from":[13,11,6],"to":[14,12,7],"faces":{"north":{"uv":[1.25,7.875,1.375,8],"texture":"#0"},"east":{"uv":[1.125,7.875,1.25,8],"texture":"#0"},"south":{"uv":[1.5,7.875,1.625,8],"texture":"#0"},"west":{"uv":[1.375,7.875,1.5,8],"texture":"#0"},"up":{"uv":[1.375,7.875,1.25,7.75],"texture":"#0"},"down":{"uv":[1.5,7.75,1.375,7.875],"texture":"#0"}}},{"from":[13,4,6],"to":[14,5,7],"faces":{"north":{"uv":[7,1.25,7.125,1.375],"texture":"#0"},"east":{"uv":[6.875,1.25,7,1.375],"texture":"#0"},"south":{"uv":[7.25,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[7.125,1.25,7.25,1.375],"texture":"#0"},"up":{"uv":[7.125,1.25,7,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,7.125,1.25],"texture":"#0"}}}, - {"from":[13,4,9],"to":[14,5,10],"faces":{"north":{"uv":[5.875,2,6,2.125],"texture":"#0"},"east":{"uv":[5.75,2,5.875,2.125],"texture":"#0"},"south":{"uv":[6.125,2,6.25,2.125],"texture":"#0"},"west":{"uv":[6,2,6.125,2.125],"texture":"#0"},"up":{"uv":[6,2,5.875,1.875],"texture":"#0"},"down":{"uv":[6.125,1.875,6,2],"texture":"#0"}}} - ], - "groups":[ - { - "name":"fuelreprocessor", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"legs", - "origin":[8,8,8], - "color":0, - "children":[0,1,2,3,4,5,6,7] - },{ - "name":"supports", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"frontright", - "origin":[8,8,8], - "color":0, - "children":[8,9,10,11] - },{ - "name":"frontleft", - "origin":[8,8,8], - "color":0, - "children":[12,13,14,15] - },{ - "name":"backright", - "origin":[8,8,8], - "color":0, - "children":[16,17,18,19] - },{ - "name":"backleft", - "origin":[8,8,8], - "color":0, - "children":[20,21,22,23] - } - ] - } - ] - },{ - "name":"cyllinder", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"ports", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"liquid", - "origin":[8,8,8], - "color":0, - "children":[31,32] - },{ - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[33,34] - } - ] - },{ - "name":"heating coil", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"bottom", - "origin":[8,8,8], - "color":0, - "children":[35,36,37,38,39,40,41,42,43,44,45,46] - },{ - "name":"top", - "origin":[8,8,8], - "color":0, - "children":[47,48,49,50,51,52,53,54,55,56,57,58] - },{ - "name":"middle", - "origin":[8,8,8], - "color":0, - "children":[59,60,61,62,63,64,65,66,67,68] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoron.json b/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoron.json index cf26ef78..e8d66761 100644 --- a/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoron.json +++ b/src/main/resources/assets/nuclearscience/models/block/fuelreprocessoron.json @@ -1,138 +1,4953 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/fuelreprocessoron", - "particle":"nuclearscience:model/fuelreprocessoron" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/fuelreprocessoron", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[14,0,15],"to":[16,16,16],"faces":{"north":{"uv":[1,5.625,1.25,7.625],"texture":"#0"},"east":{"uv":[0.875,5.625,1,7.625],"texture":"#0"},"south":{"uv":[1.375,5.625,1.625,7.625],"texture":"#0"},"west":{"uv":[1.25,5.625,1.375,7.625],"texture":"#0"},"up":{"uv":[1.25,5.625,1,5.5],"texture":"#0"},"down":{"uv":[1.5,5.5,1.25,5.625],"texture":"#0"}}},{"from":[14,0,0],"to":[16,16,1],"faces":{"north":{"uv":[0.125,5.625,0.375,7.625],"texture":"#0"},"east":{"uv":[0,5.625,0.125,7.625],"texture":"#0"},"south":{"uv":[0.5,5.625,0.75,7.625],"texture":"#0"},"west":{"uv":[0.375,5.625,0.5,7.625],"texture":"#0"},"up":{"uv":[0.375,5.625,0.125,5.5],"texture":"#0"},"down":{"uv":[0.625,5.5,0.375,5.625],"texture":"#0"}}}, - {"from":[0,0,0],"to":[2,16,1],"faces":{"north":{"uv":[5.25,4.875,5.5,6.875],"texture":"#0"},"east":{"uv":[5.125,4.875,5.25,6.875],"texture":"#0"},"south":{"uv":[5.625,4.875,5.875,6.875],"texture":"#0"},"west":{"uv":[5.5,4.875,5.625,6.875],"texture":"#0"},"up":{"uv":[5.5,4.875,5.25,4.75],"texture":"#0"},"down":{"uv":[5.75,4.75,5.5,4.875],"texture":"#0"}}},{"from":[0,0,15],"to":[2,16,16],"faces":{"north":{"uv":[4.375,4.875,4.625,6.875],"texture":"#0"},"east":{"uv":[4.25,4.875,4.375,6.875],"texture":"#0"},"south":{"uv":[4.75,4.875,5,6.875],"texture":"#0"},"west":{"uv":[4.625,4.875,4.75,6.875],"texture":"#0"},"up":{"uv":[4.625,4.875,4.375,4.75],"texture":"#0"},"down":{"uv":[4.875,4.75,4.625,4.875],"texture":"#0"}}}, - {"from":[0,0,14],"to":[1,16,15],"faces":{"north":{"uv":[3.125,6.75,3.25,8.75],"texture":"#0"},"east":{"uv":[3,6.75,3.125,8.75],"texture":"#0"},"south":{"uv":[3.375,6.75,3.5,8.75],"texture":"#0"},"west":{"uv":[3.25,6.75,3.375,8.75],"texture":"#0"},"up":{"uv":[3.25,6.75,3.125,6.625],"texture":"#0"},"down":{"uv":[3.375,6.625,3.25,6.75],"texture":"#0"}}},{"from":[0,0,1],"to":[1,16,2],"faces":{"north":{"uv":[2.5,6.75,2.625,8.75],"texture":"#0"},"east":{"uv":[2.375,6.75,2.5,8.75],"texture":"#0"},"south":{"uv":[2.75,6.75,2.875,8.75],"texture":"#0"},"west":{"uv":[2.625,6.75,2.75,8.75],"texture":"#0"},"up":{"uv":[2.625,6.75,2.5,6.625],"texture":"#0"},"down":{"uv":[2.75,6.625,2.625,6.75],"texture":"#0"}}}, - {"from":[15,0,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,6.75,2,8.75],"texture":"#0"},"east":{"uv":[1.75,6.75,1.875,8.75],"texture":"#0"},"south":{"uv":[2.125,6.75,2.25,8.75],"texture":"#0"},"west":{"uv":[2,6.75,2.125,8.75],"texture":"#0"},"up":{"uv":[2,6.75,1.875,6.625],"texture":"#0"},"down":{"uv":[2.125,6.625,2,6.75],"texture":"#0"}}},{"from":[15,0,14],"to":[16,16,15],"faces":{"north":{"uv":[6.125,4.75,6.25,6.75],"texture":"#0"},"east":{"uv":[6,4.75,6.125,6.75],"texture":"#0"},"south":{"uv":[6.375,4.75,6.5,6.75],"texture":"#0"},"west":{"uv":[6.25,4.75,6.375,6.75],"texture":"#0"},"up":{"uv":[6.25,4.75,6.125,4.625],"texture":"#0"},"down":{"uv":[6.375,4.625,6.25,4.75],"texture":"#0"}}}, - {"from":[1,7,13],"to":[3,9,15],"faces":{"north":{"uv":[8.125,4.5,8.375,4.75],"texture":"#0"},"east":{"uv":[7.875,4.5,8.125,4.75],"texture":"#0"},"south":{"uv":[8.625,4.5,8.875,4.75],"texture":"#0"},"west":{"uv":[8.375,4.5,8.625,4.75],"texture":"#0"},"up":{"uv":[8.375,4.5,8.125,4.25],"texture":"#0"},"down":{"uv":[8.625,4.25,8.375,4.5],"texture":"#0"}}},{"from":[2,7,12],"to":[4,9,14],"faces":{"north":{"uv":[8,3.875,8.25,4.125],"texture":"#0"},"east":{"uv":[7.75,3.875,8,4.125],"texture":"#0"},"south":{"uv":[8.5,3.875,8.75,4.125],"texture":"#0"},"west":{"uv":[8.25,3.875,8.5,4.125],"texture":"#0"},"up":{"uv":[8.25,3.875,8,3.625],"texture":"#0"},"down":{"uv":[8.5,3.625,8.25,3.875],"texture":"#0"}}}, - {"from":[3,7,11],"to":[4,9,12],"faces":{"north":{"uv":[5.625,3.75,5.75,4],"texture":"#0"},"east":{"uv":[5.5,3.75,5.625,4],"texture":"#0"},"south":{"uv":[5.875,3.75,6,4],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4],"texture":"#0"},"up":{"uv":[5.75,3.75,5.625,3.625],"texture":"#0"},"down":{"uv":[5.875,3.625,5.75,3.75],"texture":"#0"}}},{"from":[4,7,12],"to":[5,9,13],"faces":{"north":{"uv":[4.625,2.75,4.75,3],"texture":"#0"},"east":{"uv":[4.5,2.75,4.625,3],"texture":"#0"},"south":{"uv":[4.875,2.75,5,3],"texture":"#0"},"west":{"uv":[4.75,2.75,4.875,3],"texture":"#0"},"up":{"uv":[4.75,2.75,4.625,2.625],"texture":"#0"},"down":{"uv":[4.875,2.625,4.75,2.75],"texture":"#0"}}}, - {"from":[1,7,1],"to":[3,9,3],"faces":{"north":{"uv":[0.25,8,0.5,8.25],"texture":"#0"},"east":{"uv":[0,8,0.25,8.25],"texture":"#0"},"south":{"uv":[0.75,8,1,8.25],"texture":"#0"},"west":{"uv":[0.5,8,0.75,8.25],"texture":"#0"},"up":{"uv":[0.5,8,0.25,7.75],"texture":"#0"},"down":{"uv":[0.75,7.75,0.5,8],"texture":"#0"}}},{"from":[2,7,2],"to":[4,9,4],"faces":{"north":{"uv":[7.875,1.5,8.125,1.75],"texture":"#0"},"east":{"uv":[7.625,1.5,7.875,1.75],"texture":"#0"},"south":{"uv":[8.375,1.5,8.625,1.75],"texture":"#0"},"west":{"uv":[8.125,1.5,8.375,1.75],"texture":"#0"},"up":{"uv":[8.125,1.5,7.875,1.25],"texture":"#0"},"down":{"uv":[8.375,1.25,8.125,1.5],"texture":"#0"}}}, - {"from":[4,7,3],"to":[5,9,4],"faces":{"north":{"uv":[2.25,4.25,2.375,4.5],"texture":"#0"},"east":{"uv":[2.125,4.25,2.25,4.5],"texture":"#0"},"south":{"uv":[2.5,4.25,2.625,4.5],"texture":"#0"},"west":{"uv":[2.375,4.25,2.5,4.5],"texture":"#0"},"up":{"uv":[2.375,4.25,2.25,4.125],"texture":"#0"},"down":{"uv":[2.5,4.125,2.375,4.25],"texture":"#0"}}},{"from":[3,7,4],"to":[4,9,5],"faces":{"north":{"uv":[2.25,3.75,2.375,4],"texture":"#0"},"east":{"uv":[2.125,3.75,2.25,4],"texture":"#0"},"south":{"uv":[2.5,3.75,2.625,4],"texture":"#0"},"west":{"uv":[2.375,3.75,2.5,4],"texture":"#0"},"up":{"uv":[2.375,3.75,2.25,3.625],"texture":"#0"},"down":{"uv":[2.5,3.625,2.375,3.75],"texture":"#0"}}}, - {"from":[13,7,13],"to":[15,9,15],"faces":{"north":{"uv":[7.75,2.875,8,3.125],"texture":"#0"},"east":{"uv":[7.5,2.875,7.75,3.125],"texture":"#0"},"south":{"uv":[8.25,2.875,8.5,3.125],"texture":"#0"},"west":{"uv":[8,2.875,8.25,3.125],"texture":"#0"},"up":{"uv":[8,2.875,7.75,2.625],"texture":"#0"},"down":{"uv":[8.25,2.625,8,2.875],"texture":"#0"}}},{"from":[12,7,12],"to":[14,9,14],"faces":{"north":{"uv":[7.125,2.125,7.375,2.375],"texture":"#0"},"east":{"uv":[6.875,2.125,7.125,2.375],"texture":"#0"},"south":{"uv":[7.625,2.125,7.875,2.375],"texture":"#0"},"west":{"uv":[7.375,2.125,7.625,2.375],"texture":"#0"},"up":{"uv":[7.375,2.125,7.125,1.875],"texture":"#0"},"down":{"uv":[7.625,1.875,7.375,2.125],"texture":"#0"}}}, - {"from":[12,7,11],"to":[13,9,12],"faces":{"north":{"uv":[3.25,2.75,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.75,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.75,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.75,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.75,3.25,2.625],"texture":"#0"},"down":{"uv":[3.5,2.625,3.375,2.75],"texture":"#0"}}},{"from":[11,7,12],"to":[12,9,13],"faces":{"north":{"uv":[0.125,3,0.25,3.25],"texture":"#0"},"east":{"uv":[0,3,0.125,3.25],"texture":"#0"},"south":{"uv":[0.375,3,0.5,3.25],"texture":"#0"},"west":{"uv":[0.25,3,0.375,3.25],"texture":"#0"},"up":{"uv":[0.25,3,0.125,2.875],"texture":"#0"},"down":{"uv":[0.375,2.875,0.25,3],"texture":"#0"}}}, - {"from":[13,7,1],"to":[15,9,3],"faces":{"north":{"uv":[6.875,3.875,7.125,4.125],"texture":"#0"},"east":{"uv":[6.625,3.875,6.875,4.125],"texture":"#0"},"south":{"uv":[7.375,3.875,7.625,4.125],"texture":"#0"},"west":{"uv":[7.125,3.875,7.375,4.125],"texture":"#0"},"up":{"uv":[7.125,3.875,6.875,3.625],"texture":"#0"},"down":{"uv":[7.375,3.625,7.125,3.875],"texture":"#0"}}},{"from":[12,7,2],"to":[14,9,4],"faces":{"north":{"uv":[3.625,0.25,3.875,0.5],"texture":"#0"},"east":{"uv":[3.375,0.25,3.625,0.5],"texture":"#0"},"south":{"uv":[4.125,0.25,4.375,0.5],"texture":"#0"},"west":{"uv":[3.875,0.25,4.125,0.5],"texture":"#0"},"up":{"uv":[3.875,0.25,3.625,0],"texture":"#0"},"down":{"uv":[4.125,0,3.875,0.25],"texture":"#0"}}}, - {"from":[11,7,3],"to":[12,9,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.75],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.75],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.75],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.75],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[12,7,4],"to":[13,9,5],"faces":{"north":{"uv":[0.125,0.125,0.25,0.375],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.375],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.375],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.375],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}}, - {"from":[3,2,5],"to":[13,14,11],"faces":{"north":{"uv":[0.75,0.75,2,2.25],"texture":"#0"},"east":{"uv":[0,0.75,0.75,2.25],"texture":"#0"},"south":{"uv":[2.75,0.75,4,2.25],"texture":"#0"},"west":{"uv":[2,0.75,2.75,2.25],"texture":"#0"},"up":{"uv":[2,0.75,0.75,0],"texture":"#0"},"down":{"uv":[3.25,0,2,0.75],"texture":"#0"}}},{"from":[4,2,11],"to":[5,14,12],"faces":{"north":{"uv":[6,7,6.125,8.5],"texture":"#0"},"east":{"uv":[5.875,7,6,8.5],"texture":"#0"},"south":{"uv":[6.25,7,6.375,8.5],"texture":"#0"},"west":{"uv":[6.125,7,6.25,8.5],"texture":"#0"},"up":{"uv":[6.125,7,6,6.875],"texture":"#0"},"down":{"uv":[6.25,6.875,6.125,7],"texture":"#0"}}}, - {"from":[4,2,4],"to":[5,14,5],"faces":{"north":{"uv":[6.75,6.5,6.875,8],"texture":"#0"},"east":{"uv":[6.625,6.5,6.75,8],"texture":"#0"},"south":{"uv":[7,6.5,7.125,8],"texture":"#0"},"west":{"uv":[6.875,6.5,7,8],"texture":"#0"},"up":{"uv":[6.875,6.5,6.75,6.375],"texture":"#0"},"down":{"uv":[7,6.375,6.875,6.5],"texture":"#0"}}},{"from":[11,2,4],"to":[12,14,5],"faces":{"north":{"uv":[6.75,4.75,6.875,6.25],"texture":"#0"},"east":{"uv":[6.625,4.75,6.75,6.25],"texture":"#0"},"south":{"uv":[7,4.75,7.125,6.25],"texture":"#0"},"west":{"uv":[6.875,4.75,7,6.25],"texture":"#0"},"up":{"uv":[6.875,4.75,6.75,4.625],"texture":"#0"},"down":{"uv":[7,4.625,6.875,4.75],"texture":"#0"}}}, - {"from":[11,2,11],"to":[12,14,12],"faces":{"north":{"uv":[3.75,6.75,3.875,8.25],"texture":"#0"},"east":{"uv":[3.625,6.75,3.75,8.25],"texture":"#0"},"south":{"uv":[4,6.75,4.125,8.25],"texture":"#0"},"west":{"uv":[3.875,6.75,4,8.25],"texture":"#0"},"up":{"uv":[3.875,6.75,3.75,6.625],"texture":"#0"},"down":{"uv":[4,6.625,3.875,6.75],"texture":"#0"}}},{"from":[5,2,11],"to":[11,14,13],"faces":{"north":{"uv":[2.375,5,3.125,6.5],"texture":"#0"},"east":{"uv":[2.125,5,2.375,6.5],"texture":"#0"},"south":{"uv":[3.375,5,4.125,6.5],"texture":"#0"},"west":{"uv":[3.125,5,3.375,6.5],"texture":"#0"},"up":{"uv":[3.125,5,2.375,4.75],"texture":"#0"},"down":{"uv":[3.875,4.75,3.125,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[11,14,5],"faces":{"north":{"uv":[0.25,3.875,1,5.375],"texture":"#0"},"east":{"uv":[0,3.875,0.25,5.375],"texture":"#0"},"south":{"uv":[1.25,3.875,2,5.375],"texture":"#0"},"west":{"uv":[1,3.875,1.25,5.375],"texture":"#0"},"up":{"uv":[1,3.875,0.25,3.625],"texture":"#0"},"down":{"uv":[1.75,3.625,1,3.875],"texture":"#0"}}},{"from":[4,15,4],"to":[12,16,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}}, - {"from":[5,14,5],"to":[11,15,11],"faces":{"north":{"uv":[4.125,2.375,4.875,2.5],"texture":"#0"},"east":{"uv":[3.375,2.375,4.125,2.5],"texture":"#0"},"south":{"uv":[5.625,2.375,6.375,2.5],"texture":"#0"},"west":{"uv":[4.875,2.375,5.625,2.5],"texture":"#0"},"up":{"uv":[4.875,2.375,4.125,1.625],"texture":"#0"},"down":{"uv":[5.625,1.625,4.875,2.375],"texture":"#0"}}},{"from":[15,4,4],"to":[16,12,12],"faces":{"north":{"uv":[4.125,3.625,4.25,4.625],"texture":"#0"},"east":{"uv":[3.125,3.625,4.125,4.625],"texture":"#0"},"south":{"uv":[5.25,3.625,5.375,4.625],"texture":"#0"},"west":{"uv":[4.25,3.625,5.25,4.625],"texture":"#0"},"up":{"uv":[4.25,3.625,4.125,2.625],"texture":"#0"},"down":{"uv":[4.375,2.625,4.25,3.625],"texture":"#0"}}}, - {"from":[13,5,5],"to":[15,11,11],"faces":{"north":{"uv":[4.875,0.75,5.125,1.5],"texture":"#0"},"east":{"uv":[4.125,0.75,4.875,1.5],"texture":"#0"},"south":{"uv":[5.875,0.75,6.125,1.5],"texture":"#0"},"west":{"uv":[5.125,0.75,5.875,1.5],"texture":"#0"},"up":{"uv":[5.125,0.75,4.875,0],"texture":"#0"},"down":{"uv":[5.375,0,5.125,0.75],"texture":"#0"}}},{"from":[5,3,2],"to":[11,4,3],"faces":{"north":{"uv":[6.5,3.375,7.25,3.5],"texture":"#0"},"east":{"uv":[6.375,3.375,6.5,3.5],"texture":"#0"},"south":{"uv":[7.375,3.375,8.125,3.5],"texture":"#0"},"west":{"uv":[7.25,3.375,7.375,3.5],"texture":"#0"},"up":{"uv":[7.25,3.375,6.5,3.25],"texture":"#0"},"down":{"uv":[8,3.25,7.25,3.375],"texture":"#0"}}}, - {"from":[13,3,5],"to":[14,4,11],"faces":{"north":{"uv":[6.5,2.625,6.625,2.75],"texture":"#0"},"east":{"uv":[5.75,2.625,6.5,2.75],"texture":"#0"},"south":{"uv":[7.375,2.625,7.5,2.75],"texture":"#0"},"west":{"uv":[6.625,2.625,7.375,2.75],"texture":"#0"},"up":{"uv":[6.625,2.625,6.5,1.875],"texture":"#0"},"down":{"uv":[6.75,1.875,6.625,2.625],"texture":"#0"}}},{"from":[12,3,11],"to":[13,4,12],"faces":{"north":{"uv":[8.375,3.375,8.5,3.5],"texture":"#0"},"east":{"uv":[8.25,3.375,8.375,3.5],"texture":"#0"},"south":{"uv":[8.625,3.375,8.75,3.5],"texture":"#0"},"west":{"uv":[8.5,3.375,8.625,3.5],"texture":"#0"},"up":{"uv":[8.5,3.375,8.375,3.25],"texture":"#0"},"down":{"uv":[8.625,3.25,8.5,3.375],"texture":"#0"}}}, - {"from":[11,3,12],"to":[12,4,13],"faces":{"north":{"uv":[6.625,8.25,6.75,8.375],"texture":"#0"},"east":{"uv":[6.5,8.25,6.625,8.375],"texture":"#0"},"south":{"uv":[6.875,8.25,7,8.375],"texture":"#0"},"west":{"uv":[6.75,8.25,6.875,8.375],"texture":"#0"},"up":{"uv":[6.75,8.25,6.625,8.125],"texture":"#0"},"down":{"uv":[6.875,8.125,6.75,8.25],"texture":"#0"}}},{"from":[11,3,3],"to":[12,4,4],"faces":{"north":{"uv":[1.25,8.25,1.375,8.375],"texture":"#0"},"east":{"uv":[1.125,8.25,1.25,8.375],"texture":"#0"},"south":{"uv":[1.5,8.25,1.625,8.375],"texture":"#0"},"west":{"uv":[1.375,8.25,1.5,8.375],"texture":"#0"},"up":{"uv":[1.375,8.25,1.25,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.375,8.25],"texture":"#0"}}}, - {"from":[12,3,4],"to":[13,4,5],"faces":{"north":{"uv":[8.125,2.375,8.25,2.5],"texture":"#0"},"east":{"uv":[8,2.375,8.125,2.5],"texture":"#0"},"south":{"uv":[8.375,2.375,8.5,2.5],"texture":"#0"},"west":{"uv":[8.25,2.375,8.375,2.5],"texture":"#0"},"up":{"uv":[8.25,2.375,8.125,2.25],"texture":"#0"},"down":{"uv":[8.375,2.25,8.25,2.375],"texture":"#0"}}},{"from":[3,3,4],"to":[4,4,5],"faces":{"north":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"east":{"uv":[8,2,8.125,2.125],"texture":"#0"},"south":{"uv":[8.375,2,8.5,2.125],"texture":"#0"},"west":{"uv":[8.25,2,8.375,2.125],"texture":"#0"},"up":{"uv":[8.25,2,8.125,1.875],"texture":"#0"},"down":{"uv":[8.375,1.875,8.25,2],"texture":"#0"}}}, - {"from":[4,3,3],"to":[5,4,4],"faces":{"north":{"uv":[8.125,0.875,8.25,1],"texture":"#0"},"east":{"uv":[8,0.875,8.125,1],"texture":"#0"},"south":{"uv":[8.375,0.875,8.5,1],"texture":"#0"},"west":{"uv":[8.25,0.875,8.375,1],"texture":"#0"},"up":{"uv":[8.25,0.875,8.125,0.75],"texture":"#0"},"down":{"uv":[8.375,0.75,8.25,0.875],"texture":"#0"}}},{"from":[4,3,12],"to":[5,4,13],"faces":{"north":{"uv":[8.125,0.5,8.25,0.625],"texture":"#0"},"east":{"uv":[8,0.5,8.125,0.625],"texture":"#0"},"south":{"uv":[8.375,0.5,8.5,0.625],"texture":"#0"},"west":{"uv":[8.25,0.5,8.375,0.625],"texture":"#0"},"up":{"uv":[8.25,0.5,8.125,0.375],"texture":"#0"},"down":{"uv":[8.375,0.375,8.25,0.5],"texture":"#0"}}}, - {"from":[3,3,11],"to":[4,4,12],"faces":{"north":{"uv":[8.125,0.125,8.25,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[8.375,0.125,8.5,0.25],"texture":"#0"},"west":{"uv":[8.25,0.125,8.375,0.25],"texture":"#0"},"up":{"uv":[8.25,0.125,8.125,0],"texture":"#0"},"down":{"uv":[8.375,0,8.25,0.125],"texture":"#0"}}},{"from":[2,3,5],"to":[3,4,11],"faces":{"north":{"uv":[6.5,1.625,6.625,1.75],"texture":"#0"},"east":{"uv":[5.75,1.625,6.5,1.75],"texture":"#0"},"south":{"uv":[7.375,1.625,7.5,1.75],"texture":"#0"},"west":{"uv":[6.625,1.625,7.375,1.75],"texture":"#0"},"up":{"uv":[6.625,1.625,6.5,0.875],"texture":"#0"},"down":{"uv":[6.75,0.875,6.625,1.625],"texture":"#0"}}}, - {"from":[5,3,13],"to":[11,4,14],"faces":{"north":{"uv":[5.75,3,6.5,3.125],"texture":"#0"},"east":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"south":{"uv":[6.625,3,7.375,3.125],"texture":"#0"},"west":{"uv":[6.5,3,6.625,3.125],"texture":"#0"},"up":{"uv":[6.5,3,5.75,2.875],"texture":"#0"},"down":{"uv":[7.25,2.875,6.5,3],"texture":"#0"}}},{"from":[5,12,2],"to":[11,13,3],"faces":{"north":{"uv":[5.625,0.5,6.375,0.625],"texture":"#0"},"east":{"uv":[5.5,0.5,5.625,0.625],"texture":"#0"},"south":{"uv":[6.5,0.5,7.25,0.625],"texture":"#0"},"west":{"uv":[6.375,0.5,6.5,0.625],"texture":"#0"},"up":{"uv":[6.375,0.5,5.625,0.375],"texture":"#0"},"down":{"uv":[7.125,0.375,6.375,0.5],"texture":"#0"}}}, - {"from":[13,12,5],"to":[14,13,11],"faces":{"north":{"uv":[6.25,4.375,6.375,4.5],"texture":"#0"},"east":{"uv":[5.5,4.375,6.25,4.5],"texture":"#0"},"south":{"uv":[7.125,4.375,7.25,4.5],"texture":"#0"},"west":{"uv":[6.375,4.375,7.125,4.5],"texture":"#0"},"up":{"uv":[6.375,4.375,6.25,3.625],"texture":"#0"},"down":{"uv":[6.5,3.625,6.375,4.375],"texture":"#0"}}},{"from":[12,12,11],"to":[13,13,12],"faces":{"north":{"uv":[8,8,8.125,8.125],"texture":"#0"},"east":{"uv":[7.875,8,8,8.125],"texture":"#0"},"south":{"uv":[8.25,8,8.375,8.125],"texture":"#0"},"west":{"uv":[8.125,8,8.25,8.125],"texture":"#0"},"up":{"uv":[8.125,8,8,7.875],"texture":"#0"},"down":{"uv":[8.25,7.875,8.125,8],"texture":"#0"}}}, - {"from":[11,12,12],"to":[12,13,13],"faces":{"north":{"uv":[8,7.625,8.125,7.75],"texture":"#0"},"east":{"uv":[7.875,7.625,8,7.75],"texture":"#0"},"south":{"uv":[8.25,7.625,8.375,7.75],"texture":"#0"},"west":{"uv":[8.125,7.625,8.25,7.75],"texture":"#0"},"up":{"uv":[8.125,7.625,8,7.5],"texture":"#0"},"down":{"uv":[8.25,7.5,8.125,7.625],"texture":"#0"}}},{"from":[11,12,3],"to":[12,13,4],"faces":{"north":{"uv":[8,7.25,8.125,7.375],"texture":"#0"},"east":{"uv":[7.875,7.25,8,7.375],"texture":"#0"},"south":{"uv":[8.25,7.25,8.375,7.375],"texture":"#0"},"west":{"uv":[8.125,7.25,8.25,7.375],"texture":"#0"},"up":{"uv":[8.125,7.25,8,7.125],"texture":"#0"},"down":{"uv":[8.25,7.125,8.125,7.25],"texture":"#0"}}}, - {"from":[12,12,4],"to":[13,13,5],"faces":{"north":{"uv":[8,6.875,8.125,7],"texture":"#0"},"east":{"uv":[7.875,6.875,8,7],"texture":"#0"},"south":{"uv":[8.25,6.875,8.375,7],"texture":"#0"},"west":{"uv":[8.125,6.875,8.25,7],"texture":"#0"},"up":{"uv":[8.125,6.875,8,6.75],"texture":"#0"},"down":{"uv":[8.25,6.75,8.125,6.875],"texture":"#0"}}},{"from":[3,12,4],"to":[4,13,5],"faces":{"north":{"uv":[8,6.5,8.125,6.625],"texture":"#0"},"east":{"uv":[7.875,6.5,8,6.625],"texture":"#0"},"south":{"uv":[8.25,6.5,8.375,6.625],"texture":"#0"},"west":{"uv":[8.125,6.5,8.25,6.625],"texture":"#0"},"up":{"uv":[8.125,6.5,8,6.375],"texture":"#0"},"down":{"uv":[8.25,6.375,8.125,6.5],"texture":"#0"}}}, - {"from":[4,12,3],"to":[5,13,4],"faces":{"north":{"uv":[8,6.125,8.125,6.25],"texture":"#0"},"east":{"uv":[7.875,6.125,8,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[8.125,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[8.125,6.125,8,6],"texture":"#0"},"down":{"uv":[8.25,6,8.125,6.125],"texture":"#0"}}},{"from":[4,12,12],"to":[5,13,13],"faces":{"north":{"uv":[8,5.75,8.125,5.875],"texture":"#0"},"east":{"uv":[7.875,5.75,8,5.875],"texture":"#0"},"south":{"uv":[8.25,5.75,8.375,5.875],"texture":"#0"},"west":{"uv":[8.125,5.75,8.25,5.875],"texture":"#0"},"up":{"uv":[8.125,5.75,8,5.625],"texture":"#0"},"down":{"uv":[8.25,5.625,8.125,5.75],"texture":"#0"}}}, - {"from":[3,12,11],"to":[4,13,12],"faces":{"north":{"uv":[8,5.375,8.125,5.5],"texture":"#0"},"east":{"uv":[7.875,5.375,8,5.5],"texture":"#0"},"south":{"uv":[8.25,5.375,8.375,5.5],"texture":"#0"},"west":{"uv":[8.125,5.375,8.25,5.5],"texture":"#0"},"up":{"uv":[8.125,5.375,8,5.25],"texture":"#0"},"down":{"uv":[8.25,5.25,8.125,5.375],"texture":"#0"}}},{"from":[2,12,5],"to":[3,13,11],"faces":{"north":{"uv":[5.25,3.375,5.375,3.5],"texture":"#0"},"east":{"uv":[4.5,3.375,5.25,3.5],"texture":"#0"},"south":{"uv":[6.125,3.375,6.25,3.5],"texture":"#0"},"west":{"uv":[5.375,3.375,6.125,3.5],"texture":"#0"},"up":{"uv":[5.375,3.375,5.25,2.625],"texture":"#0"},"down":{"uv":[5.5,2.625,5.375,3.375],"texture":"#0"}}}, - {"from":[5,12,13],"to":[11,13,14],"faces":{"north":{"uv":[5.625,0.125,6.375,0.25],"texture":"#0"},"east":{"uv":[5.5,0.125,5.625,0.25],"texture":"#0"},"south":{"uv":[6.5,0.125,7.25,0.25],"texture":"#0"},"west":{"uv":[6.375,0.125,6.5,0.25],"texture":"#0"},"up":{"uv":[6.375,0.125,5.625,0],"texture":"#0"},"down":{"uv":[7.125,0,6.375,0.125],"texture":"#0"}}},{"from":[2,4,6],"to":[3,12,7],"faces":{"north":{"uv":[7.5,0.125,7.625,1.125],"texture":"#0"},"east":{"uv":[7.375,0.125,7.5,1.125],"texture":"#0"},"south":{"uv":[7.75,0.125,7.875,1.125],"texture":"#0"},"west":{"uv":[7.625,0.125,7.75,1.125],"texture":"#0"},"up":{"uv":[7.625,0.125,7.5,0],"texture":"#0"},"down":{"uv":[7.75,0,7.625,0.125],"texture":"#0"}}}, - {"from":[9,4,2],"to":[10,12,3],"faces":{"north":{"uv":[7.375,7.125,7.5,8.125],"texture":"#0"},"east":{"uv":[7.25,7.125,7.375,8.125],"texture":"#0"},"south":{"uv":[7.625,7.125,7.75,8.125],"texture":"#0"},"west":{"uv":[7.5,7.125,7.625,8.125],"texture":"#0"},"up":{"uv":[7.5,7.125,7.375,7],"texture":"#0"},"down":{"uv":[7.625,7,7.5,7.125],"texture":"#0"}}},{"from":[6,4,2],"to":[7,12,3],"faces":{"north":{"uv":[7.375,5.875,7.5,6.875],"texture":"#0"},"east":{"uv":[7.25,5.875,7.375,6.875],"texture":"#0"},"south":{"uv":[7.625,5.875,7.75,6.875],"texture":"#0"},"west":{"uv":[7.5,5.875,7.625,6.875],"texture":"#0"},"up":{"uv":[7.5,5.875,7.375,5.75],"texture":"#0"},"down":{"uv":[7.625,5.75,7.5,5.875],"texture":"#0"}}}, - {"from":[6,4,13],"to":[7,12,14],"faces":{"north":{"uv":[7.375,4.625,7.5,5.625],"texture":"#0"},"east":{"uv":[7.25,4.625,7.375,5.625],"texture":"#0"},"south":{"uv":[7.625,4.625,7.75,5.625],"texture":"#0"},"west":{"uv":[7.5,4.625,7.625,5.625],"texture":"#0"},"up":{"uv":[7.5,4.625,7.375,4.5],"texture":"#0"},"down":{"uv":[7.625,4.5,7.5,4.625],"texture":"#0"}}},{"from":[9,4,13],"to":[10,12,14],"faces":{"north":{"uv":[5,7.125,5.125,8.125],"texture":"#0"},"east":{"uv":[4.875,7.125,5,8.125],"texture":"#0"},"south":{"uv":[5.25,7.125,5.375,8.125],"texture":"#0"},"west":{"uv":[5.125,7.125,5.25,8.125],"texture":"#0"},"up":{"uv":[5.125,7.125,5,7],"texture":"#0"},"down":{"uv":[5.25,7,5.125,7.125],"texture":"#0"}}}, - {"from":[2,4,9],"to":[3,12,10],"faces":{"north":{"uv":[4.375,7.125,4.5,8.125],"texture":"#0"},"east":{"uv":[4.25,7.125,4.375,8.125],"texture":"#0"},"south":{"uv":[4.625,7.125,4.75,8.125],"texture":"#0"},"west":{"uv":[4.5,7.125,4.625,8.125],"texture":"#0"},"up":{"uv":[4.5,7.125,4.375,7],"texture":"#0"},"down":{"uv":[4.625,7,4.5,7.125],"texture":"#0"}}},{"from":[13,11,9],"to":[14,12,10],"faces":{"north":{"uv":[8,5,8.125,5.125],"texture":"#0"},"east":{"uv":[7.875,5,8,5.125],"texture":"#0"},"south":{"uv":[8.25,5,8.375,5.125],"texture":"#0"},"west":{"uv":[8.125,5,8.25,5.125],"texture":"#0"},"up":{"uv":[8.125,5,8,4.875],"texture":"#0"},"down":{"uv":[8.25,4.875,8.125,5],"texture":"#0"}}}, - {"from":[13,11,6],"to":[14,12,7],"faces":{"north":{"uv":[1.25,7.875,1.375,8],"texture":"#0"},"east":{"uv":[1.125,7.875,1.25,8],"texture":"#0"},"south":{"uv":[1.5,7.875,1.625,8],"texture":"#0"},"west":{"uv":[1.375,7.875,1.5,8],"texture":"#0"},"up":{"uv":[1.375,7.875,1.25,7.75],"texture":"#0"},"down":{"uv":[1.5,7.75,1.375,7.875],"texture":"#0"}}},{"from":[13,4,6],"to":[14,5,7],"faces":{"north":{"uv":[7,1.25,7.125,1.375],"texture":"#0"},"east":{"uv":[6.875,1.25,7,1.375],"texture":"#0"},"south":{"uv":[7.25,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[7.125,1.25,7.25,1.375],"texture":"#0"},"up":{"uv":[7.125,1.25,7,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,7.125,1.25],"texture":"#0"}}}, - {"from":[13,4,9],"to":[14,5,10],"faces":{"north":{"uv":[5.875,2,6,2.125],"texture":"#0"},"east":{"uv":[5.75,2,5.875,2.125],"texture":"#0"},"south":{"uv":[6.125,2,6.25,2.125],"texture":"#0"},"west":{"uv":[6,2,6.125,2.125],"texture":"#0"},"up":{"uv":[6,2,5.875,1.875],"texture":"#0"},"down":{"uv":[6.125,1.875,6,2],"texture":"#0"}}} + "elements": [ + { + "from": [ + 14, + 0, + 15 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.625, + 1.25, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 5.625, + 1, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 5.625, + 1.625, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 5.625, + 1.375, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 5.625, + 1, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 5.5, + 1.25, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 0, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.625, + 0.375, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.625, + 0.125, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 5.625, + 0.75, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 5.625, + 0.5, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 5.625, + 0.125, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 5.5, + 0.375, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 2, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 4.875, + 5.5, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 4.875, + 5.25, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 4.875, + 5.875, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 4.875, + 5.625, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 4.875, + 5.25, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.75, + 4.75, + 5.5, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 15 + ], + "to": [ + 2, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 4.875, + 4.625, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 4.875, + 4.375, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 4.875, + 5, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.625, + 4.875, + 4.75, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.625, + 4.875, + 4.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 4.75, + 4.625, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 14 + ], + "to": [ + 1, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 3.125, + 6.75, + 3.25, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3, + 6.75, + 3.125, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 6.75, + 3.5, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 6.75, + 3.375, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.25, + 6.75, + 3.125, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.375, + 6.625, + 3.25, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 0, + 1 + ], + "to": [ + 1, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 2.5, + 6.75, + 2.625, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 6.75, + 2.5, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 6.75, + 2.875, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 6.75, + 2.75, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.625, + 6.75, + 2.5, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 6.625, + 2.625, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 0, + 1 + ], + "to": [ + 16, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 6.75, + 2, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 6.75, + 1.875, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 6.75, + 2.25, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 6.75, + 2.125, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 6.75, + 1.875, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.125, + 6.625, + 2, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 0, + 14 + ], + "to": [ + 16, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 6.125, + 4.75, + 6.25, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 4.75, + 6.125, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.375, + 4.75, + 6.5, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.25, + 4.75, + 6.375, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.25, + 4.75, + 6.125, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.375, + 4.625, + 6.25, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 7, + 13 + ], + "to": [ + 3, + 9, + 15 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 4.5, + 8.375, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 4.5, + 8.125, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.625, + 4.5, + 8.875, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 4.5, + 8.625, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 4.5, + 8.125, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 4.25, + 8.375, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 7, + 12 + ], + "to": [ + 4, + 9, + 14 + ], + "faces": { + "north": { + "uv": [ + 8, + 3.875, + 8.25, + 4.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 3.875, + 8, + 4.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 3.875, + 8.75, + 4.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 3.875, + 8.5, + 4.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 3.875, + 8, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 3.625, + 8.25, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 7, + 11 + ], + "to": [ + 4, + 9, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3.75, + 5.75, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 3.75, + 5.625, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 3.75, + 6, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.75, + 5.875, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.75, + 5.625, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 3.625, + 5.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 7, + 12 + ], + "to": [ + 5, + 9, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 2.75, + 4.75, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 2.75, + 4.625, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 2.75, + 5, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 2.75, + 4.875, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 2.75, + 4.625, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 2.625, + 4.75, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 7, + 1 + ], + "to": [ + 3, + 9, + 3 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 8, + 0.5, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8, + 0.25, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 8, + 1, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.5, + 8, + 0.75, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.5, + 8, + 0.25, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.75, + 7.75, + 0.5, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 7, + 2 + ], + "to": [ + 4, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 1.5, + 8.125, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.625, + 1.5, + 7.875, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 1.5, + 8.625, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 1.5, + 8.375, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 1.5, + 7.875, + 1.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 1.25, + 8.125, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 7, + 3 + ], + "to": [ + 5, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.25, + 4.25, + 2.375, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 4.25, + 2.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 4.25, + 2.625, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.375, + 4.25, + 2.5, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.375, + 4.25, + 2.25, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.5, + 4.125, + 2.375, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 7, + 4 + ], + "to": [ + 4, + 9, + 5 + ], + "faces": { + "north": { + "uv": [ + 2.25, + 3.75, + 2.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 3.75, + 2.25, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 3.75, + 2.625, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.375, + 3.75, + 2.5, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.375, + 3.75, + 2.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.5, + 3.625, + 2.375, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 7, + 13 + ], + "to": [ + 15, + 9, + 15 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 2.875, + 8, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 2.875, + 7.75, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 2.875, + 8.5, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 2.875, + 8.25, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 2.875, + 7.75, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 2.625, + 8, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 12 + ], + "to": [ + 14, + 9, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 2.125, + 7.375, + 2.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 2.125, + 7.125, + 2.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 2.125, + 7.875, + 2.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 2.125, + 7.625, + 2.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 2.125, + 7.125, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 1.875, + 7.375, + 2.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 11 + ], + "to": [ + 13, + 9, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.75, + 3.375, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.75, + 3.25, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.75, + 3.625, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.75, + 3.5, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.75, + 3.25, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.625, + 3.375, + 2.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 7, + 12 + ], + "to": [ + 12, + 9, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 3, + 0.25, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3, + 0.125, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 3, + 0.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 3, + 0.375, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 3, + 0.125, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.875, + 0.25, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 7, + 1 + ], + "to": [ + 15, + 9, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 3.875, + 7.125, + 4.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 3.875, + 6.875, + 4.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 3.875, + 7.625, + 4.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 3.875, + 7.375, + 4.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 3.875, + 6.875, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 3.625, + 7.125, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 2 + ], + "to": [ + 14, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 0.25, + 3.875, + 0.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 0.25, + 3.625, + 0.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 0.25, + 4.375, + 0.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 0.25, + 4.125, + 0.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 0.25, + 3.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 0, + 3.875, + 0.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 7, + 3 + ], + "to": [ + 12, + 9, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.5, + 0.25, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.5, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.5, + 0.5, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.5, + 0.375, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.5, + 0.125, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.375, + 0.25, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 7, + 4 + ], + "to": [ + 13, + 9, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 2, + 5 + ], + "to": [ + 13, + 14, + 11 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 0.75, + 2, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.75, + 0.75, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 0.75, + 4, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 0.75, + 2.75, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 0.75, + 0.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 0, + 2, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 2, + 11 + ], + "to": [ + 5, + 14, + 12 + ], + "faces": { + "north": { + "uv": [ + 6, + 7, + 6.125, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.875, + 7, + 6, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.25, + 7, + 6.375, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 7, + 6.25, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 7, + 6, + 6.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 6.875, + 6.125, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 2, + 4 + ], + "to": [ + 5, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 6.5, + 6.875, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 6.5, + 6.75, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 6.5, + 7.125, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 6.5, + 7, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 6.5, + 6.75, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 6.375, + 6.875, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 2, + 4 + ], + "to": [ + 12, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 4.75, + 6.875, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 4.75, + 6.75, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 4.75, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 4.75, + 7, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 4.75, + 6.75, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 4.625, + 6.875, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 2, + 11 + ], + "to": [ + 12, + 14, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 6.75, + 3.875, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.625, + 6.75, + 3.75, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.75, + 4.125, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 6.75, + 4, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 6.75, + 3.75, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 6.625, + 3.875, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 11 + ], + "to": [ + 11, + 14, + 13 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 5, + 3.125, + 6.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.125, + 5, + 2.375, + 6.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 5, + 4.125, + 6.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 5, + 3.375, + 6.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.125, + 5, + 2.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 4.75, + 3.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 3 + ], + "to": [ + 11, + 14, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 3.875, + 1, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.875, + 0.25, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.25, + 3.875, + 2, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1, + 3.875, + 1.25, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1, + 3.875, + 0.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 3.625, + 1, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 15, + 4 + ], + "to": [ + 12, + 16, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 3.375, + 2, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 1, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 3.375, + 4, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 3.375, + 3, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 3.375, + 1, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 2.375, + 2, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 14, + 5 + ], + "to": [ + 11, + 15, + 11 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 2.375, + 4.875, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 2.375, + 4.125, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 2.375, + 6.375, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 2.375, + 5.625, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 2.375, + 4.125, + 1.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 1.625, + 4.875, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 4, + 4 + ], + "to": [ + 1, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 3.625, + 4.25, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 3.625, + 5.25, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 3.625, + 5.375, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 3.625, + 4.125, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.25, + 3.625, + 4.125, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.375, + 2.625, + 4.25, + 3.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 5, + 5 + ], + "to": [ + 3, + 11, + 11 + ], + "faces": { + "north": { + "uv": [ + 4.875, + 0.75, + 5.125, + 1.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 0.75, + 4.875, + 1.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 0.75, + 6.125, + 1.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 0.75, + 5.875, + 1.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.125, + 0.75, + 4.875, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 0, + 5.125, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 2 + ], + "to": [ + 11, + 4, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 3.375, + 7.25, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.375, + 3.375, + 6.5, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 3.375, + 8.125, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 3.375, + 7.375, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 3.375, + 6.5, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 3.25, + 7.25, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 5 + ], + "to": [ + 14, + 4, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 2.625, + 6.625, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 2.625, + 6.5, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 2.625, + 7.5, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 2.625, + 7.375, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 2.625, + 6.5, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 1.875, + 6.625, + 2.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 11 + ], + "to": [ + 13, + 4, + 12 + ], + "faces": { + "north": { + "uv": [ + 8.375, + 3.375, + 8.5, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.25, + 3.375, + 8.375, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.625, + 3.375, + 8.75, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.5, + 3.375, + 8.625, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.5, + 3.375, + 8.375, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 3.25, + 8.5, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 3, + 12 + ], + "to": [ + 12, + 4, + 13 + ], + "faces": { + "north": { + "uv": [ + 6.625, + 8.25, + 6.75, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.5, + 8.25, + 6.625, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 8.25, + 7, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 8.25, + 6.875, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 8.25, + 6.625, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.875, + 8.125, + 6.75, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 3, + 3 + ], + "to": [ + 12, + 4, + 4 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 8.25, + 1.375, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.125, + 8.25, + 1.25, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 8.25, + 1.625, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 8.25, + 1.5, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 8.25, + 1.25, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 8.125, + 1.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 3, + 4 + ], + "to": [ + 13, + 4, + 5 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 2.375, + 8.25, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 2.375, + 8.125, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 2.375, + 8.5, + 2.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 2.375, + 8.375, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 2.375, + 8.125, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 2.25, + 8.25, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 3, + 4 + ], + "to": [ + 4, + 4, + 5 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 2, + 8.25, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 2, + 8.125, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 2, + 8.5, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 2, + 8.375, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 2, + 8.125, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 1.875, + 8.25, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 3, + 3 + ], + "to": [ + 5, + 4, + 4 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.875, + 8.25, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.875, + 8.125, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.875, + 8.5, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.875, + 8.375, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.875, + 8.125, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0.75, + 8.25, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 3, + 12 + ], + "to": [ + 5, + 4, + 13 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.5, + 8.25, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.5, + 8.125, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.5, + 8.5, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.5, + 8.375, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.5, + 8.125, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0.375, + 8.25, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 3, + 11 + ], + "to": [ + 4, + 4, + 12 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.125, + 8.25, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.125, + 8.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.125, + 8.5, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.125, + 8.375, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.125, + 8.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 0, + 8.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 5 + ], + "to": [ + 3, + 4, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 1.625, + 6.625, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 1.625, + 6.5, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 1.625, + 7.5, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 1.625, + 7.375, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 1.625, + 6.5, + 0.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 0.875, + 6.625, + 1.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 13 + ], + "to": [ + 11, + 4, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 3, + 6.5, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.625, + 3, + 5.75, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 3, + 7.375, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 3, + 6.625, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 3, + 5.75, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 2.875, + 6.5, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 2 + ], + "to": [ + 11, + 13, + 3 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 0.5, + 6.375, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 0.5, + 5.625, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 0.5, + 7.25, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 0.5, + 6.5, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 0.5, + 5.625, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 0.375, + 6.375, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 12, + 5 + ], + "to": [ + 14, + 13, + 11 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 4.375, + 6.375, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 4.375, + 6.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 4.375, + 7.25, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 4.375, + 7.125, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 4.375, + 6.25, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 3.625, + 6.375, + 4.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 12, + 11 + ], + "to": [ + 13, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 8, + 8, + 8.125, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 8, + 8, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 8, + 8.375, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 8, + 8.25, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 8, + 8, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.875, + 8.125, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 12, + 12 + ], + "to": [ + 12, + 13, + 13 + ], + "faces": { + "north": { + "uv": [ + 8, + 7.625, + 8.125, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 7.625, + 8, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 7.625, + 8.375, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 7.625, + 8.25, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 7.625, + 8, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.5, + 8.125, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 12, + 3 + ], + "to": [ + 12, + 13, + 4 + ], + "faces": { + "north": { + "uv": [ + 8, + 7.25, + 8.125, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 7.25, + 8, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 7.25, + 8.375, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 7.25, + 8.25, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 7.25, + 8, + 7.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 7.125, + 8.125, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 12, + 4 + ], + "to": [ + 13, + 13, + 5 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.875, + 8.125, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.875, + 8, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.875, + 8.375, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.875, + 8.25, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.875, + 8, + 6.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6.75, + 8.125, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 12, + 4 + ], + "to": [ + 4, + 13, + 5 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.5, + 8.125, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.5, + 8, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.5, + 8.375, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.5, + 8.25, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.5, + 8, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6.375, + 8.125, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 12, + 3 + ], + "to": [ + 5, + 13, + 4 + ], + "faces": { + "north": { + "uv": [ + 8, + 6.125, + 8.125, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6.125, + 8, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.125, + 8.375, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 6.125, + 8.25, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 6.125, + 8, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 6, + 8.125, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 12, + 12 + ], + "to": [ + 5, + 13, + 13 + ], + "faces": { + "north": { + "uv": [ + 8, + 5.75, + 8.125, + 5.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5.75, + 8, + 5.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5.75, + 8.375, + 5.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5.75, + 8.25, + 5.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5.75, + 8, + 5.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 5.625, + 8.125, + 5.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 12, + 11 + ], + "to": [ + 4, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 8, + 5.375, + 8.125, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5.375, + 8, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5.375, + 8.375, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5.375, + 8.25, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5.375, + 8, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 5.25, + 8.125, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 12, + 5 + ], + "to": [ + 3, + 13, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 3.375, + 5.375, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 3.375, + 5.25, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 3.375, + 6.25, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 3.375, + 6.125, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 3.375, + 5.25, + 2.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 2.625, + 5.375, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 13 + ], + "to": [ + 11, + 13, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 0.125, + 6.375, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 0.125, + 5.625, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 0.125, + 7.25, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 0.125, + 6.5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 0.125, + 5.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 0, + 6.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 6 + ], + "to": [ + 14, + 12, + 7 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 0.125, + 7.625, + 1.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 0.125, + 7.5, + 1.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.75, + 0.125, + 7.875, + 1.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.625, + 0.125, + 7.75, + 1.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.625, + 0.125, + 7.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.75, + 0, + 7.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 2 + ], + "to": [ + 10, + 12, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 7.125, + 7.5, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 7.125, + 7.375, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 7.125, + 7.75, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 7.125, + 7.625, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 7.125, + 7.375, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 7, + 7.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 2 + ], + "to": [ + 7, + 12, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 5.875, + 7.5, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 5.875, + 7.375, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 5.875, + 7.75, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 5.875, + 7.625, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 5.875, + 7.375, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 5.75, + 7.5, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 13 + ], + "to": [ + 7, + 12, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 4.625, + 7.5, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 4.625, + 7.375, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 4.625, + 7.75, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 4.625, + 7.625, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 4.625, + 7.375, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 4.5, + 7.5, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 13 + ], + "to": [ + 10, + 12, + 14 + ], + "faces": { + "north": { + "uv": [ + 5, + 7.125, + 5.125, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.875, + 7.125, + 5, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 7.125, + 5.375, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 7.125, + 5.25, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.125, + 7.125, + 5, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.25, + 7, + 5.125, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 9 + ], + "to": [ + 14, + 12, + 10 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 7.125, + 4.5, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 7.125, + 4.375, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 7.125, + 4.75, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 7.125, + 4.625, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 7.125, + 4.375, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.625, + 7, + 4.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 9 + ], + "to": [ + 3, + 12, + 10 + ], + "faces": { + "north": { + "uv": [ + 8, + 5, + 8.125, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 5, + 8, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 5, + 8.375, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 5, + 8.25, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 5, + 8, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 4.875, + 8.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 6 + ], + "to": [ + 3, + 12, + 7 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 7.875, + 1.375, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.125, + 7.875, + 1.25, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 7.875, + 1.625, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 7.875, + 1.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 7.875, + 1.25, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 7.75, + 1.375, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 6 + ], + "to": [ + 3, + 5, + 7 + ], + "faces": { + "north": { + "uv": [ + 7, + 1.25, + 7.125, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 1.25, + 7, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.25, + 1.25, + 7.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 1.25, + 7.25, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 1.25, + 7, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1.125, + 7.125, + 1.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 9 + ], + "to": [ + 3, + 5, + 10 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 2, + 6, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 2, + 5.875, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 2, + 6.25, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 2, + 6.125, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 2, + 5.875, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 1.875, + 6, + 2 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"fuelreprocessor", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "fuelreprocessor", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "frame", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"legs", - "origin":[8,8,8], - "color":0, - "children":[0,1,2,3,4,5,6,7] - },{ - "name":"supports", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "legs", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + { + "name": "supports", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "frontright", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 8, + 9, + 10, + 11 + ] + }, { - "name":"frontright", - "origin":[8,8,8], - "color":0, - "children":[8,9,10,11] - },{ - "name":"frontleft", - "origin":[8,8,8], - "color":0, - "children":[12,13,14,15] - },{ - "name":"backright", - "origin":[8,8,8], - "color":0, - "children":[16,17,18,19] - },{ - "name":"backleft", - "origin":[8,8,8], - "color":0, - "children":[20,21,22,23] + "name": "frontleft", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 12, + 13, + 14, + 15 + ] + }, + { + "name": "backright", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 16, + 17, + 18, + 19 + ] + }, + { + "name": "backleft", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 20, + 21, + 22, + 23 + ] } ] } ] - },{ - "name":"cyllinder", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"ports", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "cyllinder", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + }, + { + "name": "ports", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"liquid", - "origin":[8,8,8], - "color":0, - "children":[31,32] - },{ - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[33,34] + "name": "liquid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 31, + 32 + ] + }, + { + "name": "power", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 33, + 34 + ] } ] - },{ - "name":"heating coil", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "heating coil", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"bottom", - "origin":[8,8,8], - "color":0, - "children":[35,36,37,38,39,40,41,42,43,44,45,46] - },{ - "name":"top", - "origin":[8,8,8], - "color":0, - "children":[47,48,49,50,51,52,53,54,55,56,57,58] - },{ - "name":"middle", - "origin":[8,8,8], - "color":0, - "children":[59,60,61,62,63,64,65,66,67,68] + "name": "bottom", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + }, + { + "name": "top", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + }, + { + "name": "middle", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] } ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/fusionreactorcore.json b/src/main/resources/assets/nuclearscience/models/block/fusionreactorcore.json index 8e36bc83..ea8a04e4 100644 --- a/src/main/resources/assets/nuclearscience/models/block/fusionreactorcore.json +++ b/src/main/resources/assets/nuclearscience/models/block/fusionreactorcore.json @@ -4,8 +4,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/fusionreactorcore", - "particle": "nuclearscience:model/fusionreactorcore" + "0": "nuclearscience:block/model/fusionreactorcore", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/gascentrifuge.json b/src/main/resources/assets/nuclearscience/models/block/gascentrifuge.json index 3c8ca9bd..2bedc95e 100644 --- a/src/main/resources/assets/nuclearscience/models/block/gascentrifuge.json +++ b/src/main/resources/assets/nuclearscience/models/block/gascentrifuge.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/gascentrifuge", - "particle": "nuclearscience:model/gascentrifuge" + "0": "nuclearscience:block/model/gascentrifuge", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/gascentrifugecenter.json b/src/main/resources/assets/nuclearscience/models/block/gascentrifugecenter.json index 72ded0d4..b030a3d3 100644 --- a/src/main/resources/assets/nuclearscience/models/block/gascentrifugecenter.json +++ b/src/main/resources/assets/nuclearscience/models/block/gascentrifugecenter.json @@ -2,8 +2,8 @@ "credit": "aurilisdev", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/gascentrifuge", - "particle": "nuclearscience:model/gascentrifuge" + "0": "nuclearscience:block/model/gascentrifuge", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/gascentrifugeoutline.json b/src/main/resources/assets/nuclearscience/models/block/gascentrifugeoutline.json index e411d27c..8ad5e223 100644 --- a/src/main/resources/assets/nuclearscience/models/block/gascentrifugeoutline.json +++ b/src/main/resources/assets/nuclearscience/models/block/gascentrifugeoutline.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/gascentrifuge", - "particle": "nuclearscience:model/gascentrifuge" + "0": "nuclearscience:block/model/gascentrifuge", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/heatexchanger.json b/src/main/resources/assets/nuclearscience/models/block/heatexchanger.json index 50da5941..cebda840 100644 --- a/src/main/resources/assets/nuclearscience/models/block/heatexchanger.json +++ b/src/main/resources/assets/nuclearscience/models/block/heatexchanger.json @@ -1,111 +1,11497 @@ { - "credit":"skip999", + "credit": "skip999", "parent": "block/cube_all", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/heatexchanger", - "particle":"nuclearscience:model/heatexchanger" + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/heatexchanger", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[0,1,0],"to":[16,3,16],"faces":{"north":{"uv":[2,2,4,2.25],"texture":"#0"},"east":{"uv":[0,2,2,2.25],"texture":"#0"},"south":{"uv":[6,2,8,2.25],"texture":"#0"},"west":{"uv":[4,2,6,2.25],"texture":"#0"},"up":{"uv":[4,2,2,0],"texture":"#0"},"down":{"uv":[6,0,4,2],"texture":"#0"}}},{"from":[12,4,1],"to":[13,6,2],"faces":{"north":{"uv":[6.375,11.375,6.5,11.625],"texture":"#0"},"east":{"uv":[6.25,11.375,6.375,11.625],"texture":"#0"},"south":{"uv":[6.625,11.375,6.75,11.625],"texture":"#0"},"west":{"uv":[6.5,11.375,6.625,11.625],"texture":"#0"},"up":{"uv":[6.5,11.375,6.375,11.25],"texture":"#0"},"down":{"uv":[6.625,11.25,6.5,11.375],"texture":"#0"}}},{"from":[12,14,1],"to":[13,16,2],"faces":{"north":{"uv":[5.75,11.375,5.875,11.625],"texture":"#0"},"east":{"uv":[5.625,11.375,5.75,11.625],"texture":"#0"},"south":{"uv":[6,11.375,6.125,11.625],"texture":"#0"},"west":{"uv":[5.875,11.375,6,11.625],"texture":"#0"},"up":{"uv":[5.875,11.375,5.75,11.25],"texture":"#0"},"down":{"uv":[6,11.25,5.875,11.375],"texture":"#0"}}},{"from":[12,9,1],"to":[13,11,2],"faces":{"north":{"uv":[5.125,11.375,5.25,11.625],"texture":"#0"},"east":{"uv":[5,11.375,5.125,11.625],"texture":"#0"},"south":{"uv":[5.375,11.375,5.5,11.625],"texture":"#0"},"west":{"uv":[5.25,11.375,5.375,11.625],"texture":"#0"},"up":{"uv":[5.25,11.375,5.125,11.25],"texture":"#0"},"down":{"uv":[5.375,11.25,5.25,11.375],"texture":"#0"}}},{"from":[9,4,1],"to":[10,6,2],"faces":{"north":{"uv":[4.5,11.375,4.625,11.625],"texture":"#0"},"east":{"uv":[4.375,11.375,4.5,11.625],"texture":"#0"},"south":{"uv":[4.75,11.375,4.875,11.625],"texture":"#0"},"west":{"uv":[4.625,11.375,4.75,11.625],"texture":"#0"},"up":{"uv":[4.625,11.375,4.5,11.25],"texture":"#0"},"down":{"uv":[4.75,11.25,4.625,11.375],"texture":"#0"}}},{"from":[9,14,1],"to":[10,16,2],"faces":{"north":{"uv":[11.375,4,11.5,4.25],"texture":"#0"},"east":{"uv":[11.25,4,11.375,4.25],"texture":"#0"},"south":{"uv":[11.625,4,11.75,4.25],"texture":"#0"},"west":{"uv":[11.5,4,11.625,4.25],"texture":"#0"},"up":{"uv":[11.5,4,11.375,3.875],"texture":"#0"},"down":{"uv":[11.625,3.875,11.5,4],"texture":"#0"}}},{"from":[9,9,1],"to":[10,11,2],"faces":{"north":{"uv":[3.875,11.375,4,11.625],"texture":"#0"},"east":{"uv":[3.75,11.375,3.875,11.625],"texture":"#0"},"south":{"uv":[4.125,11.375,4.25,11.625],"texture":"#0"},"west":{"uv":[4,11.375,4.125,11.625],"texture":"#0"},"up":{"uv":[4,11.375,3.875,11.25],"texture":"#0"},"down":{"uv":[4.125,11.25,4,11.375],"texture":"#0"}}},{"from":[6,4,1],"to":[7,6,2],"faces":{"north":{"uv":[11.375,3.5,11.5,3.75],"texture":"#0"},"east":{"uv":[11.25,3.5,11.375,3.75],"texture":"#0"},"south":{"uv":[11.625,3.5,11.75,3.75],"texture":"#0"},"west":{"uv":[11.5,3.5,11.625,3.75],"texture":"#0"},"up":{"uv":[11.5,3.5,11.375,3.375],"texture":"#0"},"down":{"uv":[11.625,3.375,11.5,3.5],"texture":"#0"}}},{"from":[6,14,1],"to":[7,16,2],"faces":{"north":{"uv":[3.25,11.375,3.375,11.625],"texture":"#0"},"east":{"uv":[3.125,11.375,3.25,11.625],"texture":"#0"},"south":{"uv":[3.5,11.375,3.625,11.625],"texture":"#0"},"west":{"uv":[3.375,11.375,3.5,11.625],"texture":"#0"},"up":{"uv":[3.375,11.375,3.25,11.25],"texture":"#0"},"down":{"uv":[3.5,11.25,3.375,11.375],"texture":"#0"}}},{"from":[3,9,1],"to":[4,11,2],"faces":{"north":{"uv":[11.375,3,11.5,3.25],"texture":"#0"},"east":{"uv":[11.25,3,11.375,3.25],"texture":"#0"},"south":{"uv":[11.625,3,11.75,3.25],"texture":"#0"},"west":{"uv":[11.5,3,11.625,3.25],"texture":"#0"},"up":{"uv":[11.5,3,11.375,2.875],"texture":"#0"},"down":{"uv":[11.625,2.875,11.5,3],"texture":"#0"}}},{"from":[6,9,1],"to":[7,11,2],"faces":{"north":{"uv":[2.625,11.375,2.75,11.625],"texture":"#0"},"east":{"uv":[2.5,11.375,2.625,11.625],"texture":"#0"},"south":{"uv":[2.875,11.375,3,11.625],"texture":"#0"},"west":{"uv":[2.75,11.375,2.875,11.625],"texture":"#0"},"up":{"uv":[2.75,11.375,2.625,11.25],"texture":"#0"},"down":{"uv":[2.875,11.25,2.75,11.375],"texture":"#0"}}},{"from":[1,4,1],"to":[3,16,2],"faces":{"north":{"uv":[9.375,1.875,9.625,3.375],"texture":"#0"},"east":{"uv":[9.25,1.875,9.375,3.375],"texture":"#0"},"south":{"uv":[9.75,1.875,10,3.375],"texture":"#0"},"west":{"uv":[9.625,1.875,9.75,3.375],"texture":"#0"},"up":{"uv":[9.625,1.875,9.375,1.75],"texture":"#0"},"down":{"uv":[9.875,1.75,9.625,1.875],"texture":"#0"}}}, - {"from":[4,4,1],"to":[6,16,2],"faces":{"north":{"uv":[1.875,9.375,2.125,10.875],"texture":"#0"},"east":{"uv":[1.75,9.375,1.875,10.875],"texture":"#0"},"south":{"uv":[2.25,9.375,2.5,10.875],"texture":"#0"},"west":{"uv":[2.125,9.375,2.25,10.875],"texture":"#0"},"up":{"uv":[2.125,9.375,1.875,9.25],"texture":"#0"},"down":{"uv":[2.375,9.25,2.125,9.375],"texture":"#0"}}},{"from":[7,4,1],"to":[9,16,2],"faces":{"north":{"uv":[1,9.375,1.25,10.875],"texture":"#0"},"east":{"uv":[0.875,9.375,1,10.875],"texture":"#0"},"south":{"uv":[1.375,9.375,1.625,10.875],"texture":"#0"},"west":{"uv":[1.25,9.375,1.375,10.875],"texture":"#0"},"up":{"uv":[1.25,9.375,1,9.25],"texture":"#0"},"down":{"uv":[1.5,9.25,1.25,9.375],"texture":"#0"}}},{"from":[10,4,1],"to":[12,16,2],"faces":{"north":{"uv":[0.125,9.375,0.375,10.875],"texture":"#0"},"east":{"uv":[0,9.375,0.125,10.875],"texture":"#0"},"south":{"uv":[0.5,9.375,0.75,10.875],"texture":"#0"},"west":{"uv":[0.375,9.375,0.5,10.875],"texture":"#0"},"up":{"uv":[0.375,9.375,0.125,9.25],"texture":"#0"},"down":{"uv":[0.625,9.25,0.375,9.375],"texture":"#0"}}},{"from":[13,4,1],"to":[15,16,2],"faces":{"north":{"uv":[8.875,8.875,9.125,10.375],"texture":"#0"},"east":{"uv":[8.75,8.875,8.875,10.375],"texture":"#0"},"south":{"uv":[9.25,8.875,9.5,10.375],"texture":"#0"},"west":{"uv":[9.125,8.875,9.25,10.375],"texture":"#0"},"up":{"uv":[9.125,8.875,8.875,8.75],"texture":"#0"},"down":{"uv":[9.375,8.75,9.125,8.875],"texture":"#0"}}},{"from":[3,4,1],"to":[4,6,2],"faces":{"north":{"uv":[11.375,1.125,11.5,1.375],"texture":"#0"},"east":{"uv":[11.25,1.125,11.375,1.375],"texture":"#0"},"south":{"uv":[11.625,1.125,11.75,1.375],"texture":"#0"},"west":{"uv":[11.5,1.125,11.625,1.375],"texture":"#0"},"up":{"uv":[11.5,1.125,11.375,1],"texture":"#0"},"down":{"uv":[11.625,1,11.5,1.125],"texture":"#0"}}},{"from":[3,14,1],"to":[4,16,2],"faces":{"north":{"uv":[11.25,11.25,11.375,11.5],"texture":"#0"},"east":{"uv":[11.125,11.25,11.25,11.5],"texture":"#0"},"south":{"uv":[11.5,11.25,11.625,11.5],"texture":"#0"},"west":{"uv":[11.375,11.25,11.5,11.5],"texture":"#0"},"up":{"uv":[11.375,11.25,11.25,11.125],"texture":"#0"},"down":{"uv":[11.5,11.125,11.375,11.25],"texture":"#0"}}},{"from":[12,4,7.5],"to":[13,6,8.5],"faces":{"north":{"uv":[7.75,11.25,7.875,11.5],"texture":"#0"},"east":{"uv":[7.625,11.25,7.75,11.5],"texture":"#0"},"south":{"uv":[8,11.25,8.125,11.5],"texture":"#0"},"west":{"uv":[7.875,11.25,8,11.5],"texture":"#0"},"up":{"uv":[7.875,11.25,7.75,11.125],"texture":"#0"},"down":{"uv":[8,11.125,7.875,11.25],"texture":"#0"}}},{"from":[12,14,7.5],"to":[13,16,8.5],"faces":{"north":{"uv":[8.875,11.125,9,11.375],"texture":"#0"},"east":{"uv":[8.75,11.125,8.875,11.375],"texture":"#0"},"south":{"uv":[9.125,11.125,9.25,11.375],"texture":"#0"},"west":{"uv":[9,11.125,9.125,11.375],"texture":"#0"},"up":{"uv":[9,11.125,8.875,11],"texture":"#0"},"down":{"uv":[9.125,11,9,11.125],"texture":"#0"}}},{"from":[12,9,7.5],"to":[13,11,8.5],"faces":{"north":{"uv":[7.125,11.125,7.25,11.375],"texture":"#0"},"east":{"uv":[7,11.125,7.125,11.375],"texture":"#0"},"south":{"uv":[7.375,11.125,7.5,11.375],"texture":"#0"},"west":{"uv":[7.25,11.125,7.375,11.375],"texture":"#0"},"up":{"uv":[7.25,11.125,7.125,11],"texture":"#0"},"down":{"uv":[7.375,11,7.25,11.125],"texture":"#0"}}},{"from":[9,4,7.5],"to":[10,6,8.5],"faces":{"north":{"uv":[2,11.125,2.125,11.375],"texture":"#0"},"east":{"uv":[1.875,11.125,2,11.375],"texture":"#0"},"south":{"uv":[2.25,11.125,2.375,11.375],"texture":"#0"},"west":{"uv":[2.125,11.125,2.25,11.375],"texture":"#0"},"up":{"uv":[2.125,11.125,2,11],"texture":"#0"},"down":{"uv":[2.25,11,2.125,11.125],"texture":"#0"}}},{"from":[9,14,7.5],"to":[10,16,8.5],"faces":{"north":{"uv":[1.375,11.125,1.5,11.375],"texture":"#0"},"east":{"uv":[1.25,11.125,1.375,11.375],"texture":"#0"},"south":{"uv":[1.625,11.125,1.75,11.375],"texture":"#0"},"west":{"uv":[1.5,11.125,1.625,11.375],"texture":"#0"},"up":{"uv":[1.5,11.125,1.375,11],"texture":"#0"},"down":{"uv":[1.625,11,1.5,11.125],"texture":"#0"}}},{"from":[9,9,7.5],"to":[10,11,8.5],"faces":{"north":{"uv":[0.75,11.125,0.875,11.375],"texture":"#0"},"east":{"uv":[0.625,11.125,0.75,11.375],"texture":"#0"},"south":{"uv":[1,11.125,1.125,11.375],"texture":"#0"},"west":{"uv":[0.875,11.125,1,11.375],"texture":"#0"},"up":{"uv":[0.875,11.125,0.75,11],"texture":"#0"},"down":{"uv":[1,11,0.875,11.125],"texture":"#0"}}}, - {"from":[6,4,7.5],"to":[7,6,8.5],"faces":{"north":{"uv":[0.125,11.125,0.25,11.375],"texture":"#0"},"east":{"uv":[0,11.125,0.125,11.375],"texture":"#0"},"south":{"uv":[0.375,11.125,0.5,11.375],"texture":"#0"},"west":{"uv":[0.25,11.125,0.375,11.375],"texture":"#0"},"up":{"uv":[0.25,11.125,0.125,11],"texture":"#0"},"down":{"uv":[0.375,11,0.25,11.125],"texture":"#0"}}},{"from":[6,14,7.5],"to":[7,16,8.5],"faces":{"north":{"uv":[10,11,10.125,11.25],"texture":"#0"},"east":{"uv":[9.875,11,10,11.25],"texture":"#0"},"south":{"uv":[10.25,11,10.375,11.25],"texture":"#0"},"west":{"uv":[10.125,11,10.25,11.25],"texture":"#0"},"up":{"uv":[10.125,11,10,10.875],"texture":"#0"},"down":{"uv":[10.25,10.875,10.125,11],"texture":"#0"}}},{"from":[3,9,7.5],"to":[4,11,8.5],"faces":{"north":{"uv":[11,9.875,11.125,10.125],"texture":"#0"},"east":{"uv":[10.875,9.875,11,10.125],"texture":"#0"},"south":{"uv":[11.25,9.875,11.375,10.125],"texture":"#0"},"west":{"uv":[11.125,9.875,11.25,10.125],"texture":"#0"},"up":{"uv":[11.125,9.875,11,9.75],"texture":"#0"},"down":{"uv":[11.25,9.75,11.125,9.875],"texture":"#0"}}},{"from":[6,9,7.5],"to":[7,11,8.5],"faces":{"north":{"uv":[11,9.375,11.125,9.625],"texture":"#0"},"east":{"uv":[10.875,9.375,11,9.625],"texture":"#0"},"south":{"uv":[11.25,9.375,11.375,9.625],"texture":"#0"},"west":{"uv":[11.125,9.375,11.25,9.625],"texture":"#0"},"up":{"uv":[11.125,9.375,11,9.25],"texture":"#0"},"down":{"uv":[11.25,9.25,11.125,9.375],"texture":"#0"}}},{"from":[1,4,7.5],"to":[3,16,8.5],"faces":{"north":{"uv":[8.875,7.125,9.125,8.625],"texture":"#0"},"east":{"uv":[8.75,7.125,8.875,8.625],"texture":"#0"},"south":{"uv":[9.25,7.125,9.5,8.625],"texture":"#0"},"west":{"uv":[9.125,7.125,9.25,8.625],"texture":"#0"},"up":{"uv":[9.125,7.125,8.875,7],"texture":"#0"},"down":{"uv":[9.375,7,9.125,7.125],"texture":"#0"}}},{"from":[4,4,7.5],"to":[6,16,8.5],"faces":{"north":{"uv":[8.875,5.375,9.125,6.875],"texture":"#0"},"east":{"uv":[8.75,5.375,8.875,6.875],"texture":"#0"},"south":{"uv":[9.25,5.375,9.5,6.875],"texture":"#0"},"west":{"uv":[9.125,5.375,9.25,6.875],"texture":"#0"},"up":{"uv":[9.125,5.375,8.875,5.25],"texture":"#0"},"down":{"uv":[9.375,5.25,9.125,5.375],"texture":"#0"}}},{"from":[7,4,7.5],"to":[9,16,8.5],"faces":{"north":{"uv":[8.875,0.125,9.125,1.625],"texture":"#0"},"east":{"uv":[8.75,0.125,8.875,1.625],"texture":"#0"},"south":{"uv":[9.25,0.125,9.5,1.625],"texture":"#0"},"west":{"uv":[9.125,0.125,9.25,1.625],"texture":"#0"},"up":{"uv":[9.125,0.125,8.875,0],"texture":"#0"},"down":{"uv":[9.375,0,9.125,0.125],"texture":"#0"}}},{"from":[10,4,7.5],"to":[12,16,8.5],"faces":{"north":{"uv":[8.625,3.625,8.875,5.125],"texture":"#0"},"east":{"uv":[8.5,3.625,8.625,5.125],"texture":"#0"},"south":{"uv":[9,3.625,9.25,5.125],"texture":"#0"},"west":{"uv":[8.875,3.625,9,5.125],"texture":"#0"},"up":{"uv":[8.875,3.625,8.625,3.5],"texture":"#0"},"down":{"uv":[9.125,3.5,8.875,3.625],"texture":"#0"}}},{"from":[13,4,7.5],"to":[15,16,8.5],"faces":{"north":{"uv":[8.5,1.875,8.75,3.375],"texture":"#0"},"east":{"uv":[8.375,1.875,8.5,3.375],"texture":"#0"},"south":{"uv":[8.875,1.875,9.125,3.375],"texture":"#0"},"west":{"uv":[8.75,1.875,8.875,3.375],"texture":"#0"},"up":{"uv":[8.75,1.875,8.5,1.75],"texture":"#0"},"down":{"uv":[9,1.75,8.75,1.875],"texture":"#0"}}},{"from":[3,4,7.5],"to":[4,6,8.5],"faces":{"north":{"uv":[11,8.875,11.125,9.125],"texture":"#0"},"east":{"uv":[10.875,8.875,11,9.125],"texture":"#0"},"south":{"uv":[11.25,8.875,11.375,9.125],"texture":"#0"},"west":{"uv":[11.125,8.875,11.25,9.125],"texture":"#0"},"up":{"uv":[11.125,8.875,11,8.75],"texture":"#0"},"down":{"uv":[11.25,8.75,11.125,8.875],"texture":"#0"}}},{"from":[3,14,7.5],"to":[4,16,8.5],"faces":{"north":{"uv":[11,8.375,11.125,8.625],"texture":"#0"},"east":{"uv":[10.875,8.375,11,8.625],"texture":"#0"},"south":{"uv":[11.25,8.375,11.375,8.625],"texture":"#0"},"west":{"uv":[11.125,8.375,11.25,8.625],"texture":"#0"},"up":{"uv":[11.125,8.375,11,8.25],"texture":"#0"},"down":{"uv":[11.25,8.25,11.125,8.375],"texture":"#0"}}},{"from":[12,4,14],"to":[13,6,15],"faces":{"north":{"uv":[11,7.875,11.125,8.125],"texture":"#0"},"east":{"uv":[10.875,7.875,11,8.125],"texture":"#0"},"south":{"uv":[11.25,7.875,11.375,8.125],"texture":"#0"},"west":{"uv":[11.125,7.875,11.25,8.125],"texture":"#0"},"up":{"uv":[11.125,7.875,11,7.75],"texture":"#0"},"down":{"uv":[11.25,7.75,11.125,7.875],"texture":"#0"}}}, - {"from":[12,14,14],"to":[13,16,15],"faces":{"north":{"uv":[11,7.375,11.125,7.625],"texture":"#0"},"east":{"uv":[10.875,7.375,11,7.625],"texture":"#0"},"south":{"uv":[11.25,7.375,11.375,7.625],"texture":"#0"},"west":{"uv":[11.125,7.375,11.25,7.625],"texture":"#0"},"up":{"uv":[11.125,7.375,11,7.25],"texture":"#0"},"down":{"uv":[11.25,7.25,11.125,7.375],"texture":"#0"}}},{"from":[12,9,14],"to":[13,11,15],"faces":{"north":{"uv":[11,6.875,11.125,7.125],"texture":"#0"},"east":{"uv":[10.875,6.875,11,7.125],"texture":"#0"},"south":{"uv":[11.25,6.875,11.375,7.125],"texture":"#0"},"west":{"uv":[11.125,6.875,11.25,7.125],"texture":"#0"},"up":{"uv":[11.125,6.875,11,6.75],"texture":"#0"},"down":{"uv":[11.25,6.75,11.125,6.875],"texture":"#0"}}},{"from":[9,4,14],"to":[10,6,15],"faces":{"north":{"uv":[11,6.375,11.125,6.625],"texture":"#0"},"east":{"uv":[10.875,6.375,11,6.625],"texture":"#0"},"south":{"uv":[11.25,6.375,11.375,6.625],"texture":"#0"},"west":{"uv":[11.125,6.375,11.25,6.625],"texture":"#0"},"up":{"uv":[11.125,6.375,11,6.25],"texture":"#0"},"down":{"uv":[11.25,6.25,11.125,6.375],"texture":"#0"}}},{"from":[9,14,14],"to":[10,16,15],"faces":{"north":{"uv":[11,5.875,11.125,6.125],"texture":"#0"},"east":{"uv":[10.875,5.875,11,6.125],"texture":"#0"},"south":{"uv":[11.25,5.875,11.375,6.125],"texture":"#0"},"west":{"uv":[11.125,5.875,11.25,6.125],"texture":"#0"},"up":{"uv":[11.125,5.875,11,5.75],"texture":"#0"},"down":{"uv":[11.25,5.75,11.125,5.875],"texture":"#0"}}},{"from":[9,9,14],"to":[10,11,15],"faces":{"north":{"uv":[11,5.375,11.125,5.625],"texture":"#0"},"east":{"uv":[10.875,5.375,11,5.625],"texture":"#0"},"south":{"uv":[11.25,5.375,11.375,5.625],"texture":"#0"},"west":{"uv":[11.125,5.375,11.25,5.625],"texture":"#0"},"up":{"uv":[11.125,5.375,11,5.25],"texture":"#0"},"down":{"uv":[11.25,5.25,11.125,5.375],"texture":"#0"}}},{"from":[6,4,14],"to":[7,6,15],"faces":{"north":{"uv":[11,4.875,11.125,5.125],"texture":"#0"},"east":{"uv":[10.875,4.875,11,5.125],"texture":"#0"},"south":{"uv":[11.25,4.875,11.375,5.125],"texture":"#0"},"west":{"uv":[11.125,4.875,11.25,5.125],"texture":"#0"},"up":{"uv":[11.125,4.875,11,4.75],"texture":"#0"},"down":{"uv":[11.25,4.75,11.125,4.875],"texture":"#0"}}},{"from":[6,14,14],"to":[7,16,15],"faces":{"north":{"uv":[11,0.625,11.125,0.875],"texture":"#0"},"east":{"uv":[10.875,0.625,11,0.875],"texture":"#0"},"south":{"uv":[11.25,0.625,11.375,0.875],"texture":"#0"},"west":{"uv":[11.125,0.625,11.25,0.875],"texture":"#0"},"up":{"uv":[11.125,0.625,11,0.5],"texture":"#0"},"down":{"uv":[11.25,0.5,11.125,0.625],"texture":"#0"}}},{"from":[3,9,14],"to":[4,11,15],"faces":{"north":{"uv":[11,0.125,11.125,0.375],"texture":"#0"},"east":{"uv":[10.875,0.125,11,0.375],"texture":"#0"},"south":{"uv":[11.25,0.125,11.375,0.375],"texture":"#0"},"west":{"uv":[11.125,0.125,11.25,0.375],"texture":"#0"},"up":{"uv":[11.125,0.125,11,0],"texture":"#0"},"down":{"uv":[11.25,0,11.125,0.125],"texture":"#0"}}},{"from":[6,9,14],"to":[7,11,15],"faces":{"north":{"uv":[10.75,10.875,10.875,11.125],"texture":"#0"},"east":{"uv":[10.625,10.875,10.75,11.125],"texture":"#0"},"south":{"uv":[11,10.875,11.125,11.125],"texture":"#0"},"west":{"uv":[10.875,10.875,11,11.125],"texture":"#0"},"up":{"uv":[10.875,10.875,10.75,10.75],"texture":"#0"},"down":{"uv":[11,10.75,10.875,10.875],"texture":"#0"}}},{"from":[1,4,14],"to":[3,16,15],"faces":{"north":{"uv":[7.125,8.125,7.375,9.625],"texture":"#0"},"east":{"uv":[7,8.125,7.125,9.625],"texture":"#0"},"south":{"uv":[7.5,8.125,7.75,9.625],"texture":"#0"},"west":{"uv":[7.375,8.125,7.5,9.625],"texture":"#0"},"up":{"uv":[7.375,8.125,7.125,8],"texture":"#0"},"down":{"uv":[7.625,8,7.375,8.125],"texture":"#0"}}},{"from":[4,4,14],"to":[6,16,15],"faces":{"north":{"uv":[6.25,8.125,6.5,9.625],"texture":"#0"},"east":{"uv":[6.125,8.125,6.25,9.625],"texture":"#0"},"south":{"uv":[6.625,8.125,6.875,9.625],"texture":"#0"},"west":{"uv":[6.5,8.125,6.625,9.625],"texture":"#0"},"up":{"uv":[6.5,8.125,6.25,8],"texture":"#0"},"down":{"uv":[6.75,8,6.5,8.125],"texture":"#0"}}},{"from":[7,4,14],"to":[9,16,15],"faces":{"north":{"uv":[5.375,8.125,5.625,9.625],"texture":"#0"},"east":{"uv":[5.25,8.125,5.375,9.625],"texture":"#0"},"south":{"uv":[5.75,8.125,6,9.625],"texture":"#0"},"west":{"uv":[5.625,8.125,5.75,9.625],"texture":"#0"},"up":{"uv":[5.625,8.125,5.375,8],"texture":"#0"},"down":{"uv":[5.875,8,5.625,8.125],"texture":"#0"}}}, - {"from":[10,4,14],"to":[12,16,15],"faces":{"north":{"uv":[4.5,8.125,4.75,9.625],"texture":"#0"},"east":{"uv":[4.375,8.125,4.5,9.625],"texture":"#0"},"south":{"uv":[4.875,8.125,5.125,9.625],"texture":"#0"},"west":{"uv":[4.75,8.125,4.875,9.625],"texture":"#0"},"up":{"uv":[4.75,8.125,4.5,8],"texture":"#0"},"down":{"uv":[5,8,4.75,8.125],"texture":"#0"}}},{"from":[13,4,14],"to":[15,16,15],"faces":{"north":{"uv":[3.625,8.125,3.875,9.625],"texture":"#0"},"east":{"uv":[3.5,8.125,3.625,9.625],"texture":"#0"},"south":{"uv":[4,8.125,4.25,9.625],"texture":"#0"},"west":{"uv":[3.875,8.125,4,9.625],"texture":"#0"},"up":{"uv":[3.875,8.125,3.625,8],"texture":"#0"},"down":{"uv":[4.125,8,3.875,8.125],"texture":"#0"}}},{"from":[3,4,14],"to":[4,6,15],"faces":{"north":{"uv":[10.875,10.375,11,10.625],"texture":"#0"},"east":{"uv":[10.75,10.375,10.875,10.625],"texture":"#0"},"south":{"uv":[11.125,10.375,11.25,10.625],"texture":"#0"},"west":{"uv":[11,10.375,11.125,10.625],"texture":"#0"},"up":{"uv":[11,10.375,10.875,10.25],"texture":"#0"},"down":{"uv":[11.125,10.25,11,10.375],"texture":"#0"}}},{"from":[3,14,14],"to":[4,16,15],"faces":{"north":{"uv":[8.25,10.875,8.375,11.125],"texture":"#0"},"east":{"uv":[8.125,10.875,8.25,11.125],"texture":"#0"},"south":{"uv":[8.5,10.875,8.625,11.125],"texture":"#0"},"west":{"uv":[8.375,10.875,8.5,11.125],"texture":"#0"},"up":{"uv":[8.375,10.875,8.25,10.75],"texture":"#0"},"down":{"uv":[8.5,10.75,8.375,10.875],"texture":"#0"}}},{"from":[12,4,2.625],"to":[13,6,3.625],"faces":{"north":{"uv":[6.5,10.875,6.625,11.125],"texture":"#0"},"east":{"uv":[6.375,10.875,6.5,11.125],"texture":"#0"},"south":{"uv":[6.75,10.875,6.875,11.125],"texture":"#0"},"west":{"uv":[6.625,10.875,6.75,11.125],"texture":"#0"},"up":{"uv":[6.625,10.875,6.5,10.75],"texture":"#0"},"down":{"uv":[6.75,10.75,6.625,10.875],"texture":"#0"}}},{"from":[12,14,2.625],"to":[13,16,3.625],"faces":{"north":{"uv":[5.875,10.875,6,11.125],"texture":"#0"},"east":{"uv":[5.75,10.875,5.875,11.125],"texture":"#0"},"south":{"uv":[6.125,10.875,6.25,11.125],"texture":"#0"},"west":{"uv":[6,10.875,6.125,11.125],"texture":"#0"},"up":{"uv":[6,10.875,5.875,10.75],"texture":"#0"},"down":{"uv":[6.125,10.75,6,10.875],"texture":"#0"}}},{"from":[12,9,2.625],"to":[13,11,3.625],"faces":{"north":{"uv":[5.25,10.875,5.375,11.125],"texture":"#0"},"east":{"uv":[5.125,10.875,5.25,11.125],"texture":"#0"},"south":{"uv":[5.5,10.875,5.625,11.125],"texture":"#0"},"west":{"uv":[5.375,10.875,5.5,11.125],"texture":"#0"},"up":{"uv":[5.375,10.875,5.25,10.75],"texture":"#0"},"down":{"uv":[5.5,10.75,5.375,10.875],"texture":"#0"}}},{"from":[9,4,2.625],"to":[10,6,3.625],"faces":{"north":{"uv":[4.625,10.875,4.75,11.125],"texture":"#0"},"east":{"uv":[4.5,10.875,4.625,11.125],"texture":"#0"},"south":{"uv":[4.875,10.875,5,11.125],"texture":"#0"},"west":{"uv":[4.75,10.875,4.875,11.125],"texture":"#0"},"up":{"uv":[4.75,10.875,4.625,10.75],"texture":"#0"},"down":{"uv":[4.875,10.75,4.75,10.875],"texture":"#0"}}},{"from":[9,14,2.625],"to":[10,16,3.625],"faces":{"north":{"uv":[4,10.875,4.125,11.125],"texture":"#0"},"east":{"uv":[3.875,10.875,4,11.125],"texture":"#0"},"south":{"uv":[4.25,10.875,4.375,11.125],"texture":"#0"},"west":{"uv":[4.125,10.875,4.25,11.125],"texture":"#0"},"up":{"uv":[4.125,10.875,4,10.75],"texture":"#0"},"down":{"uv":[4.25,10.75,4.125,10.875],"texture":"#0"}}},{"from":[9,9,2.625],"to":[10,11,3.625],"faces":{"north":{"uv":[3.375,10.875,3.5,11.125],"texture":"#0"},"east":{"uv":[3.25,10.875,3.375,11.125],"texture":"#0"},"south":{"uv":[3.625,10.875,3.75,11.125],"texture":"#0"},"west":{"uv":[3.5,10.875,3.625,11.125],"texture":"#0"},"up":{"uv":[3.5,10.875,3.375,10.75],"texture":"#0"},"down":{"uv":[3.625,10.75,3.5,10.875],"texture":"#0"}}},{"from":[6,4,2.625],"to":[7,6,3.625],"faces":{"north":{"uv":[2.75,10.875,2.875,11.125],"texture":"#0"},"east":{"uv":[2.625,10.875,2.75,11.125],"texture":"#0"},"south":{"uv":[3,10.875,3.125,11.125],"texture":"#0"},"west":{"uv":[2.875,10.875,3,11.125],"texture":"#0"},"up":{"uv":[2.875,10.875,2.75,10.75],"texture":"#0"},"down":{"uv":[3,10.75,2.875,10.875],"texture":"#0"}}},{"from":[6,14,2.625],"to":[7,16,3.625],"faces":{"north":{"uv":[10.875,2.625,11,2.875],"texture":"#0"},"east":{"uv":[10.75,2.625,10.875,2.875],"texture":"#0"},"south":{"uv":[11.125,2.625,11.25,2.875],"texture":"#0"},"west":{"uv":[11,2.625,11.125,2.875],"texture":"#0"},"up":{"uv":[11,2.625,10.875,2.5],"texture":"#0"},"down":{"uv":[11.125,2.5,11,2.625],"texture":"#0"}}}, - {"from":[3,9,2.625],"to":[4,11,3.625],"faces":{"north":{"uv":[10.875,2.125,11,2.375],"texture":"#0"},"east":{"uv":[10.75,2.125,10.875,2.375],"texture":"#0"},"south":{"uv":[11.125,2.125,11.25,2.375],"texture":"#0"},"west":{"uv":[11,2.125,11.125,2.375],"texture":"#0"},"up":{"uv":[11,2.125,10.875,2],"texture":"#0"},"down":{"uv":[11.125,2,11,2.125],"texture":"#0"}}},{"from":[6,9,2.625],"to":[7,11,3.625],"faces":{"north":{"uv":[10.875,1.625,11,1.875],"texture":"#0"},"east":{"uv":[10.75,1.625,10.875,1.875],"texture":"#0"},"south":{"uv":[11.125,1.625,11.25,1.875],"texture":"#0"},"west":{"uv":[11,1.625,11.125,1.875],"texture":"#0"},"up":{"uv":[11,1.625,10.875,1.5],"texture":"#0"},"down":{"uv":[11.125,1.5,11,1.625],"texture":"#0"}}},{"from":[1,4,2.625],"to":[3,16,3.625],"faces":{"north":{"uv":[8,7.75,8.25,9.25],"texture":"#0"},"east":{"uv":[7.875,7.75,8,9.25],"texture":"#0"},"south":{"uv":[8.375,7.75,8.625,9.25],"texture":"#0"},"west":{"uv":[8.25,7.75,8.375,9.25],"texture":"#0"},"up":{"uv":[8.25,7.75,8,7.625],"texture":"#0"},"down":{"uv":[8.5,7.625,8.25,7.75],"texture":"#0"}}},{"from":[4,4,2.625],"to":[6,16,3.625],"faces":{"north":{"uv":[8,6,8.25,7.5],"texture":"#0"},"east":{"uv":[7.875,6,8,7.5],"texture":"#0"},"south":{"uv":[8.375,6,8.625,7.5],"texture":"#0"},"west":{"uv":[8.25,6,8.375,7.5],"texture":"#0"},"up":{"uv":[8.25,6,8,5.875],"texture":"#0"},"down":{"uv":[8.5,5.875,8.25,6],"texture":"#0"}}},{"from":[7,4,2.625],"to":[9,16,3.625],"faces":{"north":{"uv":[8,0.125,8.25,1.625],"texture":"#0"},"east":{"uv":[7.875,0.125,8,1.625],"texture":"#0"},"south":{"uv":[8.375,0.125,8.625,1.625],"texture":"#0"},"west":{"uv":[8.25,0.125,8.375,1.625],"texture":"#0"},"up":{"uv":[8.25,0.125,8,0],"texture":"#0"},"down":{"uv":[8.5,0,8.25,0.125],"texture":"#0"}}},{"from":[10,4,2.625],"to":[12,16,3.625],"faces":{"north":{"uv":[7.75,4.25,8,5.75],"texture":"#0"},"east":{"uv":[7.625,4.25,7.75,5.75],"texture":"#0"},"south":{"uv":[8.125,4.25,8.375,5.75],"texture":"#0"},"west":{"uv":[8,4.25,8.125,5.75],"texture":"#0"},"up":{"uv":[8,4.25,7.75,4.125],"texture":"#0"},"down":{"uv":[8.25,4.125,8,4.25],"texture":"#0"}}},{"from":[13,4,2.625],"to":[15,16,3.625],"faces":{"north":{"uv":[2.75,7.625,3,9.125],"texture":"#0"},"east":{"uv":[2.625,7.625,2.75,9.125],"texture":"#0"},"south":{"uv":[3.125,7.625,3.375,9.125],"texture":"#0"},"west":{"uv":[3,7.625,3.125,9.125],"texture":"#0"},"up":{"uv":[3,7.625,2.75,7.5],"texture":"#0"},"down":{"uv":[3.25,7.5,3,7.625],"texture":"#0"}}},{"from":[3,4,2.625],"to":[4,6,3.625],"faces":{"north":{"uv":[7.625,10.75,7.75,11],"texture":"#0"},"east":{"uv":[7.5,10.75,7.625,11],"texture":"#0"},"south":{"uv":[7.875,10.75,8,11],"texture":"#0"},"west":{"uv":[7.75,10.75,7.875,11],"texture":"#0"},"up":{"uv":[7.75,10.75,7.625,10.625],"texture":"#0"},"down":{"uv":[7.875,10.625,7.75,10.75],"texture":"#0"}}},{"from":[3,14,2.625],"to":[4,16,3.625],"faces":{"north":{"uv":[10.75,4.375,10.875,4.625],"texture":"#0"},"east":{"uv":[10.625,4.375,10.75,4.625],"texture":"#0"},"south":{"uv":[11,4.375,11.125,4.625],"texture":"#0"},"west":{"uv":[10.875,4.375,11,4.625],"texture":"#0"},"up":{"uv":[10.875,4.375,10.75,4.25],"texture":"#0"},"down":{"uv":[11,4.25,10.875,4.375],"texture":"#0"}}},{"from":[12,4,4.25],"to":[13,6,5.25],"faces":{"north":{"uv":[10.75,3.875,10.875,4.125],"texture":"#0"},"east":{"uv":[10.625,3.875,10.75,4.125],"texture":"#0"},"south":{"uv":[11,3.875,11.125,4.125],"texture":"#0"},"west":{"uv":[10.875,3.875,11,4.125],"texture":"#0"},"up":{"uv":[10.875,3.875,10.75,3.75],"texture":"#0"},"down":{"uv":[11,3.75,10.875,3.875],"texture":"#0"}}},{"from":[12,14,4.25],"to":[13,16,5.25],"faces":{"north":{"uv":[10.75,3.375,10.875,3.625],"texture":"#0"},"east":{"uv":[10.625,3.375,10.75,3.625],"texture":"#0"},"south":{"uv":[11,3.375,11.125,3.625],"texture":"#0"},"west":{"uv":[10.875,3.375,11,3.625],"texture":"#0"},"up":{"uv":[10.875,3.375,10.75,3.25],"texture":"#0"},"down":{"uv":[11,3.25,10.875,3.375],"texture":"#0"}}},{"from":[12,9,4.25],"to":[13,11,5.25],"faces":{"north":{"uv":[10.75,1.125,10.875,1.375],"texture":"#0"},"east":{"uv":[10.625,1.125,10.75,1.375],"texture":"#0"},"south":{"uv":[11,1.125,11.125,1.375],"texture":"#0"},"west":{"uv":[10.875,1.125,11,1.375],"texture":"#0"},"up":{"uv":[10.875,1.125,10.75,1],"texture":"#0"},"down":{"uv":[11,1,10.875,1.125],"texture":"#0"}}}, - {"from":[9,4,4.25],"to":[10,6,5.25],"faces":{"north":{"uv":[9.5,10.625,9.625,10.875],"texture":"#0"},"east":{"uv":[9.375,10.625,9.5,10.875],"texture":"#0"},"south":{"uv":[9.75,10.625,9.875,10.875],"texture":"#0"},"west":{"uv":[9.625,10.625,9.75,10.875],"texture":"#0"},"up":{"uv":[9.625,10.625,9.5,10.5],"texture":"#0"},"down":{"uv":[9.75,10.5,9.625,10.625],"texture":"#0"}}},{"from":[9,14,4.25],"to":[10,16,5.25],"faces":{"north":{"uv":[8.875,10.625,9,10.875],"texture":"#0"},"east":{"uv":[8.75,10.625,8.875,10.875],"texture":"#0"},"south":{"uv":[9.125,10.625,9.25,10.875],"texture":"#0"},"west":{"uv":[9,10.625,9.125,10.875],"texture":"#0"},"up":{"uv":[9,10.625,8.875,10.5],"texture":"#0"},"down":{"uv":[9.125,10.5,9,10.625],"texture":"#0"}}},{"from":[9,9,4.25],"to":[10,11,5.25],"faces":{"north":{"uv":[10.25,10.5,10.375,10.75],"texture":"#0"},"east":{"uv":[10.125,10.5,10.25,10.75],"texture":"#0"},"south":{"uv":[10.5,10.5,10.625,10.75],"texture":"#0"},"west":{"uv":[10.375,10.5,10.5,10.75],"texture":"#0"},"up":{"uv":[10.375,10.5,10.25,10.375],"texture":"#0"},"down":{"uv":[10.5,10.375,10.375,10.5],"texture":"#0"}}},{"from":[6,4,4.25],"to":[7,6,5.25],"faces":{"north":{"uv":[10.375,10,10.5,10.25],"texture":"#0"},"east":{"uv":[10.25,10,10.375,10.25],"texture":"#0"},"south":{"uv":[10.625,10,10.75,10.25],"texture":"#0"},"west":{"uv":[10.5,10,10.625,10.25],"texture":"#0"},"up":{"uv":[10.5,10,10.375,9.875],"texture":"#0"},"down":{"uv":[10.625,9.875,10.5,10],"texture":"#0"}}},{"from":[6,14,4.25],"to":[7,16,5.25],"faces":{"north":{"uv":[10.375,9.5,10.5,9.75],"texture":"#0"},"east":{"uv":[10.25,9.5,10.375,9.75],"texture":"#0"},"south":{"uv":[10.625,9.5,10.75,9.75],"texture":"#0"},"west":{"uv":[10.5,9.5,10.625,9.75],"texture":"#0"},"up":{"uv":[10.5,9.5,10.375,9.375],"texture":"#0"},"down":{"uv":[10.625,9.375,10.5,9.5],"texture":"#0"}}},{"from":[3,9,4.25],"to":[4,11,5.25],"faces":{"north":{"uv":[10.375,9,10.5,9.25],"texture":"#0"},"east":{"uv":[10.25,9,10.375,9.25],"texture":"#0"},"south":{"uv":[10.625,9,10.75,9.25],"texture":"#0"},"west":{"uv":[10.5,9,10.625,9.25],"texture":"#0"},"up":{"uv":[10.5,9,10.375,8.875],"texture":"#0"},"down":{"uv":[10.625,8.875,10.5,9],"texture":"#0"}}},{"from":[6,9,4.25],"to":[7,11,5.25],"faces":{"north":{"uv":[10.375,8.5,10.5,8.75],"texture":"#0"},"east":{"uv":[10.25,8.5,10.375,8.75],"texture":"#0"},"south":{"uv":[10.625,8.5,10.75,8.75],"texture":"#0"},"west":{"uv":[10.5,8.5,10.625,8.75],"texture":"#0"},"up":{"uv":[10.5,8.5,10.375,8.375],"texture":"#0"},"down":{"uv":[10.625,8.375,10.5,8.5],"texture":"#0"}}},{"from":[1,4,4.25],"to":[3,16,5.25],"faces":{"north":{"uv":[7.625,2.5,7.875,4],"texture":"#0"},"east":{"uv":[7.5,2.5,7.625,4],"texture":"#0"},"south":{"uv":[8,2.5,8.25,4],"texture":"#0"},"west":{"uv":[7.875,2.5,8,4],"texture":"#0"},"up":{"uv":[7.875,2.5,7.625,2.375],"texture":"#0"},"down":{"uv":[8.125,2.375,7.875,2.5],"texture":"#0"}}},{"from":[4,4,4.25],"to":[6,16,5.25],"faces":{"north":{"uv":[1.875,7.625,2.125,9.125],"texture":"#0"},"east":{"uv":[1.75,7.625,1.875,9.125],"texture":"#0"},"south":{"uv":[2.25,7.625,2.5,9.125],"texture":"#0"},"west":{"uv":[2.125,7.625,2.25,9.125],"texture":"#0"},"up":{"uv":[2.125,7.625,1.875,7.5],"texture":"#0"},"down":{"uv":[2.375,7.5,2.125,7.625],"texture":"#0"}}},{"from":[7,4,4.25],"to":[9,16,5.25],"faces":{"north":{"uv":[1,7.625,1.25,9.125],"texture":"#0"},"east":{"uv":[0.875,7.625,1,9.125],"texture":"#0"},"south":{"uv":[1.375,7.625,1.625,9.125],"texture":"#0"},"west":{"uv":[1.25,7.625,1.375,9.125],"texture":"#0"},"up":{"uv":[1.25,7.625,1,7.5],"texture":"#0"},"down":{"uv":[1.5,7.5,1.25,7.625],"texture":"#0"}}},{"from":[10,4,4.25],"to":[12,16,5.25],"faces":{"north":{"uv":[0.125,7.625,0.375,9.125],"texture":"#0"},"east":{"uv":[0,7.625,0.125,9.125],"texture":"#0"},"south":{"uv":[0.5,7.625,0.75,9.125],"texture":"#0"},"west":{"uv":[0.375,7.625,0.5,9.125],"texture":"#0"},"up":{"uv":[0.375,7.625,0.125,7.5],"texture":"#0"},"down":{"uv":[0.625,7.5,0.375,7.625],"texture":"#0"}}},{"from":[13,4,4.25],"to":[15,16,5.25],"faces":{"north":{"uv":[7.125,6.375,7.375,7.875],"texture":"#0"},"east":{"uv":[7,6.375,7.125,7.875],"texture":"#0"},"south":{"uv":[7.5,6.375,7.75,7.875],"texture":"#0"},"west":{"uv":[7.375,6.375,7.5,7.875],"texture":"#0"},"up":{"uv":[7.375,6.375,7.125,6.25],"texture":"#0"},"down":{"uv":[7.625,6.25,7.375,6.375],"texture":"#0"}}}, - {"from":[3,4,4.25],"to":[4,6,5.25],"faces":{"north":{"uv":[8.25,10.375,8.375,10.625],"texture":"#0"},"east":{"uv":[8.125,10.375,8.25,10.625],"texture":"#0"},"south":{"uv":[8.5,10.375,8.625,10.625],"texture":"#0"},"west":{"uv":[8.375,10.375,8.5,10.625],"texture":"#0"},"up":{"uv":[8.375,10.375,8.25,10.25],"texture":"#0"},"down":{"uv":[8.5,10.25,8.375,10.375],"texture":"#0"}}},{"from":[3,14,4.25],"to":[4,16,5.25],"faces":{"north":{"uv":[10.375,8,10.5,8.25],"texture":"#0"},"east":{"uv":[10.25,8,10.375,8.25],"texture":"#0"},"south":{"uv":[10.625,8,10.75,8.25],"texture":"#0"},"west":{"uv":[10.5,8,10.625,8.25],"texture":"#0"},"up":{"uv":[10.5,8,10.375,7.875],"texture":"#0"},"down":{"uv":[10.625,7.875,10.5,8],"texture":"#0"}}},{"from":[12,4,5.875],"to":[13,6,6.875],"faces":{"north":{"uv":[10.375,7.5,10.5,7.75],"texture":"#0"},"east":{"uv":[10.25,7.5,10.375,7.75],"texture":"#0"},"south":{"uv":[10.625,7.5,10.75,7.75],"texture":"#0"},"west":{"uv":[10.5,7.5,10.625,7.75],"texture":"#0"},"up":{"uv":[10.5,7.5,10.375,7.375],"texture":"#0"},"down":{"uv":[10.625,7.375,10.5,7.5],"texture":"#0"}}},{"from":[12,14,5.875],"to":[13,16,6.875],"faces":{"north":{"uv":[7.125,10.375,7.25,10.625],"texture":"#0"},"east":{"uv":[7,10.375,7.125,10.625],"texture":"#0"},"south":{"uv":[7.375,10.375,7.5,10.625],"texture":"#0"},"west":{"uv":[7.25,10.375,7.375,10.625],"texture":"#0"},"up":{"uv":[7.25,10.375,7.125,10.25],"texture":"#0"},"down":{"uv":[7.375,10.25,7.25,10.375],"texture":"#0"}}},{"from":[12,9,5.875],"to":[13,11,6.875],"faces":{"north":{"uv":[10.375,7,10.5,7.25],"texture":"#0"},"east":{"uv":[10.25,7,10.375,7.25],"texture":"#0"},"south":{"uv":[10.625,7,10.75,7.25],"texture":"#0"},"west":{"uv":[10.5,7,10.625,7.25],"texture":"#0"},"up":{"uv":[10.5,7,10.375,6.875],"texture":"#0"},"down":{"uv":[10.625,6.875,10.5,7],"texture":"#0"}}},{"from":[9,4,5.875],"to":[10,6,6.875],"faces":{"north":{"uv":[10.375,6.5,10.5,6.75],"texture":"#0"},"east":{"uv":[10.25,6.5,10.375,6.75],"texture":"#0"},"south":{"uv":[10.625,6.5,10.75,6.75],"texture":"#0"},"west":{"uv":[10.5,6.5,10.625,6.75],"texture":"#0"},"up":{"uv":[10.5,6.5,10.375,6.375],"texture":"#0"},"down":{"uv":[10.625,6.375,10.5,6.5],"texture":"#0"}}},{"from":[9,14,5.875],"to":[10,16,6.875],"faces":{"north":{"uv":[6.5,10.375,6.625,10.625],"texture":"#0"},"east":{"uv":[6.375,10.375,6.5,10.625],"texture":"#0"},"south":{"uv":[6.75,10.375,6.875,10.625],"texture":"#0"},"west":{"uv":[6.625,10.375,6.75,10.625],"texture":"#0"},"up":{"uv":[6.625,10.375,6.5,10.25],"texture":"#0"},"down":{"uv":[6.75,10.25,6.625,10.375],"texture":"#0"}}},{"from":[9,9,5.875],"to":[10,11,6.875],"faces":{"north":{"uv":[10.375,6,10.5,6.25],"texture":"#0"},"east":{"uv":[10.25,6,10.375,6.25],"texture":"#0"},"south":{"uv":[10.625,6,10.75,6.25],"texture":"#0"},"west":{"uv":[10.5,6,10.625,6.25],"texture":"#0"},"up":{"uv":[10.5,6,10.375,5.875],"texture":"#0"},"down":{"uv":[10.625,5.875,10.5,6],"texture":"#0"}}},{"from":[6,4,5.875],"to":[7,6,6.875],"faces":{"north":{"uv":[5.875,10.375,6,10.625],"texture":"#0"},"east":{"uv":[5.75,10.375,5.875,10.625],"texture":"#0"},"south":{"uv":[6.125,10.375,6.25,10.625],"texture":"#0"},"west":{"uv":[6,10.375,6.125,10.625],"texture":"#0"},"up":{"uv":[6,10.375,5.875,10.25],"texture":"#0"},"down":{"uv":[6.125,10.25,6,10.375],"texture":"#0"}}},{"from":[6,14,5.875],"to":[7,16,6.875],"faces":{"north":{"uv":[10.375,5.5,10.5,5.75],"texture":"#0"},"east":{"uv":[10.25,5.5,10.375,5.75],"texture":"#0"},"south":{"uv":[10.625,5.5,10.75,5.75],"texture":"#0"},"west":{"uv":[10.5,5.5,10.625,5.75],"texture":"#0"},"up":{"uv":[10.5,5.5,10.375,5.375],"texture":"#0"},"down":{"uv":[10.625,5.375,10.5,5.5],"texture":"#0"}}},{"from":[3,9,5.875],"to":[4,11,6.875],"faces":{"north":{"uv":[5.25,10.375,5.375,10.625],"texture":"#0"},"east":{"uv":[5.125,10.375,5.25,10.625],"texture":"#0"},"south":{"uv":[5.5,10.375,5.625,10.625],"texture":"#0"},"west":{"uv":[5.375,10.375,5.5,10.625],"texture":"#0"},"up":{"uv":[5.375,10.375,5.25,10.25],"texture":"#0"},"down":{"uv":[5.5,10.25,5.375,10.375],"texture":"#0"}}},{"from":[6,9,5.875],"to":[7,11,6.875],"faces":{"north":{"uv":[10.375,5,10.5,5.25],"texture":"#0"},"east":{"uv":[10.25,5,10.375,5.25],"texture":"#0"},"south":{"uv":[10.625,5,10.75,5.25],"texture":"#0"},"west":{"uv":[10.5,5,10.625,5.25],"texture":"#0"},"up":{"uv":[10.5,5,10.375,4.875],"texture":"#0"},"down":{"uv":[10.625,4.875,10.5,5],"texture":"#0"}}}, - {"from":[1,4,5.875],"to":[3,16,6.875],"faces":{"north":{"uv":[7.125,0.125,7.375,1.625],"texture":"#0"},"east":{"uv":[7,0.125,7.125,1.625],"texture":"#0"},"south":{"uv":[7.5,0.125,7.75,1.625],"texture":"#0"},"west":{"uv":[7.375,0.125,7.5,1.625],"texture":"#0"},"up":{"uv":[7.375,0.125,7.125,0],"texture":"#0"},"down":{"uv":[7.625,0,7.375,0.125],"texture":"#0"}}},{"from":[4,4,5.875],"to":[6,16,6.875],"faces":{"north":{"uv":[6.875,4.625,7.125,6.125],"texture":"#0"},"east":{"uv":[6.75,4.625,6.875,6.125],"texture":"#0"},"south":{"uv":[7.25,4.625,7.5,6.125],"texture":"#0"},"west":{"uv":[7.125,4.625,7.25,6.125],"texture":"#0"},"up":{"uv":[7.125,4.625,6.875,4.5],"texture":"#0"},"down":{"uv":[7.375,4.5,7.125,4.625],"texture":"#0"}}},{"from":[7,4,5.875],"to":[9,16,6.875],"faces":{"north":{"uv":[6.75,2.5,7,4],"texture":"#0"},"east":{"uv":[6.625,2.5,6.75,4],"texture":"#0"},"south":{"uv":[7.125,2.5,7.375,4],"texture":"#0"},"west":{"uv":[7,2.5,7.125,4],"texture":"#0"},"up":{"uv":[7,2.5,6.75,2.375],"texture":"#0"},"down":{"uv":[7.25,2.375,7,2.5],"texture":"#0"}}},{"from":[10,4,5.875],"to":[12,16,6.875],"faces":{"north":{"uv":[6.25,6.375,6.5,7.875],"texture":"#0"},"east":{"uv":[6.125,6.375,6.25,7.875],"texture":"#0"},"south":{"uv":[6.625,6.375,6.875,7.875],"texture":"#0"},"west":{"uv":[6.5,6.375,6.625,7.875],"texture":"#0"},"up":{"uv":[6.5,6.375,6.25,6.25],"texture":"#0"},"down":{"uv":[6.75,6.25,6.5,6.375],"texture":"#0"}}},{"from":[13,4,5.875],"to":[15,16,6.875],"faces":{"north":{"uv":[5.375,6.375,5.625,7.875],"texture":"#0"},"east":{"uv":[5.25,6.375,5.375,7.875],"texture":"#0"},"south":{"uv":[5.75,6.375,6,7.875],"texture":"#0"},"west":{"uv":[5.625,6.375,5.75,7.875],"texture":"#0"},"up":{"uv":[5.625,6.375,5.375,6.25],"texture":"#0"},"down":{"uv":[5.875,6.25,5.625,6.375],"texture":"#0"}}},{"from":[3,4,5.875],"to":[4,6,6.875],"faces":{"north":{"uv":[4.625,10.375,4.75,10.625],"texture":"#0"},"east":{"uv":[4.5,10.375,4.625,10.625],"texture":"#0"},"south":{"uv":[4.875,10.375,5,10.625],"texture":"#0"},"west":{"uv":[4.75,10.375,4.875,10.625],"texture":"#0"},"up":{"uv":[4.75,10.375,4.625,10.25],"texture":"#0"},"down":{"uv":[4.875,10.25,4.75,10.375],"texture":"#0"}}},{"from":[3,14,5.875],"to":[4,16,6.875],"faces":{"north":{"uv":[4,10.375,4.125,10.625],"texture":"#0"},"east":{"uv":[3.875,10.375,4,10.625],"texture":"#0"},"south":{"uv":[4.25,10.375,4.375,10.625],"texture":"#0"},"west":{"uv":[4.125,10.375,4.25,10.625],"texture":"#0"},"up":{"uv":[4.125,10.375,4,10.25],"texture":"#0"},"down":{"uv":[4.25,10.25,4.125,10.375],"texture":"#0"}}},{"from":[12,4,9.125],"to":[13,6,10.125],"faces":{"north":{"uv":[3.375,10.375,3.5,10.625],"texture":"#0"},"east":{"uv":[3.25,10.375,3.375,10.625],"texture":"#0"},"south":{"uv":[3.625,10.375,3.75,10.625],"texture":"#0"},"west":{"uv":[3.5,10.375,3.625,10.625],"texture":"#0"},"up":{"uv":[3.5,10.375,3.375,10.25],"texture":"#0"},"down":{"uv":[3.625,10.25,3.5,10.375],"texture":"#0"}}},{"from":[12,14,9.125],"to":[13,16,10.125],"faces":{"north":{"uv":[2.75,10.375,2.875,10.625],"texture":"#0"},"east":{"uv":[2.625,10.375,2.75,10.625],"texture":"#0"},"south":{"uv":[3,10.375,3.125,10.625],"texture":"#0"},"west":{"uv":[2.875,10.375,3,10.625],"texture":"#0"},"up":{"uv":[2.875,10.375,2.75,10.25],"texture":"#0"},"down":{"uv":[3,10.25,2.875,10.375],"texture":"#0"}}},{"from":[12,9,9.125],"to":[13,11,10.125],"faces":{"north":{"uv":[10.375,0.625,10.5,0.875],"texture":"#0"},"east":{"uv":[10.25,0.625,10.375,0.875],"texture":"#0"},"south":{"uv":[10.625,0.625,10.75,0.875],"texture":"#0"},"west":{"uv":[10.5,0.625,10.625,0.875],"texture":"#0"},"up":{"uv":[10.5,0.625,10.375,0.5],"texture":"#0"},"down":{"uv":[10.625,0.5,10.5,0.625],"texture":"#0"}}},{"from":[9,4,9.125],"to":[10,6,10.125],"faces":{"north":{"uv":[10.375,0.125,10.5,0.375],"texture":"#0"},"east":{"uv":[10.25,0.125,10.375,0.375],"texture":"#0"},"south":{"uv":[10.625,0.125,10.75,0.375],"texture":"#0"},"west":{"uv":[10.5,0.125,10.625,0.375],"texture":"#0"},"up":{"uv":[10.5,0.125,10.375,0],"texture":"#0"},"down":{"uv":[10.625,0,10.5,0.125],"texture":"#0"}}},{"from":[9,14,9.125],"to":[10,16,10.125],"faces":{"north":{"uv":[10.25,3,10.375,3.25],"texture":"#0"},"east":{"uv":[10.125,3,10.25,3.25],"texture":"#0"},"south":{"uv":[10.5,3,10.625,3.25],"texture":"#0"},"west":{"uv":[10.375,3,10.5,3.25],"texture":"#0"},"up":{"uv":[10.375,3,10.25,2.875],"texture":"#0"},"down":{"uv":[10.5,2.875,10.375,3],"texture":"#0"}}}, - {"from":[9,9,9.125],"to":[10,11,10.125],"faces":{"north":{"uv":[10.25,2.5,10.375,2.75],"texture":"#0"},"east":{"uv":[10.125,2.5,10.25,2.75],"texture":"#0"},"south":{"uv":[10.5,2.5,10.625,2.75],"texture":"#0"},"west":{"uv":[10.375,2.5,10.5,2.75],"texture":"#0"},"up":{"uv":[10.375,2.5,10.25,2.375],"texture":"#0"},"down":{"uv":[10.5,2.375,10.375,2.5],"texture":"#0"}}},{"from":[6,4,9.125],"to":[7,6,10.125],"faces":{"north":{"uv":[10.25,2,10.375,2.25],"texture":"#0"},"east":{"uv":[10.125,2,10.25,2.25],"texture":"#0"},"south":{"uv":[10.5,2,10.625,2.25],"texture":"#0"},"west":{"uv":[10.375,2,10.5,2.25],"texture":"#0"},"up":{"uv":[10.375,2,10.25,1.875],"texture":"#0"},"down":{"uv":[10.5,1.875,10.375,2],"texture":"#0"}}},{"from":[6,14,9.125],"to":[7,16,10.125],"faces":{"north":{"uv":[10.25,1.5,10.375,1.75],"texture":"#0"},"east":{"uv":[10.125,1.5,10.25,1.75],"texture":"#0"},"south":{"uv":[10.5,1.5,10.625,1.75],"texture":"#0"},"west":{"uv":[10.375,1.5,10.5,1.75],"texture":"#0"},"up":{"uv":[10.375,1.5,10.25,1.375],"texture":"#0"},"down":{"uv":[10.5,1.375,10.375,1.5],"texture":"#0"}}},{"from":[3,9,9.125],"to":[4,11,10.125],"faces":{"north":{"uv":[9.75,10.125,9.875,10.375],"texture":"#0"},"east":{"uv":[9.625,10.125,9.75,10.375],"texture":"#0"},"south":{"uv":[10,10.125,10.125,10.375],"texture":"#0"},"west":{"uv":[9.875,10.125,10,10.375],"texture":"#0"},"up":{"uv":[9.875,10.125,9.75,10],"texture":"#0"},"down":{"uv":[10,10,9.875,10.125],"texture":"#0"}}},{"from":[6,9,9.125],"to":[7,11,10.125],"faces":{"north":{"uv":[10.125,4.5,10.25,4.75],"texture":"#0"},"east":{"uv":[10,4.5,10.125,4.75],"texture":"#0"},"south":{"uv":[10.375,4.5,10.5,4.75],"texture":"#0"},"west":{"uv":[10.25,4.5,10.375,4.75],"texture":"#0"},"up":{"uv":[10.25,4.5,10.125,4.375],"texture":"#0"},"down":{"uv":[10.375,4.375,10.25,4.5],"texture":"#0"}}},{"from":[1,4,9.125],"to":[3,16,10.125],"faces":{"north":{"uv":[4.5,6.375,4.75,7.875],"texture":"#0"},"east":{"uv":[4.375,6.375,4.5,7.875],"texture":"#0"},"south":{"uv":[4.875,6.375,5.125,7.875],"texture":"#0"},"west":{"uv":[4.75,6.375,4.875,7.875],"texture":"#0"},"up":{"uv":[4.75,6.375,4.5,6.25],"texture":"#0"},"down":{"uv":[5,6.25,4.75,6.375],"texture":"#0"}}},{"from":[4,4,9.125],"to":[6,16,10.125],"faces":{"north":{"uv":[3.625,6.375,3.875,7.875],"texture":"#0"},"east":{"uv":[3.5,6.375,3.625,7.875],"texture":"#0"},"south":{"uv":[4,6.375,4.25,7.875],"texture":"#0"},"west":{"uv":[3.875,6.375,4,7.875],"texture":"#0"},"up":{"uv":[3.875,6.375,3.625,6.25],"texture":"#0"},"down":{"uv":[4.125,6.25,3.875,6.375],"texture":"#0"}}},{"from":[7,4,9.125],"to":[9,16,10.125],"faces":{"north":{"uv":[6.25,0.125,6.5,1.625],"texture":"#0"},"east":{"uv":[6.125,0.125,6.25,1.625],"texture":"#0"},"south":{"uv":[6.625,0.125,6.875,1.625],"texture":"#0"},"west":{"uv":[6.5,0.125,6.625,1.625],"texture":"#0"},"up":{"uv":[6.5,0.125,6.25,0],"texture":"#0"},"down":{"uv":[6.75,0,6.5,0.125],"texture":"#0"}}},{"from":[10,4,9.125],"to":[12,16,10.125],"faces":{"north":{"uv":[6,4.625,6.25,6.125],"texture":"#0"},"east":{"uv":[5.875,4.625,6,6.125],"texture":"#0"},"south":{"uv":[6.375,4.625,6.625,6.125],"texture":"#0"},"west":{"uv":[6.25,4.625,6.375,6.125],"texture":"#0"},"up":{"uv":[6.25,4.625,6,4.5],"texture":"#0"},"down":{"uv":[6.5,4.5,6.25,4.625],"texture":"#0"}}},{"from":[13,4,9.125],"to":[15,16,10.125],"faces":{"north":{"uv":[2.75,5.875,3,7.375],"texture":"#0"},"east":{"uv":[2.625,5.875,2.75,7.375],"texture":"#0"},"south":{"uv":[3.125,5.875,3.375,7.375],"texture":"#0"},"west":{"uv":[3,5.875,3.125,7.375],"texture":"#0"},"up":{"uv":[3,5.875,2.75,5.75],"texture":"#0"},"down":{"uv":[3.25,5.75,3,5.875],"texture":"#0"}}},{"from":[3,4,9.125],"to":[4,6,10.125],"faces":{"north":{"uv":[10.125,4,10.25,4.25],"texture":"#0"},"east":{"uv":[10,4,10.125,4.25],"texture":"#0"},"south":{"uv":[10.375,4,10.5,4.25],"texture":"#0"},"west":{"uv":[10.25,4,10.375,4.25],"texture":"#0"},"up":{"uv":[10.25,4,10.125,3.875],"texture":"#0"},"down":{"uv":[10.375,3.875,10.25,4],"texture":"#0"}}},{"from":[3,14,9.125],"to":[4,16,10.125],"faces":{"north":{"uv":[10.125,3.5,10.25,3.75],"texture":"#0"},"east":{"uv":[10,3.5,10.125,3.75],"texture":"#0"},"south":{"uv":[10.375,3.5,10.5,3.75],"texture":"#0"},"west":{"uv":[10.25,3.5,10.375,3.75],"texture":"#0"},"up":{"uv":[10.25,3.5,10.125,3.375],"texture":"#0"},"down":{"uv":[10.375,3.375,10.25,3.5],"texture":"#0"}}}, - {"from":[12,4,10.75],"to":[13,6,11.75],"faces":{"north":{"uv":[7.75,10,7.875,10.25],"texture":"#0"},"east":{"uv":[7.625,10,7.75,10.25],"texture":"#0"},"south":{"uv":[8,10,8.125,10.25],"texture":"#0"},"west":{"uv":[7.875,10,8,10.25],"texture":"#0"},"up":{"uv":[7.875,10,7.75,9.875],"texture":"#0"},"down":{"uv":[8,9.875,7.875,10],"texture":"#0"}}},{"from":[12,14,10.75],"to":[13,16,11.75],"faces":{"north":{"uv":[7.125,9.875,7.25,10.125],"texture":"#0"},"east":{"uv":[7,9.875,7.125,10.125],"texture":"#0"},"south":{"uv":[7.375,9.875,7.5,10.125],"texture":"#0"},"west":{"uv":[7.25,9.875,7.375,10.125],"texture":"#0"},"up":{"uv":[7.25,9.875,7.125,9.75],"texture":"#0"},"down":{"uv":[7.375,9.75,7.25,9.875],"texture":"#0"}}},{"from":[12,9,10.75],"to":[13,11,11.75],"faces":{"north":{"uv":[6.5,9.875,6.625,10.125],"texture":"#0"},"east":{"uv":[6.375,9.875,6.5,10.125],"texture":"#0"},"south":{"uv":[6.75,9.875,6.875,10.125],"texture":"#0"},"west":{"uv":[6.625,9.875,6.75,10.125],"texture":"#0"},"up":{"uv":[6.625,9.875,6.5,9.75],"texture":"#0"},"down":{"uv":[6.75,9.75,6.625,9.875],"texture":"#0"}}},{"from":[9,4,10.75],"to":[10,6,11.75],"faces":{"north":{"uv":[5.875,9.875,6,10.125],"texture":"#0"},"east":{"uv":[5.75,9.875,5.875,10.125],"texture":"#0"},"south":{"uv":[6.125,9.875,6.25,10.125],"texture":"#0"},"west":{"uv":[6,9.875,6.125,10.125],"texture":"#0"},"up":{"uv":[6,9.875,5.875,9.75],"texture":"#0"},"down":{"uv":[6.125,9.75,6,9.875],"texture":"#0"}}},{"from":[9,14,10.75],"to":[10,16,11.75],"faces":{"north":{"uv":[5.25,9.875,5.375,10.125],"texture":"#0"},"east":{"uv":[5.125,9.875,5.25,10.125],"texture":"#0"},"south":{"uv":[5.5,9.875,5.625,10.125],"texture":"#0"},"west":{"uv":[5.375,9.875,5.5,10.125],"texture":"#0"},"up":{"uv":[5.375,9.875,5.25,9.75],"texture":"#0"},"down":{"uv":[5.5,9.75,5.375,9.875],"texture":"#0"}}},{"from":[9,9,10.75],"to":[10,11,11.75],"faces":{"north":{"uv":[4.625,9.875,4.75,10.125],"texture":"#0"},"east":{"uv":[4.5,9.875,4.625,10.125],"texture":"#0"},"south":{"uv":[4.875,9.875,5,10.125],"texture":"#0"},"west":{"uv":[4.75,9.875,4.875,10.125],"texture":"#0"},"up":{"uv":[4.75,9.875,4.625,9.75],"texture":"#0"},"down":{"uv":[4.875,9.75,4.75,9.875],"texture":"#0"}}},{"from":[6,4,10.75],"to":[7,6,11.75],"faces":{"north":{"uv":[4,9.875,4.125,10.125],"texture":"#0"},"east":{"uv":[3.875,9.875,4,10.125],"texture":"#0"},"south":{"uv":[4.25,9.875,4.375,10.125],"texture":"#0"},"west":{"uv":[4.125,9.875,4.25,10.125],"texture":"#0"},"up":{"uv":[4.125,9.875,4,9.75],"texture":"#0"},"down":{"uv":[4.25,9.75,4.125,9.875],"texture":"#0"}}},{"from":[6,14,10.75],"to":[7,16,11.75],"faces":{"north":{"uv":[3.375,9.875,3.5,10.125],"texture":"#0"},"east":{"uv":[3.25,9.875,3.375,10.125],"texture":"#0"},"south":{"uv":[3.625,9.875,3.75,10.125],"texture":"#0"},"west":{"uv":[3.5,9.875,3.625,10.125],"texture":"#0"},"up":{"uv":[3.5,9.875,3.375,9.75],"texture":"#0"},"down":{"uv":[3.625,9.75,3.5,9.875],"texture":"#0"}}},{"from":[3,9,10.75],"to":[4,11,11.75],"faces":{"north":{"uv":[2.75,9.875,2.875,10.125],"texture":"#0"},"east":{"uv":[2.625,9.875,2.75,10.125],"texture":"#0"},"south":{"uv":[3,9.875,3.125,10.125],"texture":"#0"},"west":{"uv":[2.875,9.875,3,10.125],"texture":"#0"},"up":{"uv":[2.875,9.875,2.75,9.75],"texture":"#0"},"down":{"uv":[3,9.75,2.875,9.875],"texture":"#0"}}},{"from":[6,9,10.75],"to":[7,11,11.75],"faces":{"north":{"uv":[9.75,9.625,9.875,9.875],"texture":"#0"},"east":{"uv":[9.625,9.625,9.75,9.875],"texture":"#0"},"south":{"uv":[10,9.625,10.125,9.875],"texture":"#0"},"west":{"uv":[9.875,9.625,10,9.875],"texture":"#0"},"up":{"uv":[9.875,9.625,9.75,9.5],"texture":"#0"},"down":{"uv":[10,9.5,9.875,9.625],"texture":"#0"}}},{"from":[1,4,10.75],"to":[3,16,11.75],"faces":{"north":{"uv":[5.875,2.5,6.125,4],"texture":"#0"},"east":{"uv":[5.75,2.5,5.875,4],"texture":"#0"},"south":{"uv":[6.25,2.5,6.5,4],"texture":"#0"},"west":{"uv":[6.125,2.5,6.25,4],"texture":"#0"},"up":{"uv":[6.125,2.5,5.875,2.375],"texture":"#0"},"down":{"uv":[6.375,2.375,6.125,2.5],"texture":"#0"}}},{"from":[4,4,10.75],"to":[6,16,11.75],"faces":{"north":{"uv":[1.875,5.875,2.125,7.375],"texture":"#0"},"east":{"uv":[1.75,5.875,1.875,7.375],"texture":"#0"},"south":{"uv":[2.25,5.875,2.5,7.375],"texture":"#0"},"west":{"uv":[2.125,5.875,2.25,7.375],"texture":"#0"},"up":{"uv":[2.125,5.875,1.875,5.75],"texture":"#0"},"down":{"uv":[2.375,5.75,2.125,5.875],"texture":"#0"}}}, - {"from":[7,4,10.75],"to":[9,16,11.75],"faces":{"north":{"uv":[1,5.875,1.25,7.375],"texture":"#0"},"east":{"uv":[0.875,5.875,1,7.375],"texture":"#0"},"south":{"uv":[1.375,5.875,1.625,7.375],"texture":"#0"},"west":{"uv":[1.25,5.875,1.375,7.375],"texture":"#0"},"up":{"uv":[1.25,5.875,1,5.75],"texture":"#0"},"down":{"uv":[1.5,5.75,1.25,5.875],"texture":"#0"}}},{"from":[10,4,10.75],"to":[12,16,11.75],"faces":{"north":{"uv":[0.125,5.875,0.375,7.375],"texture":"#0"},"east":{"uv":[0,5.875,0.125,7.375],"texture":"#0"},"south":{"uv":[0.5,5.875,0.75,7.375],"texture":"#0"},"west":{"uv":[0.375,5.875,0.5,7.375],"texture":"#0"},"up":{"uv":[0.375,5.875,0.125,5.75],"texture":"#0"},"down":{"uv":[0.625,5.75,0.375,5.875],"texture":"#0"}}},{"from":[13,4,10.75],"to":[15,16,11.75],"faces":{"north":{"uv":[5.125,4.625,5.375,6.125],"texture":"#0"},"east":{"uv":[5,4.625,5.125,6.125],"texture":"#0"},"south":{"uv":[5.5,4.625,5.75,6.125],"texture":"#0"},"west":{"uv":[5.375,4.625,5.5,6.125],"texture":"#0"},"up":{"uv":[5.375,4.625,5.125,4.5],"texture":"#0"},"down":{"uv":[5.625,4.5,5.375,4.625],"texture":"#0"}}},{"from":[3,4,10.75],"to":[4,6,11.75],"faces":{"north":{"uv":[9.75,9.125,9.875,9.375],"texture":"#0"},"east":{"uv":[9.625,9.125,9.75,9.375],"texture":"#0"},"south":{"uv":[10,9.125,10.125,9.375],"texture":"#0"},"west":{"uv":[9.875,9.125,10,9.375],"texture":"#0"},"up":{"uv":[9.875,9.125,9.75,9],"texture":"#0"},"down":{"uv":[10,9,9.875,9.125],"texture":"#0"}}},{"from":[3,14,10.75],"to":[4,16,11.75],"faces":{"north":{"uv":[9.75,8.625,9.875,8.875],"texture":"#0"},"east":{"uv":[9.625,8.625,9.75,8.875],"texture":"#0"},"south":{"uv":[10,8.625,10.125,8.875],"texture":"#0"},"west":{"uv":[9.875,8.625,10,8.875],"texture":"#0"},"up":{"uv":[9.875,8.625,9.75,8.5],"texture":"#0"},"down":{"uv":[10,8.5,9.875,8.625],"texture":"#0"}}},{"from":[12,4,12.375],"to":[13,6,13.375],"faces":{"north":{"uv":[9.75,8.125,9.875,8.375],"texture":"#0"},"east":{"uv":[9.625,8.125,9.75,8.375],"texture":"#0"},"south":{"uv":[10,8.125,10.125,8.375],"texture":"#0"},"west":{"uv":[9.875,8.125,10,8.375],"texture":"#0"},"up":{"uv":[9.875,8.125,9.75,8],"texture":"#0"},"down":{"uv":[10,8,9.875,8.125],"texture":"#0"}}},{"from":[12,14,12.375],"to":[13,16,13.375],"faces":{"north":{"uv":[9.75,7.625,9.875,7.875],"texture":"#0"},"east":{"uv":[9.625,7.625,9.75,7.875],"texture":"#0"},"south":{"uv":[10,7.625,10.125,7.875],"texture":"#0"},"west":{"uv":[9.875,7.625,10,7.875],"texture":"#0"},"up":{"uv":[9.875,7.625,9.75,7.5],"texture":"#0"},"down":{"uv":[10,7.5,9.875,7.625],"texture":"#0"}}},{"from":[12,9,12.375],"to":[13,11,13.375],"faces":{"north":{"uv":[9.75,7.125,9.875,7.375],"texture":"#0"},"east":{"uv":[9.625,7.125,9.75,7.375],"texture":"#0"},"south":{"uv":[10,7.125,10.125,7.375],"texture":"#0"},"west":{"uv":[9.875,7.125,10,7.375],"texture":"#0"},"up":{"uv":[9.875,7.125,9.75,7],"texture":"#0"},"down":{"uv":[10,7,9.875,7.125],"texture":"#0"}}},{"from":[9,4,12.375],"to":[10,6,13.375],"faces":{"north":{"uv":[9.75,6.625,9.875,6.875],"texture":"#0"},"east":{"uv":[9.625,6.625,9.75,6.875],"texture":"#0"},"south":{"uv":[10,6.625,10.125,6.875],"texture":"#0"},"west":{"uv":[9.875,6.625,10,6.875],"texture":"#0"},"up":{"uv":[9.875,6.625,9.75,6.5],"texture":"#0"},"down":{"uv":[10,6.5,9.875,6.625],"texture":"#0"}}},{"from":[9,14,12.375],"to":[10,16,13.375],"faces":{"north":{"uv":[9.75,6.125,9.875,6.375],"texture":"#0"},"east":{"uv":[9.625,6.125,9.75,6.375],"texture":"#0"},"south":{"uv":[10,6.125,10.125,6.375],"texture":"#0"},"west":{"uv":[9.875,6.125,10,6.375],"texture":"#0"},"up":{"uv":[9.875,6.125,9.75,6],"texture":"#0"},"down":{"uv":[10,6,9.875,6.125],"texture":"#0"}}},{"from":[9,9,12.375],"to":[10,11,13.375],"faces":{"north":{"uv":[9.75,5.625,9.875,5.875],"texture":"#0"},"east":{"uv":[9.625,5.625,9.75,5.875],"texture":"#0"},"south":{"uv":[10,5.625,10.125,5.875],"texture":"#0"},"west":{"uv":[9.875,5.625,10,5.875],"texture":"#0"},"up":{"uv":[9.875,5.625,9.75,5.5],"texture":"#0"},"down":{"uv":[10,5.5,9.875,5.625],"texture":"#0"}}},{"from":[6,4,12.375],"to":[7,6,13.375],"faces":{"north":{"uv":[9.75,5.125,9.875,5.375],"texture":"#0"},"east":{"uv":[9.625,5.125,9.75,5.375],"texture":"#0"},"south":{"uv":[10,5.125,10.125,5.375],"texture":"#0"},"west":{"uv":[9.875,5.125,10,5.375],"texture":"#0"},"up":{"uv":[9.875,5.125,9.75,5],"texture":"#0"},"down":{"uv":[10,5,9.875,5.125],"texture":"#0"}}}, - {"from":[6,14,12.375],"to":[7,16,13.375],"faces":{"north":{"uv":[9.75,1.125,9.875,1.375],"texture":"#0"},"east":{"uv":[9.625,1.125,9.75,1.375],"texture":"#0"},"south":{"uv":[10,1.125,10.125,1.375],"texture":"#0"},"west":{"uv":[9.875,1.125,10,1.375],"texture":"#0"},"up":{"uv":[9.875,1.125,9.75,1],"texture":"#0"},"down":{"uv":[10,1,9.875,1.125],"texture":"#0"}}},{"from":[3,9,12.375],"to":[4,11,13.375],"faces":{"north":{"uv":[9.75,0.625,9.875,0.875],"texture":"#0"},"east":{"uv":[9.625,0.625,9.75,0.875],"texture":"#0"},"south":{"uv":[10,0.625,10.125,0.875],"texture":"#0"},"west":{"uv":[9.875,0.625,10,0.875],"texture":"#0"},"up":{"uv":[9.875,0.625,9.75,0.5],"texture":"#0"},"down":{"uv":[10,0.5,9.875,0.625],"texture":"#0"}}},{"from":[6,9,12.375],"to":[7,11,13.375],"faces":{"north":{"uv":[9.75,0.125,9.875,0.375],"texture":"#0"},"east":{"uv":[9.625,0.125,9.75,0.375],"texture":"#0"},"south":{"uv":[10,0.125,10.125,0.375],"texture":"#0"},"west":{"uv":[9.875,0.125,10,0.375],"texture":"#0"},"up":{"uv":[9.875,0.125,9.75,0],"texture":"#0"},"down":{"uv":[10,0,9.875,0.125],"texture":"#0"}}},{"from":[1,4,12.375],"to":[3,16,13.375],"faces":{"north":{"uv":[4.25,4.625,4.5,6.125],"texture":"#0"},"east":{"uv":[4.125,4.625,4.25,6.125],"texture":"#0"},"south":{"uv":[4.625,4.625,4.875,6.125],"texture":"#0"},"west":{"uv":[4.5,4.625,4.625,6.125],"texture":"#0"},"up":{"uv":[4.5,4.625,4.25,4.5],"texture":"#0"},"down":{"uv":[4.75,4.5,4.5,4.625],"texture":"#0"}}},{"from":[4,4,12.375],"to":[6,16,13.375],"faces":{"north":{"uv":[1,2.5,1.25,4],"texture":"#0"},"east":{"uv":[0.875,2.5,1,4],"texture":"#0"},"south":{"uv":[1.375,2.5,1.625,4],"texture":"#0"},"west":{"uv":[1.25,2.5,1.375,4],"texture":"#0"},"up":{"uv":[1.25,2.5,1,2.375],"texture":"#0"},"down":{"uv":[1.5,2.375,1.25,2.5],"texture":"#0"}}},{"from":[7,4,12.375],"to":[9,16,13.375],"faces":{"north":{"uv":[0.125,2.5,0.375,4],"texture":"#0"},"east":{"uv":[0,2.5,0.125,4],"texture":"#0"},"south":{"uv":[0.5,2.5,0.75,4],"texture":"#0"},"west":{"uv":[0.375,2.5,0.5,4],"texture":"#0"},"up":{"uv":[0.375,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.625,2.375,0.375,2.5],"texture":"#0"}}},{"from":[10,4,12.375],"to":[12,16,13.375],"faces":{"north":{"uv":[1,0.125,1.25,1.625],"texture":"#0"},"east":{"uv":[0.875,0.125,1,1.625],"texture":"#0"},"south":{"uv":[1.375,0.125,1.625,1.625],"texture":"#0"},"west":{"uv":[1.25,0.125,1.375,1.625],"texture":"#0"},"up":{"uv":[1.25,0.125,1,0],"texture":"#0"},"down":{"uv":[1.5,0,1.25,0.125],"texture":"#0"}}},{"from":[13,4,12.375],"to":[15,16,13.375],"faces":{"north":{"uv":[0.125,0.125,0.375,1.625],"texture":"#0"},"east":{"uv":[0,0.125,0.125,1.625],"texture":"#0"},"south":{"uv":[0.5,0.125,0.75,1.625],"texture":"#0"},"west":{"uv":[0.375,0.125,0.5,1.625],"texture":"#0"},"up":{"uv":[0.375,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.625,0,0.375,0.125],"texture":"#0"}}},{"from":[3,4,12.375],"to":[4,6,13.375],"faces":{"north":{"uv":[8,9.5,8.125,9.75],"texture":"#0"},"east":{"uv":[7.875,9.5,8,9.75],"texture":"#0"},"south":{"uv":[8.25,9.5,8.375,9.75],"texture":"#0"},"west":{"uv":[8.125,9.5,8.25,9.75],"texture":"#0"},"up":{"uv":[8.125,9.5,8,9.375],"texture":"#0"},"down":{"uv":[8.25,9.375,8.125,9.5],"texture":"#0"}}},{"from":[3,14,12.375],"to":[4,16,13.375],"faces":{"north":{"uv":[9.5,4.625,9.625,4.875],"texture":"#0"},"east":{"uv":[9.375,4.625,9.5,4.875],"texture":"#0"},"south":{"uv":[9.75,4.625,9.875,4.875],"texture":"#0"},"west":{"uv":[9.625,4.625,9.75,4.875],"texture":"#0"},"up":{"uv":[9.625,4.625,9.5,4.5],"texture":"#0"},"down":{"uv":[9.75,4.5,9.625,4.625],"texture":"#0"}}},{"from":[0.5,3,0.5],"to":[15.5,4,15.5],"faces":{"north":{"uv":[1.875,4.25,3.75,4.375],"texture":"#0"},"east":{"uv":[0,4.25,1.875,4.375],"texture":"#0"},"south":{"uv":[5.625,4.25,7.5,4.375],"texture":"#0"},"west":{"uv":[3.75,4.25,5.625,4.375],"texture":"#0"},"up":{"uv":[3.75,4.25,1.875,2.375],"texture":"#0"},"down":{"uv":[5.625,2.375,3.75,4.25],"texture":"#0"}}},{"from":[4,0,4],"to":[12,1,12],"faces":{"north":{"uv":[1,5.5,2,5.625],"texture":"#0"},"east":{"uv":[0,5.5,1,5.625],"texture":"#0"},"south":{"uv":[3,5.5,4,5.625],"texture":"#0"},"west":{"uv":[2,5.5,3,5.625],"texture":"#0"},"up":{"uv":[2,5.5,1,4.5],"texture":"#0"},"down":{"uv":[3,4.5,2,5.5],"texture":"#0"}}}, - {"from":[6,-2,4],"to":[7,0,5],"faces":{"north":{"uv":[9.5,4.125,9.625,4.375],"texture":"#0"},"east":{"uv":[9.375,4.125,9.5,4.375],"texture":"#0"},"south":{"uv":[9.75,4.125,9.875,4.375],"texture":"#0"},"west":{"uv":[9.625,4.125,9.75,4.375],"texture":"#0"},"up":{"uv":[9.625,4.125,9.5,4],"texture":"#0"},"down":{"uv":[9.75,4,9.625,4.125],"texture":"#0"}}},{"from":[9,-2,4],"to":[10,0,5],"faces":{"north":{"uv":[9.5,3.625,9.625,3.875],"texture":"#0"},"east":{"uv":[9.375,3.625,9.5,3.875],"texture":"#0"},"south":{"uv":[9.75,3.625,9.875,3.875],"texture":"#0"},"west":{"uv":[9.625,3.625,9.75,3.875],"texture":"#0"},"up":{"uv":[9.625,3.625,9.5,3.5],"texture":"#0"},"down":{"uv":[9.75,3.5,9.625,3.625],"texture":"#0"}}},{"from":[9,-2,11],"to":[10,0,12],"faces":{"north":{"uv":[2.75,9.375,2.875,9.625],"texture":"#0"},"east":{"uv":[2.625,9.375,2.75,9.625],"texture":"#0"},"south":{"uv":[3,9.375,3.125,9.625],"texture":"#0"},"west":{"uv":[2.875,9.375,3,9.625],"texture":"#0"},"up":{"uv":[2.875,9.375,2.75,9.25],"texture":"#0"},"down":{"uv":[3,9.25,2.875,9.375],"texture":"#0"}}},{"from":[6,-2,11],"to":[7,0,12],"faces":{"north":{"uv":[3.625,5.875,3.75,6.125],"texture":"#0"},"east":{"uv":[3.5,5.875,3.625,6.125],"texture":"#0"},"south":{"uv":[3.875,5.875,4,6.125],"texture":"#0"},"west":{"uv":[3.75,5.875,3.875,6.125],"texture":"#0"},"up":{"uv":[3.75,5.875,3.625,5.75],"texture":"#0"},"down":{"uv":[3.875,5.75,3.75,5.875],"texture":"#0"}}},{"from":[4,-2,9],"to":[5,0,10],"faces":{"north":{"uv":[3.25,5.125,3.375,5.375],"texture":"#0"},"east":{"uv":[3.125,5.125,3.25,5.375],"texture":"#0"},"south":{"uv":[3.5,5.125,3.625,5.375],"texture":"#0"},"west":{"uv":[3.375,5.125,3.5,5.375],"texture":"#0"},"up":{"uv":[3.375,5.125,3.25,5],"texture":"#0"},"down":{"uv":[3.5,5,3.375,5.125],"texture":"#0"}}},{"from":[4,-2,6],"to":[5,0,7],"faces":{"north":{"uv":[0.125,5.125,0.25,5.375],"texture":"#0"},"east":{"uv":[0,5.125,0.125,5.375],"texture":"#0"},"south":{"uv":[0.375,5.125,0.5,5.375],"texture":"#0"},"west":{"uv":[0.25,5.125,0.375,5.375],"texture":"#0"},"up":{"uv":[0.25,5.125,0.125,5],"texture":"#0"},"down":{"uv":[0.375,5,0.25,5.125],"texture":"#0"}}},{"from":[11,-2,6],"to":[12,0,7],"faces":{"north":{"uv":[3.25,4.625,3.375,4.875],"texture":"#0"},"east":{"uv":[3.125,4.625,3.25,4.875],"texture":"#0"},"south":{"uv":[3.5,4.625,3.625,4.875],"texture":"#0"},"west":{"uv":[3.375,4.625,3.5,4.875],"texture":"#0"},"up":{"uv":[3.375,4.625,3.25,4.5],"texture":"#0"},"down":{"uv":[3.5,4.5,3.375,4.625],"texture":"#0"}}},{"from":[11,-2,9],"to":[12,0,10],"faces":{"north":{"uv":[0.125,4.625,0.25,4.875],"texture":"#0"},"east":{"uv":[0,4.625,0.125,4.875],"texture":"#0"},"south":{"uv":[0.375,4.625,0.5,4.875],"texture":"#0"},"west":{"uv":[0.25,4.625,0.375,4.875],"texture":"#0"},"up":{"uv":[0.25,4.625,0.125,4.5],"texture":"#0"},"down":{"uv":[0.375,4.5,0.25,4.625],"texture":"#0"}}} + "elements": [ + { + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 3, + 16 + ], + "faces": { + "north": { + "uv": [ + 2, + 2, + 4, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2, + 2, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 0, + 4, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 1 + ], + "to": [ + 13, + 6, + 2 + ], + "faces": { + "north": { + "uv": [ + 6.375, + 11.375, + 6.5, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.25, + 11.375, + 6.375, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 11.375, + 6.75, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 11.375, + 6.625, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 11.375, + 6.375, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.625, + 11.25, + 6.5, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 1 + ], + "to": [ + 13, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 11.375, + 5.875, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.625, + 11.375, + 5.75, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 11.375, + 6.125, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 11.375, + 6, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 11.375, + 5.75, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 11.25, + 5.875, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 1 + ], + "to": [ + 13, + 11, + 2 + ], + "faces": { + "north": { + "uv": [ + 5.125, + 11.375, + 5.25, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 11.375, + 5.125, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.375, + 11.375, + 5.5, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 11.375, + 5.375, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 11.375, + 5.125, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 11.25, + 5.25, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 1 + ], + "to": [ + 10, + 6, + 2 + ], + "faces": { + "north": { + "uv": [ + 4.5, + 11.375, + 4.625, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 11.375, + 4.5, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 11.375, + 4.875, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.625, + 11.375, + 4.75, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.625, + 11.375, + 4.5, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.75, + 11.25, + 4.625, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 1 + ], + "to": [ + 10, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 11.375, + 4, + 11.5, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.25, + 4, + 11.375, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.625, + 4, + 11.75, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 4, + 11.625, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 4, + 11.375, + 3.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.625, + 3.875, + 11.5, + 4 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 1 + ], + "to": [ + 10, + 11, + 2 + ], + "faces": { + "north": { + "uv": [ + 3.875, + 11.375, + 4, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 11.375, + 3.875, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 11.375, + 4.25, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 11.375, + 4.125, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 11.375, + 3.875, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 11.25, + 4, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 1 + ], + "to": [ + 7, + 6, + 2 + ], + "faces": { + "north": { + "uv": [ + 11.375, + 3.5, + 11.5, + 3.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.25, + 3.5, + 11.375, + 3.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.625, + 3.5, + 11.75, + 3.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 3.5, + 11.625, + 3.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 3.5, + 11.375, + 3.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.625, + 3.375, + 11.5, + 3.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 1 + ], + "to": [ + 7, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 11.375, + 3.375, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 11.375, + 3.25, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 11.375, + 3.625, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 11.375, + 3.5, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 11.375, + 3.25, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 11.25, + 3.375, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 1 + ], + "to": [ + 4, + 11, + 2 + ], + "faces": { + "north": { + "uv": [ + 11.375, + 3, + 11.5, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.25, + 3, + 11.375, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.625, + 3, + 11.75, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 3, + 11.625, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 3, + 11.375, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.625, + 2.875, + 11.5, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 1 + ], + "to": [ + 7, + 11, + 2 + ], + "faces": { + "north": { + "uv": [ + 2.625, + 11.375, + 2.75, + 11.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.5, + 11.375, + 2.625, + 11.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.875, + 11.375, + 3, + 11.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.75, + 11.375, + 2.875, + 11.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.75, + 11.375, + 2.625, + 11.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.875, + 11.25, + 2.75, + 11.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 1 + ], + "to": [ + 3, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 9.375, + 1.875, + 9.625, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.25, + 1.875, + 9.375, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 1.875, + 10, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.625, + 1.875, + 9.75, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.625, + 1.875, + 9.375, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.875, + 1.75, + 9.625, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 1 + ], + "to": [ + 6, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 9.375, + 2.125, + 10.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 9.375, + 1.875, + 10.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 9.375, + 2.5, + 10.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 9.375, + 2.25, + 10.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 9.375, + 1.875, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 9.25, + 2.125, + 9.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 1 + ], + "to": [ + 9, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1, + 9.375, + 1.25, + 10.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 9.375, + 1, + 10.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 9.375, + 1.625, + 10.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 9.375, + 1.375, + 10.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 9.375, + 1, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 9.25, + 1.25, + 9.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 1 + ], + "to": [ + 12, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 9.375, + 0.375, + 10.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 9.375, + 0.125, + 10.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 9.375, + 0.75, + 10.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 9.375, + 0.5, + 10.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 9.375, + 0.125, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 9.25, + 0.375, + 9.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 1 + ], + "to": [ + 15, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 8.875, + 9.125, + 10.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 8.875, + 8.875, + 10.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 8.875, + 9.5, + 10.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 8.875, + 9.25, + 10.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 8.875, + 8.875, + 8.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.375, + 8.75, + 9.125, + 8.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 1 + ], + "to": [ + 4, + 6, + 2 + ], + "faces": { + "north": { + "uv": [ + 11.375, + 1.125, + 11.5, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.25, + 1.125, + 11.375, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.625, + 1.125, + 11.75, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 1.125, + 11.625, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 1.125, + 11.375, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.625, + 1, + 11.5, + 1.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 1 + ], + "to": [ + 4, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 11.25, + 11.25, + 11.375, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.125, + 11.25, + 11.25, + 11.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.5, + 11.25, + 11.625, + 11.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.375, + 11.25, + 11.5, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.375, + 11.25, + 11.25, + 11.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.5, + 11.125, + 11.375, + 11.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 7.5 + ], + "to": [ + 13, + 6, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 11.25, + 7.875, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.625, + 11.25, + 7.75, + 11.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 11.25, + 8.125, + 11.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.875, + 11.25, + 8, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.875, + 11.25, + 7.75, + 11.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 11.125, + 7.875, + 11.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 7.5 + ], + "to": [ + 13, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 11.125, + 9, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 11.125, + 8.875, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.125, + 11.125, + 9.25, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9, + 11.125, + 9.125, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9, + 11.125, + 8.875, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.125, + 11, + 9, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 7.5 + ], + "to": [ + 13, + 11, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 11.125, + 7.25, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 11.125, + 7.125, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 11.125, + 7.5, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 11.125, + 7.375, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 11.125, + 7.125, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 11, + 7.25, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 7.5 + ], + "to": [ + 10, + 6, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 2, + 11.125, + 2.125, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 11.125, + 2, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 11.125, + 2.375, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 11.125, + 2.25, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 11.125, + 2, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.25, + 11, + 2.125, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 7.5 + ], + "to": [ + 10, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 1.375, + 11.125, + 1.5, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 11.125, + 1.375, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.625, + 11.125, + 1.75, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 11.125, + 1.625, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 11.125, + 1.375, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.625, + 11, + 1.5, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 7.5 + ], + "to": [ + 10, + 11, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 11.125, + 0.875, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 11.125, + 0.75, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 11.125, + 1.125, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 11.125, + 1, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 11.125, + 0.75, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 11, + 0.875, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 7.5 + ], + "to": [ + 7, + 6, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 11.125, + 0.25, + 11.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 11.125, + 0.125, + 11.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 11.125, + 0.5, + 11.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 11.125, + 0.375, + 11.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 11.125, + 0.125, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 11, + 0.25, + 11.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 7.5 + ], + "to": [ + 7, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 10, + 11, + 10.125, + 11.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.875, + 11, + 10, + 11.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.25, + 11, + 10.375, + 11.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.125, + 11, + 10.25, + 11.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.125, + 11, + 10, + 10.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.25, + 10.875, + 10.125, + 11 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 7.5 + ], + "to": [ + 4, + 11, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 11, + 9.875, + 11.125, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 9.875, + 11, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 9.875, + 11.375, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 9.875, + 11.25, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 9.875, + 11, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 9.75, + 11.125, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 7.5 + ], + "to": [ + 7, + 11, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 11, + 9.375, + 11.125, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 9.375, + 11, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 9.375, + 11.375, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 9.375, + 11.25, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 9.375, + 11, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 9.25, + 11.125, + 9.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 7.5 + ], + "to": [ + 3, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 7.125, + 9.125, + 8.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 7.125, + 8.875, + 8.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 7.125, + 9.5, + 8.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 7.125, + 9.25, + 8.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 7.125, + 8.875, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.375, + 7, + 9.125, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 7.5 + ], + "to": [ + 6, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 5.375, + 9.125, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 5.375, + 8.875, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 5.375, + 9.5, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 5.375, + 9.25, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 5.375, + 8.875, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.375, + 5.25, + 9.125, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 7.5 + ], + "to": [ + 9, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 0.125, + 9.125, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 0.125, + 8.875, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 0.125, + 9.5, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 0.125, + 9.25, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 0.125, + 8.875, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.375, + 0, + 9.125, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 7.5 + ], + "to": [ + 12, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.625, + 3.625, + 8.875, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.5, + 3.625, + 8.625, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 3.625, + 9.25, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.875, + 3.625, + 9, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.875, + 3.625, + 8.625, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.125, + 3.5, + 8.875, + 3.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 7.5 + ], + "to": [ + 15, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 8.5, + 1.875, + 8.75, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.375, + 1.875, + 8.5, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 1.875, + 9.125, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 1.875, + 8.875, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 1.875, + 8.5, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9, + 1.75, + 8.75, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 7.5 + ], + "to": [ + 4, + 6, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 11, + 8.875, + 11.125, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 8.875, + 11, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 8.875, + 11.375, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 8.875, + 11.25, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 8.875, + 11, + 8.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 8.75, + 11.125, + 8.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 7.5 + ], + "to": [ + 4, + 16, + 8.5 + ], + "faces": { + "north": { + "uv": [ + 11, + 8.375, + 11.125, + 8.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 8.375, + 11, + 8.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 8.375, + 11.375, + 8.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 8.375, + 11.25, + 8.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 8.375, + 11, + 8.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 8.25, + 11.125, + 8.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 14 + ], + "to": [ + 13, + 6, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 7.875, + 11.125, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 7.875, + 11, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 7.875, + 11.375, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 7.875, + 11.25, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 7.875, + 11, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 7.75, + 11.125, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 14 + ], + "to": [ + 13, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 7.375, + 11.125, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 7.375, + 11, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 7.375, + 11.375, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 7.375, + 11.25, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 7.375, + 11, + 7.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 7.25, + 11.125, + 7.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 14 + ], + "to": [ + 13, + 11, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 6.875, + 11.125, + 7.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 6.875, + 11, + 7.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 6.875, + 11.375, + 7.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 6.875, + 11.25, + 7.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 6.875, + 11, + 6.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 6.75, + 11.125, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 14 + ], + "to": [ + 10, + 6, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 6.375, + 11.125, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 6.375, + 11, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 6.375, + 11.375, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 6.375, + 11.25, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 6.375, + 11, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 6.25, + 11.125, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 14 + ], + "to": [ + 10, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 5.875, + 11.125, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 5.875, + 11, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 5.875, + 11.375, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 5.875, + 11.25, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 5.875, + 11, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 5.75, + 11.125, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 14 + ], + "to": [ + 10, + 11, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 5.375, + 11.125, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 5.375, + 11, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 5.375, + 11.375, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 5.375, + 11.25, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 5.375, + 11, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 5.25, + 11.125, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 14 + ], + "to": [ + 7, + 6, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 4.875, + 11.125, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 4.875, + 11, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 4.875, + 11.375, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 4.875, + 11.25, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 4.875, + 11, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 4.75, + 11.125, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 14 + ], + "to": [ + 7, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 0.625, + 11.125, + 0.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 0.625, + 11, + 0.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 0.625, + 11.375, + 0.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 0.625, + 11.25, + 0.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 0.625, + 11, + 0.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 0.5, + 11.125, + 0.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 14 + ], + "to": [ + 4, + 11, + 15 + ], + "faces": { + "north": { + "uv": [ + 11, + 0.125, + 11.125, + 0.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.875, + 0.125, + 11, + 0.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.25, + 0.125, + 11.375, + 0.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.125, + 0.125, + 11.25, + 0.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.125, + 0.125, + 11, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.25, + 0, + 11.125, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 14 + ], + "to": [ + 7, + 11, + 15 + ], + "faces": { + "north": { + "uv": [ + 10.75, + 10.875, + 10.875, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.625, + 10.875, + 10.75, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 10.875, + 11.125, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.875, + 10.875, + 11, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.875, + 10.875, + 10.75, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 10.75, + 10.875, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 14 + ], + "to": [ + 3, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 8.125, + 7.375, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 8.125, + 7.125, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 8.125, + 7.75, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 8.125, + 7.5, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 8.125, + 7.125, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 8, + 7.375, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 14 + ], + "to": [ + 6, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 8.125, + 6.5, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 8.125, + 6.25, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 8.125, + 6.875, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 8.125, + 6.625, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 8.125, + 6.25, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 8, + 6.5, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 14 + ], + "to": [ + 9, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 8.125, + 5.625, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 8.125, + 5.375, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.75, + 8.125, + 6, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.625, + 8.125, + 5.75, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.625, + 8.125, + 5.375, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 8, + 5.625, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 14 + ], + "to": [ + 12, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 4.5, + 8.125, + 4.75, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 8.125, + 4.5, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 8.125, + 5.125, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 8.125, + 4.875, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 8.125, + 4.5, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 8, + 4.75, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 14 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 8.125, + 3.875, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 8.125, + 3.625, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 8.125, + 4.25, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 8.125, + 4, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 8.125, + 3.625, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 8, + 3.875, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 14 + ], + "to": [ + 4, + 6, + 15 + ], + "faces": { + "north": { + "uv": [ + 10.875, + 10.375, + 11, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 10.375, + 10.875, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.125, + 10.375, + 11.25, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 10.375, + 11.125, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 10.375, + 10.875, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 10.25, + 11, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 14 + ], + "to": [ + 4, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 8.25, + 10.875, + 8.375, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.125, + 10.875, + 8.25, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 10.875, + 8.625, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 10.875, + 8.5, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 10.875, + 8.25, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 10.75, + 8.375, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 2.625 + ], + "to": [ + 13, + 6, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 10.875, + 6.625, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.375, + 10.875, + 6.5, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 10.875, + 6.875, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 10.875, + 6.75, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 10.875, + 6.5, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 10.75, + 6.625, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 2.625 + ], + "to": [ + 13, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 10.875, + 6, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 10.875, + 5.875, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 10.875, + 6.25, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 10.875, + 6.125, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 10.875, + 5.875, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 10.75, + 6, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 2.625 + ], + "to": [ + 13, + 11, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 10.875, + 5.375, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 10.875, + 5.25, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 10.875, + 5.625, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 10.875, + 5.5, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 10.875, + 5.25, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 10.75, + 5.375, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 2.625 + ], + "to": [ + 10, + 6, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 10.875, + 4.75, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 10.875, + 4.625, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 10.875, + 5, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 10.875, + 4.875, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 10.875, + 4.625, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 10.75, + 4.75, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 2.625 + ], + "to": [ + 10, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 4, + 10.875, + 4.125, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 10.875, + 4, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 10.875, + 4.375, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.125, + 10.875, + 4.25, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.125, + 10.875, + 4, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 10.75, + 4.125, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 2.625 + ], + "to": [ + 10, + 11, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 10.875, + 3.5, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 10.875, + 3.375, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.625, + 10.875, + 3.75, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 10.875, + 3.625, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 10.875, + 3.375, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 10.75, + 3.5, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 2.625 + ], + "to": [ + 7, + 6, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 10.875, + 2.875, + 11.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 10.875, + 2.75, + 11.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 10.875, + 3.125, + 11.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 10.875, + 3, + 11.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 10.875, + 2.75, + 10.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 10.75, + 2.875, + 10.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 2.625 + ], + "to": [ + 7, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 10.875, + 2.625, + 11, + 2.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 2.625, + 10.875, + 2.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.125, + 2.625, + 11.25, + 2.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 2.625, + 11.125, + 2.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 2.625, + 10.875, + 2.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 2.5, + 11, + 2.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 2.625 + ], + "to": [ + 4, + 11, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 10.875, + 2.125, + 11, + 2.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 2.125, + 10.875, + 2.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.125, + 2.125, + 11.25, + 2.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 2.125, + 11.125, + 2.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 2.125, + 10.875, + 2 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 2, + 11, + 2.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 2.625 + ], + "to": [ + 7, + 11, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 10.875, + 1.625, + 11, + 1.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 1.625, + 10.875, + 1.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.125, + 1.625, + 11.25, + 1.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 1.625, + 11.125, + 1.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 1.625, + 10.875, + 1.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 1.5, + 11, + 1.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 2.625 + ], + "to": [ + 3, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 8, + 7.75, + 8.25, + 9.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 7.75, + 8, + 9.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 7.75, + 8.625, + 9.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 7.75, + 8.375, + 9.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 7.75, + 8, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 7.625, + 8.25, + 7.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 2.625 + ], + "to": [ + 6, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 8, + 6, + 8.25, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 6, + 8, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 6, + 8.625, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 6, + 8.375, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 6, + 8, + 5.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 5.875, + 8.25, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 2.625 + ], + "to": [ + 9, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 8, + 0.125, + 8.25, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 0.125, + 8, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 0.125, + 8.625, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.25, + 0.125, + 8.375, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 0.125, + 8, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 0, + 8.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 2.625 + ], + "to": [ + 12, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 4.25, + 8, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.625, + 4.25, + 7.75, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.125, + 4.25, + 8.375, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 4.25, + 8.125, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 4.25, + 7.75, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 4.125, + 8, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 2.625 + ], + "to": [ + 15, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 7.625, + 3, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 7.625, + 2.75, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 7.625, + 3.375, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 7.625, + 3.125, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 7.625, + 2.75, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 7.5, + 3, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 2.625 + ], + "to": [ + 4, + 6, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 10.75, + 7.75, + 11 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 10.75, + 7.625, + 11 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.875, + 10.75, + 8, + 11 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.75, + 10.75, + 7.875, + 11 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.75, + 10.75, + 7.625, + 10.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.875, + 10.625, + 7.75, + 10.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 2.625 + ], + "to": [ + 4, + 16, + 3.625 + ], + "faces": { + "north": { + "uv": [ + 10.75, + 4.375, + 10.875, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.625, + 4.375, + 10.75, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 4.375, + 11.125, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.875, + 4.375, + 11, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.875, + 4.375, + 10.75, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 4.25, + 10.875, + 4.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 4.25 + ], + "to": [ + 13, + 6, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.75, + 3.875, + 10.875, + 4.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.625, + 3.875, + 10.75, + 4.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 3.875, + 11.125, + 4.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.875, + 3.875, + 11, + 4.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.875, + 3.875, + 10.75, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 3.75, + 10.875, + 3.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 4.25 + ], + "to": [ + 13, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.75, + 3.375, + 10.875, + 3.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.625, + 3.375, + 10.75, + 3.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 3.375, + 11.125, + 3.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.875, + 3.375, + 11, + 3.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.875, + 3.375, + 10.75, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 3.25, + 10.875, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 4.25 + ], + "to": [ + 13, + 11, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.75, + 1.125, + 10.875, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.625, + 1.125, + 10.75, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 1.125, + 11.125, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.875, + 1.125, + 11, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.875, + 1.125, + 10.75, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 1, + 10.875, + 1.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 4.25 + ], + "to": [ + 10, + 6, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 9.5, + 10.625, + 9.625, + 10.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.375, + 10.625, + 9.5, + 10.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 10.625, + 9.875, + 10.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.625, + 10.625, + 9.75, + 10.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.625, + 10.625, + 9.5, + 10.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 10.5, + 9.625, + 10.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 4.25 + ], + "to": [ + 10, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 8.875, + 10.625, + 9, + 10.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.75, + 10.625, + 8.875, + 10.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.125, + 10.625, + 9.25, + 10.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9, + 10.625, + 9.125, + 10.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9, + 10.625, + 8.875, + 10.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.125, + 10.5, + 9, + 10.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 4.25 + ], + "to": [ + 10, + 11, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.25, + 10.5, + 10.375, + 10.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.125, + 10.5, + 10.25, + 10.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 10.5, + 10.625, + 10.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 10.5, + 10.5, + 10.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 10.5, + 10.25, + 10.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 10.375, + 10.375, + 10.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 4.25 + ], + "to": [ + 7, + 6, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 10, + 10.5, + 10.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 10, + 10.375, + 10.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 10, + 10.75, + 10.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 10, + 10.625, + 10.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 10, + 10.375, + 9.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 9.875, + 10.5, + 10 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 4.25 + ], + "to": [ + 7, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 9.5, + 10.5, + 9.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 9.5, + 10.375, + 9.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 9.5, + 10.75, + 9.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 9.5, + 10.625, + 9.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 9.5, + 10.375, + 9.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 9.375, + 10.5, + 9.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 4.25 + ], + "to": [ + 4, + 11, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 9, + 10.5, + 9.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 9, + 10.375, + 9.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 9, + 10.75, + 9.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 9, + 10.625, + 9.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 9, + 10.375, + 8.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 8.875, + 10.5, + 9 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 4.25 + ], + "to": [ + 7, + 11, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 8.5, + 10.5, + 8.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 8.5, + 10.375, + 8.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 8.5, + 10.75, + 8.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 8.5, + 10.625, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 8.5, + 10.375, + 8.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 8.375, + 10.5, + 8.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 4.25 + ], + "to": [ + 3, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 2.5, + 7.875, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 2.5, + 7.625, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 2.5, + 8.25, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.875, + 2.5, + 8, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.875, + 2.5, + 7.625, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.125, + 2.375, + 7.875, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 4.25 + ], + "to": [ + 6, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 7.625, + 2.125, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 7.625, + 1.875, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 7.625, + 2.5, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 7.625, + 2.25, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 7.625, + 1.875, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 7.5, + 2.125, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 4.25 + ], + "to": [ + 9, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 1, + 7.625, + 1.25, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 7.625, + 1, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 7.625, + 1.625, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 7.625, + 1.375, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 7.625, + 1, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 7.5, + 1.25, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 4.25 + ], + "to": [ + 12, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.625, + 0.375, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.625, + 0.125, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 7.625, + 0.75, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 7.625, + 0.5, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 7.625, + 0.125, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 7.5, + 0.375, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 4.25 + ], + "to": [ + 15, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 6.375, + 7.375, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 6.375, + 7.125, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 6.375, + 7.75, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 6.375, + 7.5, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 6.375, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 6.25, + 7.375, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 4.25 + ], + "to": [ + 4, + 6, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 8.25, + 10.375, + 8.375, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.125, + 10.375, + 8.25, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 10.375, + 8.625, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 10.375, + 8.5, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 10.375, + 8.25, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 10.25, + 8.375, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 4.25 + ], + "to": [ + 4, + 16, + 5.25 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 8, + 10.5, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 8, + 10.375, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 8, + 10.75, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 8, + 10.625, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 8, + 10.375, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 7.875, + 10.5, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 5.875 + ], + "to": [ + 13, + 6, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 7.5, + 10.5, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 7.5, + 10.375, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 7.5, + 10.75, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 7.5, + 10.625, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 7.5, + 10.375, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 7.375, + 10.5, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 5.875 + ], + "to": [ + 13, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 10.375, + 7.25, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 10.375, + 7.125, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 10.375, + 7.5, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 10.375, + 7.375, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 10.375, + 7.125, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 10.25, + 7.25, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 5.875 + ], + "to": [ + 13, + 11, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 7, + 10.5, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 7, + 10.375, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 7, + 10.75, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 7, + 10.625, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 7, + 10.375, + 6.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 6.875, + 10.5, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 5.875 + ], + "to": [ + 10, + 6, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 6.5, + 10.5, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 6.5, + 10.375, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 6.5, + 10.75, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 6.5, + 10.625, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 6.5, + 10.375, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 6.375, + 10.5, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 5.875 + ], + "to": [ + 10, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 10.375, + 6.625, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.375, + 10.375, + 6.5, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 10.375, + 6.875, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 10.375, + 6.75, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 10.375, + 6.5, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 10.25, + 6.625, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 5.875 + ], + "to": [ + 10, + 11, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 6, + 10.5, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 6, + 10.375, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 6, + 10.75, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 6, + 10.625, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 6, + 10.375, + 5.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 5.875, + 10.5, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 5.875 + ], + "to": [ + 7, + 6, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 10.375, + 6, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 10.375, + 5.875, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 10.375, + 6.25, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 10.375, + 6.125, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 10.375, + 5.875, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 10.25, + 6, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 5.875 + ], + "to": [ + 7, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 5.5, + 10.5, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 5.5, + 10.375, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 5.5, + 10.75, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 5.5, + 10.625, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 5.5, + 10.375, + 5.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 5.375, + 10.5, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 5.875 + ], + "to": [ + 4, + 11, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 10.375, + 5.375, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 10.375, + 5.25, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 10.375, + 5.625, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 10.375, + 5.5, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 10.375, + 5.25, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 10.25, + 5.375, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 5.875 + ], + "to": [ + 7, + 11, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 5, + 10.5, + 5.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 5, + 10.375, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 5, + 10.75, + 5.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 5, + 10.625, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 5, + 10.375, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 4.875, + 10.5, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 5.875 + ], + "to": [ + 3, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 0.125, + 7.375, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 0.125, + 7.125, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 0.125, + 7.75, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 0.125, + 7.5, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 0.125, + 7.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 0, + 7.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 5.875 + ], + "to": [ + 6, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 4.625, + 7.125, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.75, + 4.625, + 6.875, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.25, + 4.625, + 7.5, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 4.625, + 7.25, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 4.625, + 6.875, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 4.5, + 7.125, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 5.875 + ], + "to": [ + 9, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 2.5, + 7, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 2.5, + 6.75, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 2.5, + 7.375, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 2.5, + 7.125, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7, + 2.5, + 6.75, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 2.375, + 7, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 5.875 + ], + "to": [ + 12, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 6.375, + 6.5, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.375, + 6.25, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 6.375, + 6.875, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 6.375, + 6.625, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 6.375, + 6.25, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 6.25, + 6.5, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 5.875 + ], + "to": [ + 15, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 6.375, + 5.625, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 6.375, + 5.375, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.75, + 6.375, + 6, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.625, + 6.375, + 5.75, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.625, + 6.375, + 5.375, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 6.25, + 5.625, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 5.875 + ], + "to": [ + 4, + 6, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 10.375, + 4.75, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 10.375, + 4.625, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 10.375, + 5, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 10.375, + 4.875, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 10.375, + 4.625, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 10.25, + 4.75, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 5.875 + ], + "to": [ + 4, + 16, + 6.875 + ], + "faces": { + "north": { + "uv": [ + 4, + 10.375, + 4.125, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 10.375, + 4, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 10.375, + 4.375, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.125, + 10.375, + 4.25, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.125, + 10.375, + 4, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 10.25, + 4.125, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 9.125 + ], + "to": [ + 13, + 6, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 10.375, + 3.5, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 10.375, + 3.375, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.625, + 10.375, + 3.75, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 10.375, + 3.625, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 10.375, + 3.375, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 10.25, + 3.5, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 9.125 + ], + "to": [ + 13, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 10.375, + 2.875, + 10.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 10.375, + 2.75, + 10.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 10.375, + 3.125, + 10.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 10.375, + 3, + 10.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 10.375, + 2.75, + 10.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 10.25, + 2.875, + 10.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 9.125 + ], + "to": [ + 13, + 11, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 0.625, + 10.5, + 0.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 0.625, + 10.375, + 0.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 0.625, + 10.75, + 0.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 0.625, + 10.625, + 0.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 0.625, + 10.375, + 0.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 0.5, + 10.5, + 0.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 9.125 + ], + "to": [ + 10, + 6, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.375, + 0.125, + 10.5, + 0.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 0.125, + 10.375, + 0.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.625, + 0.125, + 10.75, + 0.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 0.125, + 10.625, + 0.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 0.125, + 10.375, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 0, + 10.5, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 9.125 + ], + "to": [ + 10, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.25, + 3, + 10.375, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.125, + 3, + 10.25, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 3, + 10.625, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 3, + 10.5, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 3, + 10.25, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 2.875, + 10.375, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 9.125 + ], + "to": [ + 10, + 11, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.25, + 2.5, + 10.375, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.125, + 2.5, + 10.25, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 2.5, + 10.625, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 2.5, + 10.5, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 2.5, + 10.25, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 2.375, + 10.375, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 9.125 + ], + "to": [ + 7, + 6, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.25, + 2, + 10.375, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.125, + 2, + 10.25, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 2, + 10.625, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 2, + 10.5, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 2, + 10.25, + 1.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 1.875, + 10.375, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 9.125 + ], + "to": [ + 7, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.25, + 1.5, + 10.375, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.125, + 1.5, + 10.25, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 1.5, + 10.625, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 1.5, + 10.5, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 1.5, + 10.25, + 1.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 1.375, + 10.375, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 9.125 + ], + "to": [ + 4, + 11, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 10.125, + 9.875, + 10.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 10.125, + 9.75, + 10.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 10.125, + 10.125, + 10.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 10.125, + 10, + 10.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 10.125, + 9.75, + 10 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 10, + 9.875, + 10.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 9.125 + ], + "to": [ + 7, + 11, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.125, + 4.5, + 10.25, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10, + 4.5, + 10.125, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.375, + 4.5, + 10.5, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 4.5, + 10.375, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 4.5, + 10.125, + 4.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.375, + 4.375, + 10.25, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 9.125 + ], + "to": [ + 3, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 4.5, + 6.375, + 4.75, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 6.375, + 4.5, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 6.375, + 5.125, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 6.375, + 4.875, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 6.375, + 4.5, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 6.25, + 4.75, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 9.125 + ], + "to": [ + 6, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 6.375, + 3.875, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 6.375, + 3.625, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.375, + 4.25, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 6.375, + 4, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 6.375, + 3.625, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 6.25, + 3.875, + 6.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 9.125 + ], + "to": [ + 9, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.125, + 6.5, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.125, + 6.25, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.625, + 0.125, + 6.875, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.5, + 0.125, + 6.625, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.5, + 0.125, + 6.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 0, + 6.5, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 9.125 + ], + "to": [ + 12, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 6, + 4.625, + 6.25, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.875, + 4.625, + 6, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.375, + 4.625, + 6.625, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.25, + 4.625, + 6.375, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.25, + 4.625, + 6, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 4.5, + 6.25, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 9.125 + ], + "to": [ + 15, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 5.875, + 3, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 5.875, + 2.75, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 5.875, + 3.375, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 5.875, + 3.125, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 5.875, + 2.75, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 5.75, + 3, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 9.125 + ], + "to": [ + 4, + 6, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.125, + 4, + 10.25, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10, + 4, + 10.125, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.375, + 4, + 10.5, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 4, + 10.375, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 4, + 10.125, + 3.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.375, + 3.875, + 10.25, + 4 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 9.125 + ], + "to": [ + 4, + 16, + 10.125 + ], + "faces": { + "north": { + "uv": [ + 10.125, + 3.5, + 10.25, + 3.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10, + 3.5, + 10.125, + 3.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.375, + 3.5, + 10.5, + 3.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 3.5, + 10.375, + 3.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 3.5, + 10.125, + 3.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.375, + 3.375, + 10.25, + 3.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 10.75 + ], + "to": [ + 13, + 6, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 7.75, + 10, + 7.875, + 10.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.625, + 10, + 7.75, + 10.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 10, + 8.125, + 10.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.875, + 10, + 8, + 10.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.875, + 10, + 7.75, + 9.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 9.875, + 7.875, + 10 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 10.75 + ], + "to": [ + 13, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 9.875, + 7.25, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 9.875, + 7.125, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 9.875, + 7.5, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 9.875, + 7.375, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 9.875, + 7.125, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 9.75, + 7.25, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 10.75 + ], + "to": [ + 13, + 11, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 9.875, + 6.625, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.375, + 9.875, + 6.5, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 9.875, + 6.875, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 9.875, + 6.75, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 9.875, + 6.5, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 9.75, + 6.625, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 10.75 + ], + "to": [ + 10, + 6, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 9.875, + 6, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 9.875, + 5.875, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 9.875, + 6.25, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 9.875, + 6.125, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 9.875, + 5.875, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.125, + 9.75, + 6, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 10.75 + ], + "to": [ + 10, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 5.25, + 9.875, + 5.375, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.125, + 9.875, + 5.25, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 9.875, + 5.625, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 9.875, + 5.5, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 9.875, + 5.25, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 9.75, + 5.375, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 10.75 + ], + "to": [ + 10, + 11, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 9.875, + 4.75, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 9.875, + 4.625, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 9.875, + 5, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 9.875, + 4.875, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 9.875, + 4.625, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 9.75, + 4.75, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 10.75 + ], + "to": [ + 7, + 6, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 4, + 9.875, + 4.125, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 9.875, + 4, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 9.875, + 4.375, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.125, + 9.875, + 4.25, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.125, + 9.875, + 4, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 9.75, + 4.125, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 10.75 + ], + "to": [ + 7, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 9.875, + 3.5, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 9.875, + 3.375, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.625, + 9.875, + 3.75, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 9.875, + 3.625, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 9.875, + 3.375, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 9.75, + 3.5, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 10.75 + ], + "to": [ + 4, + 11, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 9.875, + 2.875, + 10.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 9.875, + 2.75, + 10.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 9.875, + 3.125, + 10.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 9.875, + 3, + 10.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 9.875, + 2.75, + 9.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 9.75, + 2.875, + 9.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 10.75 + ], + "to": [ + 7, + 11, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 9.625, + 9.875, + 9.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 9.625, + 9.75, + 9.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 9.625, + 10.125, + 9.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 9.625, + 10, + 9.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 9.625, + 9.75, + 9.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 9.5, + 9.875, + 9.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 10.75 + ], + "to": [ + 3, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 5.875, + 2.5, + 6.125, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 2.5, + 5.875, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.25, + 2.5, + 6.5, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 2.5, + 6.25, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 2.5, + 5.875, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.375, + 2.375, + 6.125, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 10.75 + ], + "to": [ + 6, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 5.875, + 2.125, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 5.875, + 1.875, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 5.875, + 2.5, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 5.875, + 2.25, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 5.875, + 1.875, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 5.75, + 2.125, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 10.75 + ], + "to": [ + 9, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.875, + 1.25, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 5.875, + 1, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 5.875, + 1.625, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 5.875, + 1.375, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 5.875, + 1, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 5.75, + 1.25, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 10.75 + ], + "to": [ + 12, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.875, + 0.375, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.875, + 0.125, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 5.875, + 0.75, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 5.875, + 0.5, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 5.875, + 0.125, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 5.75, + 0.375, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 10.75 + ], + "to": [ + 15, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 5.125, + 4.625, + 5.375, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 4.625, + 5.125, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.5, + 4.625, + 5.75, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.375, + 4.625, + 5.5, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.375, + 4.625, + 5.125, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 4.5, + 5.375, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 10.75 + ], + "to": [ + 4, + 6, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 9.125, + 9.875, + 9.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 9.125, + 9.75, + 9.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 9.125, + 10.125, + 9.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 9.125, + 10, + 9.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 9.125, + 9.75, + 9 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 9, + 9.875, + 9.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 10.75 + ], + "to": [ + 4, + 16, + 11.75 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 8.625, + 9.875, + 8.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 8.625, + 9.75, + 8.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 8.625, + 10.125, + 8.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 8.625, + 10, + 8.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 8.625, + 9.75, + 8.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 8.5, + 9.875, + 8.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 4, + 12.375 + ], + "to": [ + 13, + 6, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 8.125, + 9.875, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 8.125, + 9.75, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 8.125, + 10.125, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 8.125, + 10, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 8.125, + 9.75, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 8, + 9.875, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 12.375 + ], + "to": [ + 13, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 7.625, + 9.875, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 7.625, + 9.75, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 7.625, + 10.125, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 7.625, + 10, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 7.625, + 9.75, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 7.5, + 9.875, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 9, + 12.375 + ], + "to": [ + 13, + 11, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 7.125, + 9.875, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 7.125, + 9.75, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 7.125, + 10.125, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 7.125, + 10, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 7.125, + 9.75, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 7, + 9.875, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 4, + 12.375 + ], + "to": [ + 10, + 6, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 6.625, + 9.875, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 6.625, + 9.75, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 6.625, + 10.125, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 6.625, + 10, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 6.625, + 9.75, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 6.5, + 9.875, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 12.375 + ], + "to": [ + 10, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 6.125, + 9.875, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 6.125, + 9.75, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 6.125, + 10.125, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 6.125, + 10, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 6.125, + 9.75, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 6, + 9.875, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 9, + 12.375 + ], + "to": [ + 10, + 11, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 5.625, + 9.875, + 5.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 5.625, + 9.75, + 5.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 5.625, + 10.125, + 5.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 5.625, + 10, + 5.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 5.625, + 9.75, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 5.5, + 9.875, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 4, + 12.375 + ], + "to": [ + 7, + 6, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 5.125, + 9.875, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 5.125, + 9.75, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 5.125, + 10.125, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 5.125, + 10, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 5.125, + 9.75, + 5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 5, + 9.875, + 5.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 12.375 + ], + "to": [ + 7, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 1.125, + 9.875, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 1.125, + 9.75, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 1.125, + 10.125, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 1.125, + 10, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 1.125, + 9.75, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 1, + 9.875, + 1.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 12.375 + ], + "to": [ + 4, + 11, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 0.625, + 9.875, + 0.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 0.625, + 9.75, + 0.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 0.625, + 10.125, + 0.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 0.625, + 10, + 0.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 0.625, + 9.75, + 0.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 0.5, + 9.875, + 0.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 9, + 12.375 + ], + "to": [ + 7, + 11, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.75, + 0.125, + 9.875, + 0.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.625, + 0.125, + 9.75, + 0.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 0.125, + 10.125, + 0.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.875, + 0.125, + 10, + 0.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.875, + 0.125, + 9.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 0, + 9.875, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 12.375 + ], + "to": [ + 3, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 4.25, + 4.625, + 4.5, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.125, + 4.625, + 4.25, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 4.625, + 4.875, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 4.625, + 4.625, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 4.625, + 4.25, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.75, + 4.5, + 4.5, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 4, + 12.375 + ], + "to": [ + 6, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 1, + 2.5, + 1.25, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 2.5, + 1, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 2.5, + 1.625, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 2.5, + 1.375, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 2.5, + 1, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 2.375, + 1.25, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 4, + 12.375 + ], + "to": [ + 9, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.5, + 0.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.5, + 0.125, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 2.5, + 0.75, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 2.5, + 0.5, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 2.5, + 0.125, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 2.375, + 0.375, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 4, + 12.375 + ], + "to": [ + 12, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 1, + 0.125, + 1.25, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 0.125, + 1, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 0.125, + 1.625, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 0.125, + 1.375, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 0.125, + 1, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 0, + 1.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 12.375 + ], + "to": [ + 15, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.375, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 0.125, + 0.75, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 0.125, + 0.5, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 0, + 0.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 12.375 + ], + "to": [ + 4, + 6, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 8, + 9.5, + 8.125, + 9.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 9.5, + 8, + 9.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 9.5, + 8.375, + 9.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 9.5, + 8.25, + 9.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 9.5, + 8, + 9.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 9.375, + 8.125, + 9.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 12.375 + ], + "to": [ + 4, + 16, + 13.375 + ], + "faces": { + "north": { + "uv": [ + 9.5, + 4.625, + 9.625, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.375, + 4.625, + 9.5, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 4.625, + 9.875, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.625, + 4.625, + 9.75, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.625, + 4.625, + 9.5, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 4.5, + 9.625, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0.5, + 3, + 0.5 + ], + "to": [ + 15.5, + 4, + 15.5 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 4.25, + 3.75, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.25, + 1.875, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 4.25, + 7.5, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 4.25, + 5.625, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 4.25, + 1.875, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 2.375, + 3.75, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 0, + 4 + ], + "to": [ + 12, + 1, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.5, + 2, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.5, + 1, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 5.5, + 4, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 5.5, + 3, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 5.5, + 1, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 4.5, + 2, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + -2, + 4 + ], + "to": [ + 7, + 0, + 5 + ], + "faces": { + "north": { + "uv": [ + 9.5, + 4.125, + 9.625, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.375, + 4.125, + 9.5, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 4.125, + 9.875, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.625, + 4.125, + 9.75, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.625, + 4.125, + 9.5, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 4, + 9.625, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + -2, + 4 + ], + "to": [ + 10, + 0, + 5 + ], + "faces": { + "north": { + "uv": [ + 9.5, + 3.625, + 9.625, + 3.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.375, + 3.625, + 9.5, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 3.625, + 9.875, + 3.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.625, + 3.625, + 9.75, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.625, + 3.625, + 9.5, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 3.5, + 9.625, + 3.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + -2, + 11 + ], + "to": [ + 10, + 0, + 12 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 9.375, + 2.875, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 9.375, + 2.75, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 9.375, + 3.125, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 9.375, + 3, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 9.375, + 2.75, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 9.25, + 2.875, + 9.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + -2, + 11 + ], + "to": [ + 7, + 0, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 5.875, + 3.75, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 5.875, + 3.625, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 5.875, + 4, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 5.875, + 3.875, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 5.875, + 3.625, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 5.75, + 3.75, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -2, + 9 + ], + "to": [ + 5, + 0, + 10 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 5.125, + 3.375, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 5.125, + 3.25, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 5.125, + 3.625, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 5.125, + 3.5, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 5.125, + 3.25, + 5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 5, + 3.375, + 5.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -2, + 6 + ], + "to": [ + 5, + 0, + 7 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.125, + 0.25, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.125, + 0.125, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5.125, + 0.5, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5.125, + 0.375, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5.125, + 0.125, + 5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 5, + 0.25, + 5.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + -2, + 6 + ], + "to": [ + 12, + 0, + 7 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 4.625, + 3.375, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 4.625, + 3.25, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 4.625, + 3.625, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 4.625, + 3.5, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 4.625, + 3.25, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 4.5, + 3.375, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + -2, + 9 + ], + "to": [ + 12, + 0, + 10 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 4.625, + 0.25, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.625, + 0.125, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 4.625, + 0.5, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 4.625, + 0.375, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 4.625, + 0.125, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 4.5, + 0.25, + 4.625 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"radiator", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "radiator", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"body", - "origin":[8,8,8], - "color":0, - "children":[0] - },{ - "name":"fins", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "body", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0 + ] + }, + { + "name": "fins", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51] - },{ - "name":"left", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + }, + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ] + }, + { + "name": "left", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + }, + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ] + }, { - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102] + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102 + ] } ] - },{ - "name":"right", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "right", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + }, + { + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ] + }, { - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136] - },{ - "name":"fin", - "origin":[8,8,8], - "color":0, - "children":[137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153] + "name": "fin", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153 + ] } ] - },154 + }, + 154 + ] + }, + { + "name": "heatinput", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 ] - },{ - "name":"heatinput", - "origin":[8,8,8], - "color":0, - "children":[155,156,157,158,159,160,161,162,163] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/meltedreactor.json b/src/main/resources/assets/nuclearscience/models/block/meltedreactor.json index d7293afe..4b9ed5ef 100644 --- a/src/main/resources/assets/nuclearscience/models/block/meltedreactor.json +++ b/src/main/resources/assets/nuclearscience/models/block/meltedreactor.json @@ -3,8 +3,8 @@ "parent": "minecraft:block/cube_all", "texture_size": [64,64], "textures": { - "0": "nuclearscience:model/meltedreactor", - "particle": "nuclearscience:model/meltedreactor" + "0": "nuclearscience:block/model/meltedreactor", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplier.json b/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplier.json index 3d9aba1f..090ea126 100644 --- a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplier.json +++ b/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplier.json @@ -1,76 +1,2944 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/moltensaltsupplier", - "particle":"nuclearscience:model/moltensaltsupplier" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/moltensaltsupplier", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[1,2,4],"to":[15,12,12],"faces":{"north":{"uv":[1,1,2.75,2.25],"texture":"#0"},"east":{"uv":[0,1,1,2.25],"texture":"#0"},"south":{"uv":[3.75,1,5.5,2.25],"texture":"#0"},"west":{"uv":[2.75,1,3.75,2.25],"texture":"#0"},"up":{"uv":[2.75,1,1,0],"texture":"#0"},"down":{"uv":[4.5,0,2.75,1],"texture":"#0"}}},{"from":[1,3,3],"to":[15,11,4],"faces":{"north":{"uv":[4,3.75,5.75,4.75],"texture":"#0"},"east":{"uv":[3.875,3.75,4,4.75],"texture":"#0"},"south":{"uv":[5.875,3.75,7.625,4.75],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4.75],"texture":"#0"},"up":{"uv":[5.75,3.75,4,3.625],"texture":"#0"},"down":{"uv":[7.5,3.625,5.75,3.75],"texture":"#0"}}},{"from":[1,3,12],"to":[15,11,13],"faces":{"north":{"uv":[0.125,3.75,1.875,4.75],"texture":"#0"},"east":{"uv":[0,3.75,0.125,4.75],"texture":"#0"},"south":{"uv":[2,3.75,3.75,4.75],"texture":"#0"},"west":{"uv":[1.875,3.75,2,4.75],"texture":"#0"},"up":{"uv":[1.875,3.75,0.125,3.625],"texture":"#0"},"down":{"uv":[3.625,3.625,1.875,3.75],"texture":"#0"}}},{"from":[0,3,4],"to":[1,11,12],"faces":{"north":{"uv":[1,5.875,1.125,6.875],"texture":"#0"},"east":{"uv":[0,5.875,1,6.875],"texture":"#0"},"south":{"uv":[2.125,5.875,2.25,6.875],"texture":"#0"},"west":{"uv":[1.125,5.875,2.125,6.875],"texture":"#0"},"up":{"uv":[1.125,5.875,1,4.875],"texture":"#0"},"down":{"uv":[1.25,4.875,1.125,5.875],"texture":"#0"}}}, - {"from":[15,3,4],"to":[16,11,12],"faces":{"north":{"uv":[5.625,2.375,5.75,3.375],"texture":"#0"},"east":{"uv":[4.625,2.375,5.625,3.375],"texture":"#0"},"south":{"uv":[6.75,2.375,6.875,3.375],"texture":"#0"},"west":{"uv":[5.75,2.375,6.75,3.375],"texture":"#0"},"up":{"uv":[5.75,2.375,5.625,1.375],"texture":"#0"},"down":{"uv":[5.875,1.375,5.75,2.375],"texture":"#0"}}},{"from":[4,1,4],"to":[12,2,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}},{"from":[5,0,5],"to":[11,1,11],"faces":{"north":{"uv":[5.375,0.75,6.125,0.875],"texture":"#0"},"east":{"uv":[4.625,0.75,5.375,0.875],"texture":"#0"},"south":{"uv":[6.875,0.75,7.625,0.875],"texture":"#0"},"west":{"uv":[6.125,0.75,6.875,0.875],"texture":"#0"},"up":{"uv":[6.125,0.75,5.375,0],"texture":"#0"},"down":{"uv":[6.875,0,6.125,0.75],"texture":"#0"}}},{"from":[13,2,3],"to":[14,3,4],"faces":{"north":{"uv":[2.125,5.375,2.25,5.5],"texture":"#0"},"east":{"uv":[2,5.375,2.125,5.5],"texture":"#0"},"south":{"uv":[2.375,5.375,2.5,5.5],"texture":"#0"},"west":{"uv":[2.25,5.375,2.375,5.5],"texture":"#0"},"up":{"uv":[2.25,5.375,2.125,5.25],"texture":"#0"},"down":{"uv":[2.375,5.25,2.25,5.375],"texture":"#0"}}}, - {"from":[13,2,12],"to":[14,3,13],"faces":{"north":{"uv":[1.5,5.375,1.625,5.5],"texture":"#0"},"east":{"uv":[1.375,5.375,1.5,5.5],"texture":"#0"},"south":{"uv":[1.75,5.375,1.875,5.5],"texture":"#0"},"west":{"uv":[1.625,5.375,1.75,5.5],"texture":"#0"},"up":{"uv":[1.625,5.375,1.5,5.25],"texture":"#0"},"down":{"uv":[1.75,5.25,1.625,5.375],"texture":"#0"}}},{"from":[13,3,2],"to":[14,11,3],"faces":{"north":{"uv":[2.625,7.5,2.75,8.5],"texture":"#0"},"east":{"uv":[2.5,7.5,2.625,8.5],"texture":"#0"},"south":{"uv":[2.875,7.5,3,8.5],"texture":"#0"},"west":{"uv":[2.75,7.5,2.875,8.5],"texture":"#0"},"up":{"uv":[2.75,7.5,2.625,7.375],"texture":"#0"},"down":{"uv":[2.875,7.375,2.75,7.5],"texture":"#0"}}},{"from":[13,3,13],"to":[14,11,14],"faces":{"north":{"uv":[2,7.5,2.125,8.5],"texture":"#0"},"east":{"uv":[1.875,7.5,2,8.5],"texture":"#0"},"south":{"uv":[2.25,7.5,2.375,8.5],"texture":"#0"},"west":{"uv":[2.125,7.5,2.25,8.5],"texture":"#0"},"up":{"uv":[2.125,7.5,2,7.375],"texture":"#0"},"down":{"uv":[2.25,7.375,2.125,7.5],"texture":"#0"}}},{"from":[13,1,4],"to":[14,2,12],"faces":{"north":{"uv":[7.125,6.125,7.25,6.25],"texture":"#0"},"east":{"uv":[6.125,6.125,7.125,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[7.25,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[7.25,6.125,7.125,5.125],"texture":"#0"},"down":{"uv":[7.375,5.125,7.25,6.125],"texture":"#0"}}}, - {"from":[12,1,5],"to":[13,2,6],"faces":{"north":{"uv":[0.125,5.375,0.25,5.5],"texture":"#0"},"east":{"uv":[0,5.375,0.125,5.5],"texture":"#0"},"south":{"uv":[0.375,5.375,0.5,5.5],"texture":"#0"},"west":{"uv":[0.25,5.375,0.375,5.5],"texture":"#0"},"up":{"uv":[0.25,5.375,0.125,5.25],"texture":"#0"},"down":{"uv":[0.375,5.25,0.25,5.375],"texture":"#0"}}},{"from":[12,1,10],"to":[13,2,11],"faces":{"north":{"uv":[5.125,5,5.25,5.125],"texture":"#0"},"east":{"uv":[5,5,5.125,5.125],"texture":"#0"},"south":{"uv":[5.375,5,5.5,5.125],"texture":"#0"},"west":{"uv":[5.25,5,5.375,5.125],"texture":"#0"},"up":{"uv":[5.25,5,5.125,4.875],"texture":"#0"},"down":{"uv":[5.375,4.875,5.25,5],"texture":"#0"}}},{"from":[13,12,4],"to":[14,13,12],"faces":{"north":{"uv":[4.75,7.125,4.875,7.25],"texture":"#0"},"east":{"uv":[3.75,7.125,4.75,7.25],"texture":"#0"},"south":{"uv":[5.875,7.125,6,7.25],"texture":"#0"},"west":{"uv":[4.875,7.125,5.875,7.25],"texture":"#0"},"up":{"uv":[4.875,7.125,4.75,6.125],"texture":"#0"},"down":{"uv":[5,6.125,4.875,7.125],"texture":"#0"}}},{"from":[13,11,12],"to":[14,12,13],"faces":{"north":{"uv":[4.5,5,4.625,5.125],"texture":"#0"},"east":{"uv":[4.375,5,4.5,5.125],"texture":"#0"},"south":{"uv":[4.75,5,4.875,5.125],"texture":"#0"},"west":{"uv":[4.625,5,4.75,5.125],"texture":"#0"},"up":{"uv":[4.625,5,4.5,4.875],"texture":"#0"},"down":{"uv":[4.75,4.875,4.625,5],"texture":"#0"}}}, - {"from":[13,11,3],"to":[14,12,4],"faces":{"north":{"uv":[3.875,5,4,5.125],"texture":"#0"},"east":{"uv":[3.75,5,3.875,5.125],"texture":"#0"},"south":{"uv":[4.125,5,4.25,5.125],"texture":"#0"},"west":{"uv":[4,5,4.125,5.125],"texture":"#0"},"up":{"uv":[4,5,3.875,4.875],"texture":"#0"},"down":{"uv":[4.125,4.875,4,5],"texture":"#0"}}},{"from":[10,2,3],"to":[11,3,4],"faces":{"north":{"uv":[2.75,5,2.875,5.125],"texture":"#0"},"east":{"uv":[2.625,5,2.75,5.125],"texture":"#0"},"south":{"uv":[3,5,3.125,5.125],"texture":"#0"},"west":{"uv":[2.875,5,3,5.125],"texture":"#0"},"up":{"uv":[2.875,5,2.75,4.875],"texture":"#0"},"down":{"uv":[3,4.875,2.875,5],"texture":"#0"}}},{"from":[10,2,12],"to":[11,3,13],"faces":{"north":{"uv":[2.125,5,2.25,5.125],"texture":"#0"},"east":{"uv":[2,5,2.125,5.125],"texture":"#0"},"south":{"uv":[2.375,5,2.5,5.125],"texture":"#0"},"west":{"uv":[2.25,5,2.375,5.125],"texture":"#0"},"up":{"uv":[2.25,5,2.125,4.875],"texture":"#0"},"down":{"uv":[2.375,4.875,2.25,5],"texture":"#0"}}},{"from":[10,3,2],"to":[11,11,3],"faces":{"north":{"uv":[1.375,7.5,1.5,8.5],"texture":"#0"},"east":{"uv":[1.25,7.5,1.375,8.5],"texture":"#0"},"south":{"uv":[1.625,7.5,1.75,8.5],"texture":"#0"},"west":{"uv":[1.5,7.5,1.625,8.5],"texture":"#0"},"up":{"uv":[1.5,7.5,1.375,7.375],"texture":"#0"},"down":{"uv":[1.625,7.375,1.5,7.5],"texture":"#0"}}}, - {"from":[10,3,13],"to":[11,11,14],"faces":{"north":{"uv":[7.125,2.375,7.25,3.375],"texture":"#0"},"east":{"uv":[7,2.375,7.125,3.375],"texture":"#0"},"south":{"uv":[7.375,2.375,7.5,3.375],"texture":"#0"},"west":{"uv":[7.25,2.375,7.375,3.375],"texture":"#0"},"up":{"uv":[7.25,2.375,7.125,2.25],"texture":"#0"},"down":{"uv":[7.375,2.25,7.25,2.375],"texture":"#0"}}},{"from":[10,12,4],"to":[11,13,12],"faces":{"north":{"uv":[2.375,7.125,2.5,7.25],"texture":"#0"},"east":{"uv":[1.375,7.125,2.375,7.25],"texture":"#0"},"south":{"uv":[3.5,7.125,3.625,7.25],"texture":"#0"},"west":{"uv":[2.5,7.125,3.5,7.25],"texture":"#0"},"up":{"uv":[2.5,7.125,2.375,6.125],"texture":"#0"},"down":{"uv":[2.625,6.125,2.5,7.125],"texture":"#0"}}},{"from":[10,11,12],"to":[11,12,13],"faces":{"north":{"uv":[1.5,5,1.625,5.125],"texture":"#0"},"east":{"uv":[1.375,5,1.5,5.125],"texture":"#0"},"south":{"uv":[1.75,5,1.875,5.125],"texture":"#0"},"west":{"uv":[1.625,5,1.75,5.125],"texture":"#0"},"up":{"uv":[1.625,5,1.5,4.875],"texture":"#0"},"down":{"uv":[1.75,4.875,1.625,5],"texture":"#0"}}},{"from":[10,11,3],"to":[11,12,4],"faces":{"north":{"uv":[0.125,5,0.25,5.125],"texture":"#0"},"east":{"uv":[0,5,0.125,5.125],"texture":"#0"},"south":{"uv":[0.375,5,0.5,5.125],"texture":"#0"},"west":{"uv":[0.25,5,0.375,5.125],"texture":"#0"},"up":{"uv":[0.25,5,0.125,4.875],"texture":"#0"},"down":{"uv":[0.375,4.875,0.25,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[6,3,4],"faces":{"north":{"uv":[4.75,0.5,4.875,0.625],"texture":"#0"},"east":{"uv":[4.625,0.5,4.75,0.625],"texture":"#0"},"south":{"uv":[5,0.5,5.125,0.625],"texture":"#0"},"west":{"uv":[4.875,0.5,5,0.625],"texture":"#0"},"up":{"uv":[4.875,0.5,4.75,0.375],"texture":"#0"},"down":{"uv":[5,0.375,4.875,0.5],"texture":"#0"}}},{"from":[5,2,12],"to":[6,3,13],"faces":{"north":{"uv":[4.75,0.125,4.875,0.25],"texture":"#0"},"east":{"uv":[4.625,0.125,4.75,0.25],"texture":"#0"},"south":{"uv":[5,0.125,5.125,0.25],"texture":"#0"},"west":{"uv":[4.875,0.125,5,0.25],"texture":"#0"},"up":{"uv":[4.875,0.125,4.75,0],"texture":"#0"},"down":{"uv":[5,0,4.875,0.125],"texture":"#0"}}},{"from":[5,3,2],"to":[6,11,3],"faces":{"north":{"uv":[0.75,7.125,0.875,8.125],"texture":"#0"},"east":{"uv":[0.625,7.125,0.75,8.125],"texture":"#0"},"south":{"uv":[1,7.125,1.125,8.125],"texture":"#0"},"west":{"uv":[0.875,7.125,1,8.125],"texture":"#0"},"up":{"uv":[0.875,7.125,0.75,7],"texture":"#0"},"down":{"uv":[1,7,0.875,7.125],"texture":"#0"}}},{"from":[5,3,13],"to":[6,11,14],"faces":{"north":{"uv":[0.125,7.125,0.25,8.125],"texture":"#0"},"east":{"uv":[0,7.125,0.125,8.125],"texture":"#0"},"south":{"uv":[0.375,7.125,0.5,8.125],"texture":"#0"},"west":{"uv":[0.25,7.125,0.375,8.125],"texture":"#0"},"up":{"uv":[0.25,7.125,0.125,7],"texture":"#0"},"down":{"uv":[0.375,7,0.25,7.125],"texture":"#0"}}}, - {"from":[5,12,4],"to":[6,13,12],"faces":{"north":{"uv":[7,2,7.125,2.125],"texture":"#0"},"east":{"uv":[6,2,7,2.125],"texture":"#0"},"south":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"west":{"uv":[7.125,2,8.125,2.125],"texture":"#0"},"up":{"uv":[7.125,2,7,1],"texture":"#0"},"down":{"uv":[7.25,1,7.125,2],"texture":"#0"}}},{"from":[5,11,12],"to":[6,12,13],"faces":{"north":{"uv":[3.875,2.5,4,2.625],"texture":"#0"},"east":{"uv":[3.75,2.5,3.875,2.625],"texture":"#0"},"south":{"uv":[4.125,2.5,4.25,2.625],"texture":"#0"},"west":{"uv":[4,2.5,4.125,2.625],"texture":"#0"},"up":{"uv":[4,2.5,3.875,2.375],"texture":"#0"},"down":{"uv":[4.125,2.375,4,2.5],"texture":"#0"}}},{"from":[5,11,3],"to":[6,12,4],"faces":{"north":{"uv":[3.75,3.125,3.875,3.25],"texture":"#0"},"east":{"uv":[3.625,3.125,3.75,3.25],"texture":"#0"},"south":{"uv":[4,3.125,4.125,3.25],"texture":"#0"},"west":{"uv":[3.875,3.125,4,3.25],"texture":"#0"},"up":{"uv":[3.875,3.125,3.75,3],"texture":"#0"},"down":{"uv":[4,3,3.875,3.125],"texture":"#0"}}},{"from":[2,2,3],"to":[3,3,4],"faces":{"north":{"uv":[3.25,2.875,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.875,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.875,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.875,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.875,3.25,2.75],"texture":"#0"},"down":{"uv":[3.5,2.75,3.375,2.875],"texture":"#0"}}}, - {"from":[2,2,12],"to":[3,3,13],"faces":{"north":{"uv":[3.25,2.5,3.375,2.625],"texture":"#0"},"east":{"uv":[3.125,2.5,3.25,2.625],"texture":"#0"},"south":{"uv":[3.5,2.5,3.625,2.625],"texture":"#0"},"west":{"uv":[3.375,2.5,3.5,2.625],"texture":"#0"},"up":{"uv":[3.375,2.5,3.25,2.375],"texture":"#0"},"down":{"uv":[3.5,2.375,3.375,2.5],"texture":"#0"}}},{"from":[2,3,2],"to":[3,11,3],"faces":{"north":{"uv":[6.875,6.5,7,7.5],"texture":"#0"},"east":{"uv":[6.75,6.5,6.875,7.5],"texture":"#0"},"south":{"uv":[7.125,6.5,7.25,7.5],"texture":"#0"},"west":{"uv":[7,6.5,7.125,7.5],"texture":"#0"},"up":{"uv":[7,6.5,6.875,6.375],"texture":"#0"},"down":{"uv":[7.125,6.375,7,6.5],"texture":"#0"}}},{"from":[2,3,13],"to":[3,11,14],"faces":{"north":{"uv":[6.25,6.5,6.375,7.5],"texture":"#0"},"east":{"uv":[6.125,6.5,6.25,7.5],"texture":"#0"},"south":{"uv":[6.5,6.5,6.625,7.5],"texture":"#0"},"west":{"uv":[6.375,6.5,6.5,7.5],"texture":"#0"},"up":{"uv":[6.375,6.5,6.25,6.375],"texture":"#0"},"down":{"uv":[6.5,6.375,6.375,6.5],"texture":"#0"}}},{"from":[2,1,4],"to":[3,2,12],"faces":{"north":{"uv":[5.75,5.875,5.875,6],"texture":"#0"},"east":{"uv":[4.75,5.875,5.75,6],"texture":"#0"},"south":{"uv":[6.875,5.875,7,6],"texture":"#0"},"west":{"uv":[5.875,5.875,6.875,6],"texture":"#0"},"up":{"uv":[5.875,5.875,5.75,4.875],"texture":"#0"},"down":{"uv":[6,4.875,5.875,5.875],"texture":"#0"}}}, - {"from":[2,12,4],"to":[3,13,12],"faces":{"north":{"uv":[3.375,5.875,3.5,6],"texture":"#0"},"east":{"uv":[2.375,5.875,3.375,6],"texture":"#0"},"south":{"uv":[4.5,5.875,4.625,6],"texture":"#0"},"west":{"uv":[3.5,5.875,4.5,6],"texture":"#0"},"up":{"uv":[3.5,5.875,3.375,4.875],"texture":"#0"},"down":{"uv":[3.625,4.875,3.5,5.875],"texture":"#0"}}},{"from":[2,11,12],"to":[3,12,13],"faces":{"north":{"uv":[0.125,2.875,0.25,3],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3],"texture":"#0"},"south":{"uv":[0.375,2.875,0.5,3],"texture":"#0"},"west":{"uv":[0.25,2.875,0.375,3],"texture":"#0"},"up":{"uv":[0.25,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[0.375,2.75,0.25,2.875],"texture":"#0"}}},{"from":[2,11,3],"to":[3,12,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.625],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.625],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.625],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.625],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[3,1,5],"to":[4,2,6],"faces":{"north":{"uv":[0.125,0.5,0.25,0.625],"texture":"#0"},"east":{"uv":[0,0.5,0.125,0.625],"texture":"#0"},"south":{"uv":[0.375,0.5,0.5,0.625],"texture":"#0"},"west":{"uv":[0.25,0.5,0.375,0.625],"texture":"#0"},"up":{"uv":[0.25,0.5,0.125,0.375],"texture":"#0"},"down":{"uv":[0.375,0.375,0.25,0.5],"texture":"#0"}}}, - {"from":[3,1,10],"to":[4,2,11],"faces":{"north":{"uv":[0.125,0.125,0.25,0.25],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.25],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.25],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.25],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}} + "elements": [ + { + "from": [ + 1, + 2, + 4 + ], + "to": [ + 15, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 1, + 2.75, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1, + 1, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.75, + 1, + 5.5, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.75, + 1, + 3.75, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.75, + 1, + 1, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 0, + 2.75, + 1 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 3, + 3 + ], + "to": [ + 15, + 11, + 4 + ], + "faces": { + "north": { + "uv": [ + 4, + 3.75, + 5.75, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 3.75, + 4, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 3.75, + 7.625, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.75, + 5.875, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.75, + 4, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.5, + 3.625, + 5.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 3, + 12 + ], + "to": [ + 15, + 11, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 3.75, + 1.875, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.75, + 0.125, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 3.75, + 3.75, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 3.75, + 2, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.875, + 3.75, + 0.125, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 3.625, + 1.875, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 3, + 4 + ], + "to": [ + 1, + 11, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.875, + 1.125, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.875, + 1, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 5.875, + 2.25, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.125, + 5.875, + 2.125, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.125, + 5.875, + 1, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.25, + 4.875, + 1.125, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 3, + 4 + ], + "to": [ + 16, + 11, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 2.375, + 5.75, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 2.375, + 5.625, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 2.375, + 6.875, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 2.375, + 6.75, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 2.375, + 5.625, + 1.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 1.375, + 5.75, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 1, + 4 + ], + "to": [ + 12, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 3.375, + 2, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 1, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 3.375, + 4, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 3.375, + 3, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 3.375, + 1, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 2.375, + 2, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 0, + 5 + ], + "to": [ + 11, + 1, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 0.75, + 6.125, + 0.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.75, + 5.375, + 0.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.75, + 7.625, + 0.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 0.75, + 6.875, + 0.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 0.75, + 5.375, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.875, + 0, + 6.125, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 2, + 3 + ], + "to": [ + 14, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 5.375, + 2.25, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2, + 5.375, + 2.125, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.375, + 5.375, + 2.5, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 5.375, + 2.375, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 5.375, + 2.125, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 5.25, + 2.25, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 2, + 12 + ], + "to": [ + 14, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 5.375, + 1.625, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 5.375, + 1.5, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 5.375, + 1.875, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 5.375, + 1.75, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 5.375, + 1.5, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 5.25, + 1.625, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 2 + ], + "to": [ + 14, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 2.625, + 7.5, + 2.75, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.5, + 7.5, + 2.625, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.875, + 7.5, + 3, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.75, + 7.5, + 2.875, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.75, + 7.5, + 2.625, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.875, + 7.375, + 2.75, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 13 + ], + "to": [ + 14, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 2, + 7.5, + 2.125, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 7.5, + 2, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 7.5, + 2.375, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 7.5, + 2.25, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 7.5, + 2, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.25, + 7.375, + 2.125, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 1, + 4 + ], + "to": [ + 14, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 6.125, + 7.25, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.125, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.125, + 8.375, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 6.125, + 8.25, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 6.125, + 7.125, + 5.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 5.125, + 7.25, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 1, + 5 + ], + "to": [ + 13, + 2, + 6 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.375, + 0.25, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.375, + 0.125, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5.375, + 0.5, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5.375, + 0.375, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5.375, + 0.125, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 5.25, + 0.25, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 1, + 10 + ], + "to": [ + 13, + 2, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.125, + 5, + 5.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 5, + 5.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.375, + 5, + 5.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 5, + 5.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 5, + 5.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 4.875, + 5.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 12, + 4 + ], + "to": [ + 14, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 7.125, + 4.875, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 7.125, + 4.75, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 7.125, + 6, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 7.125, + 5.875, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 7.125, + 4.75, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 6.125, + 4.875, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 11, + 12 + ], + "to": [ + 14, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.5, + 5, + 4.625, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 5, + 4.5, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 5, + 4.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.625, + 5, + 4.75, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.625, + 5, + 4.5, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.75, + 4.875, + 4.625, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 11, + 3 + ], + "to": [ + 14, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.875, + 5, + 4, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 5, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 5, + 4.25, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 5, + 4.125, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 5, + 3.875, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 4.875, + 4, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 2, + 3 + ], + "to": [ + 11, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 5, + 2.875, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 5, + 2.75, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 5, + 3.125, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 5, + 3, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 5, + 2.75, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 4.875, + 2.875, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 2, + 12 + ], + "to": [ + 11, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 5, + 2.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2, + 5, + 2.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.375, + 5, + 2.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 5, + 2.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 5, + 2.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 4.875, + 2.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 2 + ], + "to": [ + 11, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 1.375, + 7.5, + 1.5, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 7.5, + 1.375, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.625, + 7.5, + 1.75, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 7.5, + 1.625, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 7.5, + 1.375, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.625, + 7.375, + 1.5, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 13 + ], + "to": [ + 11, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 2.375, + 7.25, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 2.375, + 7.125, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 2.375, + 7.5, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 2.375, + 7.375, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 2.375, + 7.125, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 2.25, + 7.25, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 12, + 4 + ], + "to": [ + 11, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 7.125, + 2.5, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 7.125, + 2.375, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 7.125, + 3.625, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 7.125, + 3.5, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 7.125, + 2.375, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 6.125, + 2.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 11, + 12 + ], + "to": [ + 11, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 5, + 1.625, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 5, + 1.5, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 5, + 1.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 5, + 1.75, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 5, + 1.5, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 4.875, + 1.625, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 11, + 3 + ], + "to": [ + 11, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5, + 0.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5, + 0.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5, + 0.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5, + 0.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5, + 0.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 4.875, + 0.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 3 + ], + "to": [ + 6, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 0.5, + 4.875, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.5, + 4.75, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5, + 0.5, + 5.125, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 0.5, + 5, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 0.5, + 4.75, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 0.375, + 4.875, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 12 + ], + "to": [ + 6, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 0.125, + 4.875, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.125, + 4.75, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5, + 0.125, + 5.125, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 0.125, + 5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 0.125, + 4.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 0, + 4.875, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 2 + ], + "to": [ + 6, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 7.125, + 0.875, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 7.125, + 0.75, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 7.125, + 1.125, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 7.125, + 1, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 7.125, + 0.75, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 7, + 0.875, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 13 + ], + "to": [ + 6, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.125, + 0.25, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.125, + 0.125, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 7.125, + 0.5, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 7.125, + 0.375, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 7.125, + 0.125, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 7, + 0.25, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 4 + ], + "to": [ + 6, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 7, + 2, + 7.125, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 2, + 7, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.125, + 2, + 8.25, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 2, + 8.125, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 2, + 7, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1, + 7.125, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 11, + 12 + ], + "to": [ + 6, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.875, + 2.5, + 4, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 2.5, + 3.875, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 2.5, + 4.25, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2.5, + 4.125, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2.5, + 3.875, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 2.375, + 4, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 11, + 3 + ], + "to": [ + 6, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 3.125, + 3.875, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.625, + 3.125, + 3.75, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 3.125, + 4.125, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 3.125, + 4, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 3.125, + 3.75, + 3 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 3, + 3.875, + 3.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 3 + ], + "to": [ + 3, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.875, + 3.375, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.875, + 3.25, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.875, + 3.625, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.875, + 3.5, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.875, + 3.25, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.75, + 3.375, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 12 + ], + "to": [ + 3, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.5, + 3.375, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.5, + 3.25, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.5, + 3.625, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.5, + 3.5, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.5, + 3.25, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.375, + 3.375, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 2 + ], + "to": [ + 3, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 6.5, + 7, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.75, + 6.5, + 6.875, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 6.5, + 7.25, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 6.5, + 7.125, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7, + 6.5, + 6.875, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 6.375, + 7, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 13 + ], + "to": [ + 3, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 6.5, + 6.375, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.5, + 6.25, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 6.5, + 6.625, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 6.5, + 6.5, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 6.5, + 6.25, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 6.375, + 6.375, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 1, + 4 + ], + "to": [ + 3, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 5.875, + 5.875, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 5.875, + 5.75, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 5.875, + 7, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 5.875, + 6.875, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 5.875, + 5.75, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 4.875, + 5.875, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 12, + 4 + ], + "to": [ + 3, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 5.875, + 3.5, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 5.875, + 3.375, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 5.875, + 4.625, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 5.875, + 4.5, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 5.875, + 3.375, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 4.875, + 3.5, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 12 + ], + "to": [ + 3, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.875, + 0.25, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.875, + 0.125, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.875, + 0.5, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.875, + 0.375, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.875, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.75, + 0.25, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 3 + ], + "to": [ + 3, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.5, + 0.25, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.5, + 0.125, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.5, + 0.5, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.5, + 0.375, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.5, + 0.125, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.375, + 0.25, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 1, + 5 + ], + "to": [ + 4, + 2, + 6 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.5, + 0.25, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.5, + 0.125, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.5, + 0.5, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.5, + 0.375, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.5, + 0.125, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0.375, + 0.25, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 1, + 10 + ], + "to": [ + 4, + 2, + 11 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"melter", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "melter", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[0,1,2] - },{ - "name":"io", - "origin":[8,8,8], - "color":0, - "children":[ - 3,4, + "name": "frame", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2 + ] + }, + { + "name": "io", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 3, + 4, { - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[5,6] + "name": "power", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 5, + 6 + ] } ] - },{ - "name":"heatcoils", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "heatcoils", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "coilfront", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "name": "coilfrontmid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "name": "coilbackmid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + }, { - "name":"coilfront", - "origin":[8,8,8], - "color":0, - "children":[7,8,9,10,11,12,13,14,15,16] - },{ - "name":"coilfrontmid", - "origin":[8,8,8], - "color":0, - "children":[17,18,19,20,21,22,23] - },{ - "name":"coilbackmid", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"coilback", - "origin":[8,8,8], - "color":0, - "children":[31,32,33,34,35,36,37,38,39,40] + "name": "coilback", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] } ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieritem.json b/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieritem.json deleted file mode 100644 index 0460b386..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieritem.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "credit":"skip999", - "parent": "block/cube_all", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/moltensaltsupplier", - "particle":"nuclearscience:model/moltensaltsupplier" - }, - "elements":[ - {"from":[1,2,4],"to":[15,12,12],"faces":{"north":{"uv":[1,1,2.75,2.25],"texture":"#0"},"east":{"uv":[0,1,1,2.25],"texture":"#0"},"south":{"uv":[3.75,1,5.5,2.25],"texture":"#0"},"west":{"uv":[2.75,1,3.75,2.25],"texture":"#0"},"up":{"uv":[2.75,1,1,0],"texture":"#0"},"down":{"uv":[4.5,0,2.75,1],"texture":"#0"}}},{"from":[1,3,3],"to":[15,11,4],"faces":{"north":{"uv":[4,3.75,5.75,4.75],"texture":"#0"},"east":{"uv":[3.875,3.75,4,4.75],"texture":"#0"},"south":{"uv":[5.875,3.75,7.625,4.75],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4.75],"texture":"#0"},"up":{"uv":[5.75,3.75,4,3.625],"texture":"#0"},"down":{"uv":[7.5,3.625,5.75,3.75],"texture":"#0"}}},{"from":[1,3,12],"to":[15,11,13],"faces":{"north":{"uv":[0.125,3.75,1.875,4.75],"texture":"#0"},"east":{"uv":[0,3.75,0.125,4.75],"texture":"#0"},"south":{"uv":[2,3.75,3.75,4.75],"texture":"#0"},"west":{"uv":[1.875,3.75,2,4.75],"texture":"#0"},"up":{"uv":[1.875,3.75,0.125,3.625],"texture":"#0"},"down":{"uv":[3.625,3.625,1.875,3.75],"texture":"#0"}}},{"from":[0,3,4],"to":[1,11,12],"faces":{"north":{"uv":[1,5.875,1.125,6.875],"texture":"#0"},"east":{"uv":[0,5.875,1,6.875],"texture":"#0"},"south":{"uv":[2.125,5.875,2.25,6.875],"texture":"#0"},"west":{"uv":[1.125,5.875,2.125,6.875],"texture":"#0"},"up":{"uv":[1.125,5.875,1,4.875],"texture":"#0"},"down":{"uv":[1.25,4.875,1.125,5.875],"texture":"#0"}}}, - {"from":[15,3,4],"to":[16,11,12],"faces":{"north":{"uv":[5.625,2.375,5.75,3.375],"texture":"#0"},"east":{"uv":[4.625,2.375,5.625,3.375],"texture":"#0"},"south":{"uv":[6.75,2.375,6.875,3.375],"texture":"#0"},"west":{"uv":[5.75,2.375,6.75,3.375],"texture":"#0"},"up":{"uv":[5.75,2.375,5.625,1.375],"texture":"#0"},"down":{"uv":[5.875,1.375,5.75,2.375],"texture":"#0"}}},{"from":[4,1,4],"to":[12,2,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}},{"from":[5,0,5],"to":[11,1,11],"faces":{"north":{"uv":[5.375,0.75,6.125,0.875],"texture":"#0"},"east":{"uv":[4.625,0.75,5.375,0.875],"texture":"#0"},"south":{"uv":[6.875,0.75,7.625,0.875],"texture":"#0"},"west":{"uv":[6.125,0.75,6.875,0.875],"texture":"#0"},"up":{"uv":[6.125,0.75,5.375,0],"texture":"#0"},"down":{"uv":[6.875,0,6.125,0.75],"texture":"#0"}}},{"from":[13,2,3],"to":[14,3,4],"faces":{"north":{"uv":[2.125,5.375,2.25,5.5],"texture":"#0"},"east":{"uv":[2,5.375,2.125,5.5],"texture":"#0"},"south":{"uv":[2.375,5.375,2.5,5.5],"texture":"#0"},"west":{"uv":[2.25,5.375,2.375,5.5],"texture":"#0"},"up":{"uv":[2.25,5.375,2.125,5.25],"texture":"#0"},"down":{"uv":[2.375,5.25,2.25,5.375],"texture":"#0"}}}, - {"from":[13,2,12],"to":[14,3,13],"faces":{"north":{"uv":[1.5,5.375,1.625,5.5],"texture":"#0"},"east":{"uv":[1.375,5.375,1.5,5.5],"texture":"#0"},"south":{"uv":[1.75,5.375,1.875,5.5],"texture":"#0"},"west":{"uv":[1.625,5.375,1.75,5.5],"texture":"#0"},"up":{"uv":[1.625,5.375,1.5,5.25],"texture":"#0"},"down":{"uv":[1.75,5.25,1.625,5.375],"texture":"#0"}}},{"from":[13,3,2],"to":[14,11,3],"faces":{"north":{"uv":[2.625,7.5,2.75,8.5],"texture":"#0"},"east":{"uv":[2.5,7.5,2.625,8.5],"texture":"#0"},"south":{"uv":[2.875,7.5,3,8.5],"texture":"#0"},"west":{"uv":[2.75,7.5,2.875,8.5],"texture":"#0"},"up":{"uv":[2.75,7.5,2.625,7.375],"texture":"#0"},"down":{"uv":[2.875,7.375,2.75,7.5],"texture":"#0"}}},{"from":[13,3,13],"to":[14,11,14],"faces":{"north":{"uv":[2,7.5,2.125,8.5],"texture":"#0"},"east":{"uv":[1.875,7.5,2,8.5],"texture":"#0"},"south":{"uv":[2.25,7.5,2.375,8.5],"texture":"#0"},"west":{"uv":[2.125,7.5,2.25,8.5],"texture":"#0"},"up":{"uv":[2.125,7.5,2,7.375],"texture":"#0"},"down":{"uv":[2.25,7.375,2.125,7.5],"texture":"#0"}}},{"from":[13,1,4],"to":[14,2,12],"faces":{"north":{"uv":[7.125,6.125,7.25,6.25],"texture":"#0"},"east":{"uv":[6.125,6.125,7.125,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[7.25,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[7.25,6.125,7.125,5.125],"texture":"#0"},"down":{"uv":[7.375,5.125,7.25,6.125],"texture":"#0"}}}, - {"from":[12,1,5],"to":[13,2,6],"faces":{"north":{"uv":[0.125,5.375,0.25,5.5],"texture":"#0"},"east":{"uv":[0,5.375,0.125,5.5],"texture":"#0"},"south":{"uv":[0.375,5.375,0.5,5.5],"texture":"#0"},"west":{"uv":[0.25,5.375,0.375,5.5],"texture":"#0"},"up":{"uv":[0.25,5.375,0.125,5.25],"texture":"#0"},"down":{"uv":[0.375,5.25,0.25,5.375],"texture":"#0"}}},{"from":[12,1,10],"to":[13,2,11],"faces":{"north":{"uv":[5.125,5,5.25,5.125],"texture":"#0"},"east":{"uv":[5,5,5.125,5.125],"texture":"#0"},"south":{"uv":[5.375,5,5.5,5.125],"texture":"#0"},"west":{"uv":[5.25,5,5.375,5.125],"texture":"#0"},"up":{"uv":[5.25,5,5.125,4.875],"texture":"#0"},"down":{"uv":[5.375,4.875,5.25,5],"texture":"#0"}}},{"from":[13,12,4],"to":[14,13,12],"faces":{"north":{"uv":[4.75,7.125,4.875,7.25],"texture":"#0"},"east":{"uv":[3.75,7.125,4.75,7.25],"texture":"#0"},"south":{"uv":[5.875,7.125,6,7.25],"texture":"#0"},"west":{"uv":[4.875,7.125,5.875,7.25],"texture":"#0"},"up":{"uv":[4.875,7.125,4.75,6.125],"texture":"#0"},"down":{"uv":[5,6.125,4.875,7.125],"texture":"#0"}}},{"from":[13,11,12],"to":[14,12,13],"faces":{"north":{"uv":[4.5,5,4.625,5.125],"texture":"#0"},"east":{"uv":[4.375,5,4.5,5.125],"texture":"#0"},"south":{"uv":[4.75,5,4.875,5.125],"texture":"#0"},"west":{"uv":[4.625,5,4.75,5.125],"texture":"#0"},"up":{"uv":[4.625,5,4.5,4.875],"texture":"#0"},"down":{"uv":[4.75,4.875,4.625,5],"texture":"#0"}}}, - {"from":[13,11,3],"to":[14,12,4],"faces":{"north":{"uv":[3.875,5,4,5.125],"texture":"#0"},"east":{"uv":[3.75,5,3.875,5.125],"texture":"#0"},"south":{"uv":[4.125,5,4.25,5.125],"texture":"#0"},"west":{"uv":[4,5,4.125,5.125],"texture":"#0"},"up":{"uv":[4,5,3.875,4.875],"texture":"#0"},"down":{"uv":[4.125,4.875,4,5],"texture":"#0"}}},{"from":[10,2,3],"to":[11,3,4],"faces":{"north":{"uv":[2.75,5,2.875,5.125],"texture":"#0"},"east":{"uv":[2.625,5,2.75,5.125],"texture":"#0"},"south":{"uv":[3,5,3.125,5.125],"texture":"#0"},"west":{"uv":[2.875,5,3,5.125],"texture":"#0"},"up":{"uv":[2.875,5,2.75,4.875],"texture":"#0"},"down":{"uv":[3,4.875,2.875,5],"texture":"#0"}}},{"from":[10,2,12],"to":[11,3,13],"faces":{"north":{"uv":[2.125,5,2.25,5.125],"texture":"#0"},"east":{"uv":[2,5,2.125,5.125],"texture":"#0"},"south":{"uv":[2.375,5,2.5,5.125],"texture":"#0"},"west":{"uv":[2.25,5,2.375,5.125],"texture":"#0"},"up":{"uv":[2.25,5,2.125,4.875],"texture":"#0"},"down":{"uv":[2.375,4.875,2.25,5],"texture":"#0"}}},{"from":[10,3,2],"to":[11,11,3],"faces":{"north":{"uv":[1.375,7.5,1.5,8.5],"texture":"#0"},"east":{"uv":[1.25,7.5,1.375,8.5],"texture":"#0"},"south":{"uv":[1.625,7.5,1.75,8.5],"texture":"#0"},"west":{"uv":[1.5,7.5,1.625,8.5],"texture":"#0"},"up":{"uv":[1.5,7.5,1.375,7.375],"texture":"#0"},"down":{"uv":[1.625,7.375,1.5,7.5],"texture":"#0"}}}, - {"from":[10,3,13],"to":[11,11,14],"faces":{"north":{"uv":[7.125,2.375,7.25,3.375],"texture":"#0"},"east":{"uv":[7,2.375,7.125,3.375],"texture":"#0"},"south":{"uv":[7.375,2.375,7.5,3.375],"texture":"#0"},"west":{"uv":[7.25,2.375,7.375,3.375],"texture":"#0"},"up":{"uv":[7.25,2.375,7.125,2.25],"texture":"#0"},"down":{"uv":[7.375,2.25,7.25,2.375],"texture":"#0"}}},{"from":[10,12,4],"to":[11,13,12],"faces":{"north":{"uv":[2.375,7.125,2.5,7.25],"texture":"#0"},"east":{"uv":[1.375,7.125,2.375,7.25],"texture":"#0"},"south":{"uv":[3.5,7.125,3.625,7.25],"texture":"#0"},"west":{"uv":[2.5,7.125,3.5,7.25],"texture":"#0"},"up":{"uv":[2.5,7.125,2.375,6.125],"texture":"#0"},"down":{"uv":[2.625,6.125,2.5,7.125],"texture":"#0"}}},{"from":[10,11,12],"to":[11,12,13],"faces":{"north":{"uv":[1.5,5,1.625,5.125],"texture":"#0"},"east":{"uv":[1.375,5,1.5,5.125],"texture":"#0"},"south":{"uv":[1.75,5,1.875,5.125],"texture":"#0"},"west":{"uv":[1.625,5,1.75,5.125],"texture":"#0"},"up":{"uv":[1.625,5,1.5,4.875],"texture":"#0"},"down":{"uv":[1.75,4.875,1.625,5],"texture":"#0"}}},{"from":[10,11,3],"to":[11,12,4],"faces":{"north":{"uv":[0.125,5,0.25,5.125],"texture":"#0"},"east":{"uv":[0,5,0.125,5.125],"texture":"#0"},"south":{"uv":[0.375,5,0.5,5.125],"texture":"#0"},"west":{"uv":[0.25,5,0.375,5.125],"texture":"#0"},"up":{"uv":[0.25,5,0.125,4.875],"texture":"#0"},"down":{"uv":[0.375,4.875,0.25,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[6,3,4],"faces":{"north":{"uv":[4.75,0.5,4.875,0.625],"texture":"#0"},"east":{"uv":[4.625,0.5,4.75,0.625],"texture":"#0"},"south":{"uv":[5,0.5,5.125,0.625],"texture":"#0"},"west":{"uv":[4.875,0.5,5,0.625],"texture":"#0"},"up":{"uv":[4.875,0.5,4.75,0.375],"texture":"#0"},"down":{"uv":[5,0.375,4.875,0.5],"texture":"#0"}}},{"from":[5,2,12],"to":[6,3,13],"faces":{"north":{"uv":[4.75,0.125,4.875,0.25],"texture":"#0"},"east":{"uv":[4.625,0.125,4.75,0.25],"texture":"#0"},"south":{"uv":[5,0.125,5.125,0.25],"texture":"#0"},"west":{"uv":[4.875,0.125,5,0.25],"texture":"#0"},"up":{"uv":[4.875,0.125,4.75,0],"texture":"#0"},"down":{"uv":[5,0,4.875,0.125],"texture":"#0"}}},{"from":[5,3,2],"to":[6,11,3],"faces":{"north":{"uv":[0.75,7.125,0.875,8.125],"texture":"#0"},"east":{"uv":[0.625,7.125,0.75,8.125],"texture":"#0"},"south":{"uv":[1,7.125,1.125,8.125],"texture":"#0"},"west":{"uv":[0.875,7.125,1,8.125],"texture":"#0"},"up":{"uv":[0.875,7.125,0.75,7],"texture":"#0"},"down":{"uv":[1,7,0.875,7.125],"texture":"#0"}}},{"from":[5,3,13],"to":[6,11,14],"faces":{"north":{"uv":[0.125,7.125,0.25,8.125],"texture":"#0"},"east":{"uv":[0,7.125,0.125,8.125],"texture":"#0"},"south":{"uv":[0.375,7.125,0.5,8.125],"texture":"#0"},"west":{"uv":[0.25,7.125,0.375,8.125],"texture":"#0"},"up":{"uv":[0.25,7.125,0.125,7],"texture":"#0"},"down":{"uv":[0.375,7,0.25,7.125],"texture":"#0"}}}, - {"from":[5,12,4],"to":[6,13,12],"faces":{"north":{"uv":[7,2,7.125,2.125],"texture":"#0"},"east":{"uv":[6,2,7,2.125],"texture":"#0"},"south":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"west":{"uv":[7.125,2,8.125,2.125],"texture":"#0"},"up":{"uv":[7.125,2,7,1],"texture":"#0"},"down":{"uv":[7.25,1,7.125,2],"texture":"#0"}}},{"from":[5,11,12],"to":[6,12,13],"faces":{"north":{"uv":[3.875,2.5,4,2.625],"texture":"#0"},"east":{"uv":[3.75,2.5,3.875,2.625],"texture":"#0"},"south":{"uv":[4.125,2.5,4.25,2.625],"texture":"#0"},"west":{"uv":[4,2.5,4.125,2.625],"texture":"#0"},"up":{"uv":[4,2.5,3.875,2.375],"texture":"#0"},"down":{"uv":[4.125,2.375,4,2.5],"texture":"#0"}}},{"from":[5,11,3],"to":[6,12,4],"faces":{"north":{"uv":[3.75,3.125,3.875,3.25],"texture":"#0"},"east":{"uv":[3.625,3.125,3.75,3.25],"texture":"#0"},"south":{"uv":[4,3.125,4.125,3.25],"texture":"#0"},"west":{"uv":[3.875,3.125,4,3.25],"texture":"#0"},"up":{"uv":[3.875,3.125,3.75,3],"texture":"#0"},"down":{"uv":[4,3,3.875,3.125],"texture":"#0"}}},{"from":[2,2,3],"to":[3,3,4],"faces":{"north":{"uv":[3.25,2.875,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.875,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.875,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.875,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.875,3.25,2.75],"texture":"#0"},"down":{"uv":[3.5,2.75,3.375,2.875],"texture":"#0"}}}, - {"from":[2,2,12],"to":[3,3,13],"faces":{"north":{"uv":[3.25,2.5,3.375,2.625],"texture":"#0"},"east":{"uv":[3.125,2.5,3.25,2.625],"texture":"#0"},"south":{"uv":[3.5,2.5,3.625,2.625],"texture":"#0"},"west":{"uv":[3.375,2.5,3.5,2.625],"texture":"#0"},"up":{"uv":[3.375,2.5,3.25,2.375],"texture":"#0"},"down":{"uv":[3.5,2.375,3.375,2.5],"texture":"#0"}}},{"from":[2,3,2],"to":[3,11,3],"faces":{"north":{"uv":[6.875,6.5,7,7.5],"texture":"#0"},"east":{"uv":[6.75,6.5,6.875,7.5],"texture":"#0"},"south":{"uv":[7.125,6.5,7.25,7.5],"texture":"#0"},"west":{"uv":[7,6.5,7.125,7.5],"texture":"#0"},"up":{"uv":[7,6.5,6.875,6.375],"texture":"#0"},"down":{"uv":[7.125,6.375,7,6.5],"texture":"#0"}}},{"from":[2,3,13],"to":[3,11,14],"faces":{"north":{"uv":[6.25,6.5,6.375,7.5],"texture":"#0"},"east":{"uv":[6.125,6.5,6.25,7.5],"texture":"#0"},"south":{"uv":[6.5,6.5,6.625,7.5],"texture":"#0"},"west":{"uv":[6.375,6.5,6.5,7.5],"texture":"#0"},"up":{"uv":[6.375,6.5,6.25,6.375],"texture":"#0"},"down":{"uv":[6.5,6.375,6.375,6.5],"texture":"#0"}}},{"from":[2,1,4],"to":[3,2,12],"faces":{"north":{"uv":[5.75,5.875,5.875,6],"texture":"#0"},"east":{"uv":[4.75,5.875,5.75,6],"texture":"#0"},"south":{"uv":[6.875,5.875,7,6],"texture":"#0"},"west":{"uv":[5.875,5.875,6.875,6],"texture":"#0"},"up":{"uv":[5.875,5.875,5.75,4.875],"texture":"#0"},"down":{"uv":[6,4.875,5.875,5.875],"texture":"#0"}}}, - {"from":[2,12,4],"to":[3,13,12],"faces":{"north":{"uv":[3.375,5.875,3.5,6],"texture":"#0"},"east":{"uv":[2.375,5.875,3.375,6],"texture":"#0"},"south":{"uv":[4.5,5.875,4.625,6],"texture":"#0"},"west":{"uv":[3.5,5.875,4.5,6],"texture":"#0"},"up":{"uv":[3.5,5.875,3.375,4.875],"texture":"#0"},"down":{"uv":[3.625,4.875,3.5,5.875],"texture":"#0"}}},{"from":[2,11,12],"to":[3,12,13],"faces":{"north":{"uv":[0.125,2.875,0.25,3],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3],"texture":"#0"},"south":{"uv":[0.375,2.875,0.5,3],"texture":"#0"},"west":{"uv":[0.25,2.875,0.375,3],"texture":"#0"},"up":{"uv":[0.25,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[0.375,2.75,0.25,2.875],"texture":"#0"}}},{"from":[2,11,3],"to":[3,12,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.625],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.625],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.625],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.625],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[3,1,5],"to":[4,2,6],"faces":{"north":{"uv":[0.125,0.5,0.25,0.625],"texture":"#0"},"east":{"uv":[0,0.5,0.125,0.625],"texture":"#0"},"south":{"uv":[0.375,0.5,0.5,0.625],"texture":"#0"},"west":{"uv":[0.25,0.5,0.375,0.625],"texture":"#0"},"up":{"uv":[0.25,0.5,0.125,0.375],"texture":"#0"},"down":{"uv":[0.375,0.375,0.25,0.5],"texture":"#0"}}}, - {"from":[3,1,10],"to":[4,2,11],"faces":{"north":{"uv":[0.125,0.125,0.25,0.25],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.25],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.25],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.25],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}} - ], - "groups":[ - { - "name":"melter", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[0,1,2] - },{ - "name":"io", - "origin":[8,8,8], - "color":0, - "children":[ - 3,4, - { - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[5,6] - } - ] - },{ - "name":"heatcoils", - "origin":[8,8,8], - "color":0, - "children":[ - { - "name":"coilfront", - "origin":[8,8,8], - "color":0, - "children":[7,8,9,10,11,12,13,14,15,16] - },{ - "name":"coilfrontmid", - "origin":[8,8,8], - "color":0, - "children":[17,18,19,20,21,22,23] - },{ - "name":"coilbackmid", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"coilback", - "origin":[8,8,8], - "color":0, - "children":[31,32,33,34,35,36,37,38,39,40] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieron.json b/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieron.json index adc78b1e..70a65630 100644 --- a/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieron.json +++ b/src/main/resources/assets/nuclearscience/models/block/moltensaltsupplieron.json @@ -1,76 +1,2944 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/moltensaltsupplieron", - "particle":"nuclearscience:model/moltensaltsupplieron" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/moltensaltsupplieron", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[1,2,4],"to":[15,12,12],"faces":{"north":{"uv":[1,1,2.75,2.25],"texture":"#0"},"east":{"uv":[0,1,1,2.25],"texture":"#0"},"south":{"uv":[3.75,1,5.5,2.25],"texture":"#0"},"west":{"uv":[2.75,1,3.75,2.25],"texture":"#0"},"up":{"uv":[2.75,1,1,0],"texture":"#0"},"down":{"uv":[4.5,0,2.75,1],"texture":"#0"}}},{"from":[1,3,3],"to":[15,11,4],"faces":{"north":{"uv":[4,3.75,5.75,4.75],"texture":"#0"},"east":{"uv":[3.875,3.75,4,4.75],"texture":"#0"},"south":{"uv":[5.875,3.75,7.625,4.75],"texture":"#0"},"west":{"uv":[5.75,3.75,5.875,4.75],"texture":"#0"},"up":{"uv":[5.75,3.75,4,3.625],"texture":"#0"},"down":{"uv":[7.5,3.625,5.75,3.75],"texture":"#0"}}},{"from":[1,3,12],"to":[15,11,13],"faces":{"north":{"uv":[0.125,3.75,1.875,4.75],"texture":"#0"},"east":{"uv":[0,3.75,0.125,4.75],"texture":"#0"},"south":{"uv":[2,3.75,3.75,4.75],"texture":"#0"},"west":{"uv":[1.875,3.75,2,4.75],"texture":"#0"},"up":{"uv":[1.875,3.75,0.125,3.625],"texture":"#0"},"down":{"uv":[3.625,3.625,1.875,3.75],"texture":"#0"}}},{"from":[0,3,4],"to":[1,11,12],"faces":{"north":{"uv":[1,5.875,1.125,6.875],"texture":"#0"},"east":{"uv":[0,5.875,1,6.875],"texture":"#0"},"south":{"uv":[2.125,5.875,2.25,6.875],"texture":"#0"},"west":{"uv":[1.125,5.875,2.125,6.875],"texture":"#0"},"up":{"uv":[1.125,5.875,1,4.875],"texture":"#0"},"down":{"uv":[1.25,4.875,1.125,5.875],"texture":"#0"}}}, - {"from":[15,3,4],"to":[16,11,12],"faces":{"north":{"uv":[5.625,2.375,5.75,3.375],"texture":"#0"},"east":{"uv":[4.625,2.375,5.625,3.375],"texture":"#0"},"south":{"uv":[6.75,2.375,6.875,3.375],"texture":"#0"},"west":{"uv":[5.75,2.375,6.75,3.375],"texture":"#0"},"up":{"uv":[5.75,2.375,5.625,1.375],"texture":"#0"},"down":{"uv":[5.875,1.375,5.75,2.375],"texture":"#0"}}},{"from":[4,1,4],"to":[12,2,12],"faces":{"north":{"uv":[1,3.375,2,3.5],"texture":"#0"},"east":{"uv":[0,3.375,1,3.5],"texture":"#0"},"south":{"uv":[3,3.375,4,3.5],"texture":"#0"},"west":{"uv":[2,3.375,3,3.5],"texture":"#0"},"up":{"uv":[2,3.375,1,2.375],"texture":"#0"},"down":{"uv":[3,2.375,2,3.375],"texture":"#0"}}},{"from":[5,0,5],"to":[11,1,11],"faces":{"north":{"uv":[5.375,0.75,6.125,0.875],"texture":"#0"},"east":{"uv":[4.625,0.75,5.375,0.875],"texture":"#0"},"south":{"uv":[6.875,0.75,7.625,0.875],"texture":"#0"},"west":{"uv":[6.125,0.75,6.875,0.875],"texture":"#0"},"up":{"uv":[6.125,0.75,5.375,0],"texture":"#0"},"down":{"uv":[6.875,0,6.125,0.75],"texture":"#0"}}},{"from":[13,2,3],"to":[14,3,4],"faces":{"north":{"uv":[2.125,5.375,2.25,5.5],"texture":"#0"},"east":{"uv":[2,5.375,2.125,5.5],"texture":"#0"},"south":{"uv":[2.375,5.375,2.5,5.5],"texture":"#0"},"west":{"uv":[2.25,5.375,2.375,5.5],"texture":"#0"},"up":{"uv":[2.25,5.375,2.125,5.25],"texture":"#0"},"down":{"uv":[2.375,5.25,2.25,5.375],"texture":"#0"}}}, - {"from":[13,2,12],"to":[14,3,13],"faces":{"north":{"uv":[1.5,5.375,1.625,5.5],"texture":"#0"},"east":{"uv":[1.375,5.375,1.5,5.5],"texture":"#0"},"south":{"uv":[1.75,5.375,1.875,5.5],"texture":"#0"},"west":{"uv":[1.625,5.375,1.75,5.5],"texture":"#0"},"up":{"uv":[1.625,5.375,1.5,5.25],"texture":"#0"},"down":{"uv":[1.75,5.25,1.625,5.375],"texture":"#0"}}},{"from":[13,3,2],"to":[14,11,3],"faces":{"north":{"uv":[2.625,7.5,2.75,8.5],"texture":"#0"},"east":{"uv":[2.5,7.5,2.625,8.5],"texture":"#0"},"south":{"uv":[2.875,7.5,3,8.5],"texture":"#0"},"west":{"uv":[2.75,7.5,2.875,8.5],"texture":"#0"},"up":{"uv":[2.75,7.5,2.625,7.375],"texture":"#0"},"down":{"uv":[2.875,7.375,2.75,7.5],"texture":"#0"}}},{"from":[13,3,13],"to":[14,11,14],"faces":{"north":{"uv":[2,7.5,2.125,8.5],"texture":"#0"},"east":{"uv":[1.875,7.5,2,8.5],"texture":"#0"},"south":{"uv":[2.25,7.5,2.375,8.5],"texture":"#0"},"west":{"uv":[2.125,7.5,2.25,8.5],"texture":"#0"},"up":{"uv":[2.125,7.5,2,7.375],"texture":"#0"},"down":{"uv":[2.25,7.375,2.125,7.5],"texture":"#0"}}},{"from":[13,1,4],"to":[14,2,12],"faces":{"north":{"uv":[7.125,6.125,7.25,6.25],"texture":"#0"},"east":{"uv":[6.125,6.125,7.125,6.25],"texture":"#0"},"south":{"uv":[8.25,6.125,8.375,6.25],"texture":"#0"},"west":{"uv":[7.25,6.125,8.25,6.25],"texture":"#0"},"up":{"uv":[7.25,6.125,7.125,5.125],"texture":"#0"},"down":{"uv":[7.375,5.125,7.25,6.125],"texture":"#0"}}}, - {"from":[12,1,5],"to":[13,2,6],"faces":{"north":{"uv":[0.125,5.375,0.25,5.5],"texture":"#0"},"east":{"uv":[0,5.375,0.125,5.5],"texture":"#0"},"south":{"uv":[0.375,5.375,0.5,5.5],"texture":"#0"},"west":{"uv":[0.25,5.375,0.375,5.5],"texture":"#0"},"up":{"uv":[0.25,5.375,0.125,5.25],"texture":"#0"},"down":{"uv":[0.375,5.25,0.25,5.375],"texture":"#0"}}},{"from":[12,1,10],"to":[13,2,11],"faces":{"north":{"uv":[5.125,5,5.25,5.125],"texture":"#0"},"east":{"uv":[5,5,5.125,5.125],"texture":"#0"},"south":{"uv":[5.375,5,5.5,5.125],"texture":"#0"},"west":{"uv":[5.25,5,5.375,5.125],"texture":"#0"},"up":{"uv":[5.25,5,5.125,4.875],"texture":"#0"},"down":{"uv":[5.375,4.875,5.25,5],"texture":"#0"}}},{"from":[13,12,4],"to":[14,13,12],"faces":{"north":{"uv":[4.75,7.125,4.875,7.25],"texture":"#0"},"east":{"uv":[3.75,7.125,4.75,7.25],"texture":"#0"},"south":{"uv":[5.875,7.125,6,7.25],"texture":"#0"},"west":{"uv":[4.875,7.125,5.875,7.25],"texture":"#0"},"up":{"uv":[4.875,7.125,4.75,6.125],"texture":"#0"},"down":{"uv":[5,6.125,4.875,7.125],"texture":"#0"}}},{"from":[13,11,12],"to":[14,12,13],"faces":{"north":{"uv":[4.5,5,4.625,5.125],"texture":"#0"},"east":{"uv":[4.375,5,4.5,5.125],"texture":"#0"},"south":{"uv":[4.75,5,4.875,5.125],"texture":"#0"},"west":{"uv":[4.625,5,4.75,5.125],"texture":"#0"},"up":{"uv":[4.625,5,4.5,4.875],"texture":"#0"},"down":{"uv":[4.75,4.875,4.625,5],"texture":"#0"}}}, - {"from":[13,11,3],"to":[14,12,4],"faces":{"north":{"uv":[3.875,5,4,5.125],"texture":"#0"},"east":{"uv":[3.75,5,3.875,5.125],"texture":"#0"},"south":{"uv":[4.125,5,4.25,5.125],"texture":"#0"},"west":{"uv":[4,5,4.125,5.125],"texture":"#0"},"up":{"uv":[4,5,3.875,4.875],"texture":"#0"},"down":{"uv":[4.125,4.875,4,5],"texture":"#0"}}},{"from":[10,2,3],"to":[11,3,4],"faces":{"north":{"uv":[2.75,5,2.875,5.125],"texture":"#0"},"east":{"uv":[2.625,5,2.75,5.125],"texture":"#0"},"south":{"uv":[3,5,3.125,5.125],"texture":"#0"},"west":{"uv":[2.875,5,3,5.125],"texture":"#0"},"up":{"uv":[2.875,5,2.75,4.875],"texture":"#0"},"down":{"uv":[3,4.875,2.875,5],"texture":"#0"}}},{"from":[10,2,12],"to":[11,3,13],"faces":{"north":{"uv":[2.125,5,2.25,5.125],"texture":"#0"},"east":{"uv":[2,5,2.125,5.125],"texture":"#0"},"south":{"uv":[2.375,5,2.5,5.125],"texture":"#0"},"west":{"uv":[2.25,5,2.375,5.125],"texture":"#0"},"up":{"uv":[2.25,5,2.125,4.875],"texture":"#0"},"down":{"uv":[2.375,4.875,2.25,5],"texture":"#0"}}},{"from":[10,3,2],"to":[11,11,3],"faces":{"north":{"uv":[1.375,7.5,1.5,8.5],"texture":"#0"},"east":{"uv":[1.25,7.5,1.375,8.5],"texture":"#0"},"south":{"uv":[1.625,7.5,1.75,8.5],"texture":"#0"},"west":{"uv":[1.5,7.5,1.625,8.5],"texture":"#0"},"up":{"uv":[1.5,7.5,1.375,7.375],"texture":"#0"},"down":{"uv":[1.625,7.375,1.5,7.5],"texture":"#0"}}}, - {"from":[10,3,13],"to":[11,11,14],"faces":{"north":{"uv":[7.125,2.375,7.25,3.375],"texture":"#0"},"east":{"uv":[7,2.375,7.125,3.375],"texture":"#0"},"south":{"uv":[7.375,2.375,7.5,3.375],"texture":"#0"},"west":{"uv":[7.25,2.375,7.375,3.375],"texture":"#0"},"up":{"uv":[7.25,2.375,7.125,2.25],"texture":"#0"},"down":{"uv":[7.375,2.25,7.25,2.375],"texture":"#0"}}},{"from":[10,12,4],"to":[11,13,12],"faces":{"north":{"uv":[2.375,7.125,2.5,7.25],"texture":"#0"},"east":{"uv":[1.375,7.125,2.375,7.25],"texture":"#0"},"south":{"uv":[3.5,7.125,3.625,7.25],"texture":"#0"},"west":{"uv":[2.5,7.125,3.5,7.25],"texture":"#0"},"up":{"uv":[2.5,7.125,2.375,6.125],"texture":"#0"},"down":{"uv":[2.625,6.125,2.5,7.125],"texture":"#0"}}},{"from":[10,11,12],"to":[11,12,13],"faces":{"north":{"uv":[1.5,5,1.625,5.125],"texture":"#0"},"east":{"uv":[1.375,5,1.5,5.125],"texture":"#0"},"south":{"uv":[1.75,5,1.875,5.125],"texture":"#0"},"west":{"uv":[1.625,5,1.75,5.125],"texture":"#0"},"up":{"uv":[1.625,5,1.5,4.875],"texture":"#0"},"down":{"uv":[1.75,4.875,1.625,5],"texture":"#0"}}},{"from":[10,11,3],"to":[11,12,4],"faces":{"north":{"uv":[0.125,5,0.25,5.125],"texture":"#0"},"east":{"uv":[0,5,0.125,5.125],"texture":"#0"},"south":{"uv":[0.375,5,0.5,5.125],"texture":"#0"},"west":{"uv":[0.25,5,0.375,5.125],"texture":"#0"},"up":{"uv":[0.25,5,0.125,4.875],"texture":"#0"},"down":{"uv":[0.375,4.875,0.25,5],"texture":"#0"}}}, - {"from":[5,2,3],"to":[6,3,4],"faces":{"north":{"uv":[4.75,0.5,4.875,0.625],"texture":"#0"},"east":{"uv":[4.625,0.5,4.75,0.625],"texture":"#0"},"south":{"uv":[5,0.5,5.125,0.625],"texture":"#0"},"west":{"uv":[4.875,0.5,5,0.625],"texture":"#0"},"up":{"uv":[4.875,0.5,4.75,0.375],"texture":"#0"},"down":{"uv":[5,0.375,4.875,0.5],"texture":"#0"}}},{"from":[5,2,12],"to":[6,3,13],"faces":{"north":{"uv":[4.75,0.125,4.875,0.25],"texture":"#0"},"east":{"uv":[4.625,0.125,4.75,0.25],"texture":"#0"},"south":{"uv":[5,0.125,5.125,0.25],"texture":"#0"},"west":{"uv":[4.875,0.125,5,0.25],"texture":"#0"},"up":{"uv":[4.875,0.125,4.75,0],"texture":"#0"},"down":{"uv":[5,0,4.875,0.125],"texture":"#0"}}},{"from":[5,3,2],"to":[6,11,3],"faces":{"north":{"uv":[0.75,7.125,0.875,8.125],"texture":"#0"},"east":{"uv":[0.625,7.125,0.75,8.125],"texture":"#0"},"south":{"uv":[1,7.125,1.125,8.125],"texture":"#0"},"west":{"uv":[0.875,7.125,1,8.125],"texture":"#0"},"up":{"uv":[0.875,7.125,0.75,7],"texture":"#0"},"down":{"uv":[1,7,0.875,7.125],"texture":"#0"}}},{"from":[5,3,13],"to":[6,11,14],"faces":{"north":{"uv":[0.125,7.125,0.25,8.125],"texture":"#0"},"east":{"uv":[0,7.125,0.125,8.125],"texture":"#0"},"south":{"uv":[0.375,7.125,0.5,8.125],"texture":"#0"},"west":{"uv":[0.25,7.125,0.375,8.125],"texture":"#0"},"up":{"uv":[0.25,7.125,0.125,7],"texture":"#0"},"down":{"uv":[0.375,7,0.25,7.125],"texture":"#0"}}}, - {"from":[5,12,4],"to":[6,13,12],"faces":{"north":{"uv":[7,2,7.125,2.125],"texture":"#0"},"east":{"uv":[6,2,7,2.125],"texture":"#0"},"south":{"uv":[8.125,2,8.25,2.125],"texture":"#0"},"west":{"uv":[7.125,2,8.125,2.125],"texture":"#0"},"up":{"uv":[7.125,2,7,1],"texture":"#0"},"down":{"uv":[7.25,1,7.125,2],"texture":"#0"}}},{"from":[5,11,12],"to":[6,12,13],"faces":{"north":{"uv":[3.875,2.5,4,2.625],"texture":"#0"},"east":{"uv":[3.75,2.5,3.875,2.625],"texture":"#0"},"south":{"uv":[4.125,2.5,4.25,2.625],"texture":"#0"},"west":{"uv":[4,2.5,4.125,2.625],"texture":"#0"},"up":{"uv":[4,2.5,3.875,2.375],"texture":"#0"},"down":{"uv":[4.125,2.375,4,2.5],"texture":"#0"}}},{"from":[5,11,3],"to":[6,12,4],"faces":{"north":{"uv":[3.75,3.125,3.875,3.25],"texture":"#0"},"east":{"uv":[3.625,3.125,3.75,3.25],"texture":"#0"},"south":{"uv":[4,3.125,4.125,3.25],"texture":"#0"},"west":{"uv":[3.875,3.125,4,3.25],"texture":"#0"},"up":{"uv":[3.875,3.125,3.75,3],"texture":"#0"},"down":{"uv":[4,3,3.875,3.125],"texture":"#0"}}},{"from":[2,2,3],"to":[3,3,4],"faces":{"north":{"uv":[3.25,2.875,3.375,3],"texture":"#0"},"east":{"uv":[3.125,2.875,3.25,3],"texture":"#0"},"south":{"uv":[3.5,2.875,3.625,3],"texture":"#0"},"west":{"uv":[3.375,2.875,3.5,3],"texture":"#0"},"up":{"uv":[3.375,2.875,3.25,2.75],"texture":"#0"},"down":{"uv":[3.5,2.75,3.375,2.875],"texture":"#0"}}}, - {"from":[2,2,12],"to":[3,3,13],"faces":{"north":{"uv":[3.25,2.5,3.375,2.625],"texture":"#0"},"east":{"uv":[3.125,2.5,3.25,2.625],"texture":"#0"},"south":{"uv":[3.5,2.5,3.625,2.625],"texture":"#0"},"west":{"uv":[3.375,2.5,3.5,2.625],"texture":"#0"},"up":{"uv":[3.375,2.5,3.25,2.375],"texture":"#0"},"down":{"uv":[3.5,2.375,3.375,2.5],"texture":"#0"}}},{"from":[2,3,2],"to":[3,11,3],"faces":{"north":{"uv":[6.875,6.5,7,7.5],"texture":"#0"},"east":{"uv":[6.75,6.5,6.875,7.5],"texture":"#0"},"south":{"uv":[7.125,6.5,7.25,7.5],"texture":"#0"},"west":{"uv":[7,6.5,7.125,7.5],"texture":"#0"},"up":{"uv":[7,6.5,6.875,6.375],"texture":"#0"},"down":{"uv":[7.125,6.375,7,6.5],"texture":"#0"}}},{"from":[2,3,13],"to":[3,11,14],"faces":{"north":{"uv":[6.25,6.5,6.375,7.5],"texture":"#0"},"east":{"uv":[6.125,6.5,6.25,7.5],"texture":"#0"},"south":{"uv":[6.5,6.5,6.625,7.5],"texture":"#0"},"west":{"uv":[6.375,6.5,6.5,7.5],"texture":"#0"},"up":{"uv":[6.375,6.5,6.25,6.375],"texture":"#0"},"down":{"uv":[6.5,6.375,6.375,6.5],"texture":"#0"}}},{"from":[2,1,4],"to":[3,2,12],"faces":{"north":{"uv":[5.75,5.875,5.875,6],"texture":"#0"},"east":{"uv":[4.75,5.875,5.75,6],"texture":"#0"},"south":{"uv":[6.875,5.875,7,6],"texture":"#0"},"west":{"uv":[5.875,5.875,6.875,6],"texture":"#0"},"up":{"uv":[5.875,5.875,5.75,4.875],"texture":"#0"},"down":{"uv":[6,4.875,5.875,5.875],"texture":"#0"}}}, - {"from":[2,12,4],"to":[3,13,12],"faces":{"north":{"uv":[3.375,5.875,3.5,6],"texture":"#0"},"east":{"uv":[2.375,5.875,3.375,6],"texture":"#0"},"south":{"uv":[4.5,5.875,4.625,6],"texture":"#0"},"west":{"uv":[3.5,5.875,4.5,6],"texture":"#0"},"up":{"uv":[3.5,5.875,3.375,4.875],"texture":"#0"},"down":{"uv":[3.625,4.875,3.5,5.875],"texture":"#0"}}},{"from":[2,11,12],"to":[3,12,13],"faces":{"north":{"uv":[0.125,2.875,0.25,3],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3],"texture":"#0"},"south":{"uv":[0.375,2.875,0.5,3],"texture":"#0"},"west":{"uv":[0.25,2.875,0.375,3],"texture":"#0"},"up":{"uv":[0.25,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[0.375,2.75,0.25,2.875],"texture":"#0"}}},{"from":[2,11,3],"to":[3,12,4],"faces":{"north":{"uv":[0.125,2.5,0.25,2.625],"texture":"#0"},"east":{"uv":[0,2.5,0.125,2.625],"texture":"#0"},"south":{"uv":[0.375,2.5,0.5,2.625],"texture":"#0"},"west":{"uv":[0.25,2.5,0.375,2.625],"texture":"#0"},"up":{"uv":[0.25,2.5,0.125,2.375],"texture":"#0"},"down":{"uv":[0.375,2.375,0.25,2.5],"texture":"#0"}}},{"from":[3,1,5],"to":[4,2,6],"faces":{"north":{"uv":[0.125,0.5,0.25,0.625],"texture":"#0"},"east":{"uv":[0,0.5,0.125,0.625],"texture":"#0"},"south":{"uv":[0.375,0.5,0.5,0.625],"texture":"#0"},"west":{"uv":[0.25,0.5,0.375,0.625],"texture":"#0"},"up":{"uv":[0.25,0.5,0.125,0.375],"texture":"#0"},"down":{"uv":[0.375,0.375,0.25,0.5],"texture":"#0"}}}, - {"from":[3,1,10],"to":[4,2,11],"faces":{"north":{"uv":[0.125,0.125,0.25,0.25],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.25],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.25],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.25],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}} + "elements": [ + { + "from": [ + 1, + 2, + 4 + ], + "to": [ + 15, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 1, + 2.75, + 2.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1, + 1, + 2.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.75, + 1, + 5.5, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.75, + 1, + 3.75, + 2.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.75, + 1, + 1, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 0, + 2.75, + 1 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 3, + 3 + ], + "to": [ + 15, + 11, + 4 + ], + "faces": { + "north": { + "uv": [ + 4, + 3.75, + 5.75, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 3.75, + 4, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 3.75, + 7.625, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.75, + 5.875, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.75, + 4, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.5, + 3.625, + 5.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 3, + 12 + ], + "to": [ + 15, + 11, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 3.75, + 1.875, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.75, + 0.125, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 3.75, + 3.75, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 3.75, + 2, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.875, + 3.75, + 0.125, + 3.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 3.625, + 1.875, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 3, + 4 + ], + "to": [ + 1, + 11, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 5.875, + 1.125, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.875, + 1, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 5.875, + 2.25, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.125, + 5.875, + 2.125, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.125, + 5.875, + 1, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.25, + 4.875, + 1.125, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 3, + 4 + ], + "to": [ + 16, + 11, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 2.375, + 5.75, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 2.375, + 5.625, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 2.375, + 6.875, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 2.375, + 6.75, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 2.375, + 5.625, + 1.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 1.375, + 5.75, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 1, + 4 + ], + "to": [ + 12, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 1, + 3.375, + 2, + 3.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 1, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 3.375, + 4, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 3.375, + 3, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 3.375, + 1, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 2.375, + 2, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 0, + 5 + ], + "to": [ + 11, + 1, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 0.75, + 6.125, + 0.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.75, + 5.375, + 0.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.75, + 7.625, + 0.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.125, + 0.75, + 6.875, + 0.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 0.75, + 5.375, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.875, + 0, + 6.125, + 0.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 2, + 3 + ], + "to": [ + 14, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 5.375, + 2.25, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2, + 5.375, + 2.125, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.375, + 5.375, + 2.5, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 5.375, + 2.375, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 5.375, + 2.125, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 5.25, + 2.25, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 2, + 12 + ], + "to": [ + 14, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 5.375, + 1.625, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 5.375, + 1.5, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 5.375, + 1.875, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 5.375, + 1.75, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 5.375, + 1.5, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 5.25, + 1.625, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 2 + ], + "to": [ + 14, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 2.625, + 7.5, + 2.75, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.5, + 7.5, + 2.625, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.875, + 7.5, + 3, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.75, + 7.5, + 2.875, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.75, + 7.5, + 2.625, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.875, + 7.375, + 2.75, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 3, + 13 + ], + "to": [ + 14, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 2, + 7.5, + 2.125, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 7.5, + 2, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 7.5, + 2.375, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.125, + 7.5, + 2.25, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.125, + 7.5, + 2, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.25, + 7.375, + 2.125, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 1, + 4 + ], + "to": [ + 14, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 6.125, + 7.25, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.125, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 6.125, + 8.375, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 6.125, + 8.25, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 6.125, + 7.125, + 5.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 5.125, + 7.25, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 1, + 5 + ], + "to": [ + 13, + 2, + 6 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.375, + 0.25, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.375, + 0.125, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5.375, + 0.5, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5.375, + 0.375, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5.375, + 0.125, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 5.25, + 0.25, + 5.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 1, + 10 + ], + "to": [ + 13, + 2, + 11 + ], + "faces": { + "north": { + "uv": [ + 5.125, + 5, + 5.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 5, + 5.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.375, + 5, + 5.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 5, + 5.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 5, + 5.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 4.875, + 5.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 12, + 4 + ], + "to": [ + 14, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 7.125, + 4.875, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 7.125, + 4.75, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 7.125, + 6, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 7.125, + 5.875, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 7.125, + 4.75, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 6.125, + 4.875, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 11, + 12 + ], + "to": [ + 14, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.5, + 5, + 4.625, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 5, + 4.5, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 5, + 4.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.625, + 5, + 4.75, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.625, + 5, + 4.5, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.75, + 4.875, + 4.625, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 11, + 3 + ], + "to": [ + 14, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.875, + 5, + 4, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 5, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 5, + 4.25, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 5, + 4.125, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 5, + 3.875, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 4.875, + 4, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 2, + 3 + ], + "to": [ + 11, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.75, + 5, + 2.875, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.625, + 5, + 2.75, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 5, + 3.125, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 5, + 3, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.875, + 5, + 2.75, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 4.875, + 2.875, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 2, + 12 + ], + "to": [ + 11, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 5, + 2.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2, + 5, + 2.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.375, + 5, + 2.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 5, + 2.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 5, + 2.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 4.875, + 2.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 2 + ], + "to": [ + 11, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 1.375, + 7.5, + 1.5, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 7.5, + 1.375, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.625, + 7.5, + 1.75, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 7.5, + 1.625, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 7.5, + 1.375, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.625, + 7.375, + 1.5, + 7.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 3, + 13 + ], + "to": [ + 11, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 2.375, + 7.25, + 3.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7, + 2.375, + 7.125, + 3.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.375, + 2.375, + 7.5, + 3.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 2.375, + 7.375, + 3.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 2.375, + 7.125, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 2.25, + 7.25, + 2.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 12, + 4 + ], + "to": [ + 11, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 7.125, + 2.5, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 7.125, + 2.375, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 7.125, + 3.625, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 7.125, + 3.5, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 7.125, + 2.375, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 6.125, + 2.5, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 11, + 12 + ], + "to": [ + 11, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 5, + 1.625, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 5, + 1.5, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 5, + 1.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 5, + 1.75, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 5, + 1.5, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 4.875, + 1.625, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 11, + 3 + ], + "to": [ + 11, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5, + 0.25, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5, + 0.125, + 5.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5, + 0.5, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5, + 0.375, + 5.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5, + 0.125, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 4.875, + 0.25, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 3 + ], + "to": [ + 6, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 0.5, + 4.875, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.5, + 4.75, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5, + 0.5, + 5.125, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 0.5, + 5, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 0.5, + 4.75, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 0.375, + 4.875, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 2, + 12 + ], + "to": [ + 6, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 0.125, + 4.875, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.125, + 4.75, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5, + 0.125, + 5.125, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 0.125, + 5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 0.125, + 4.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 0, + 4.875, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 2 + ], + "to": [ + 6, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 7.125, + 0.875, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 7.125, + 0.75, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 7.125, + 1.125, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 7.125, + 1, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 7.125, + 0.75, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 7, + 0.875, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 3, + 13 + ], + "to": [ + 6, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.125, + 0.25, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.125, + 0.125, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 7.125, + 0.5, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 7.125, + 0.375, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 7.125, + 0.125, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 7, + 0.25, + 7.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 12, + 4 + ], + "to": [ + 6, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 7, + 2, + 7.125, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 2, + 7, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.125, + 2, + 8.25, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 2, + 8.125, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 2, + 7, + 1 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1, + 7.125, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 11, + 12 + ], + "to": [ + 6, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.875, + 2.5, + 4, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 2.5, + 3.875, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.125, + 2.5, + 4.25, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2.5, + 4.125, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2.5, + 3.875, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.125, + 2.375, + 4, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 11, + 3 + ], + "to": [ + 6, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 3.125, + 3.875, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.625, + 3.125, + 3.75, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 3.125, + 4.125, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 3.125, + 4, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 3.125, + 3.75, + 3 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 3, + 3.875, + 3.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 3 + ], + "to": [ + 3, + 3, + 4 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.875, + 3.375, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.875, + 3.25, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.875, + 3.625, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.875, + 3.5, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.875, + 3.25, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.75, + 3.375, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 2, + 12 + ], + "to": [ + 3, + 3, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.25, + 2.5, + 3.375, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 2.5, + 3.25, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 2.5, + 3.625, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.375, + 2.5, + 3.5, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.375, + 2.5, + 3.25, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 2.375, + 3.375, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 2 + ], + "to": [ + 3, + 11, + 3 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 6.5, + 7, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.75, + 6.5, + 6.875, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 6.5, + 7.25, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 6.5, + 7.125, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7, + 6.5, + 6.875, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 6.375, + 7, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 3, + 13 + ], + "to": [ + 3, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 6.5, + 6.375, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.5, + 6.25, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 6.5, + 6.625, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 6.5, + 6.5, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 6.5, + 6.25, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 6.375, + 6.375, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 1, + 4 + ], + "to": [ + 3, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 5.875, + 5.875, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 5.875, + 5.75, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 5.875, + 7, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 5.875, + 6.875, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 5.875, + 5.75, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 4.875, + 5.875, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 12, + 4 + ], + "to": [ + 3, + 13, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 5.875, + 3.5, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 5.875, + 3.375, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 5.875, + 4.625, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 5.875, + 4.5, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 5.875, + 3.375, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 4.875, + 3.5, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 12 + ], + "to": [ + 3, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.875, + 0.25, + 3 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.875, + 0.125, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.875, + 0.5, + 3 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.875, + 0.375, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.875, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.75, + 0.25, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 11, + 3 + ], + "to": [ + 3, + 12, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.5, + 0.25, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.5, + 0.125, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 2.5, + 0.5, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 2.5, + 0.375, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 2.5, + 0.125, + 2.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 2.375, + 0.25, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 1, + 5 + ], + "to": [ + 4, + 2, + 6 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.5, + 0.25, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.5, + 0.125, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.5, + 0.5, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.5, + 0.375, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.5, + 0.125, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0.375, + 0.25, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 1, + 10 + ], + "to": [ + 4, + 2, + 11 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"melter", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "melter", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[0,1,2] - },{ - "name":"io", - "origin":[8,8,8], - "color":0, - "children":[ - 3,4, + "name": "frame", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2 + ] + }, + { + "name": "io", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 3, + 4, { - "name":"power", - "origin":[8,8,8], - "color":0, - "children":[5,6] + "name": "power", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 5, + 6 + ] } ] - },{ - "name":"heatcoils", - "origin":[8,8,8], - "color":0, - "children":[ + }, + { + "name": "heatcoils", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "coilfront", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "name": "coilfrontmid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "name": "coilbackmid", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + }, { - "name":"coilfront", - "origin":[8,8,8], - "color":0, - "children":[7,8,9,10,11,12,13,14,15,16] - },{ - "name":"coilfrontmid", - "origin":[8,8,8], - "color":0, - "children":[17,18,19,20,21,22,23] - },{ - "name":"coilbackmid", - "origin":[8,8,8], - "color":0, - "children":[24,25,26,27,28,29,30] - },{ - "name":"coilback", - "origin":[8,8,8], - "color":0, - "children":[31,32,33,34,35,36,37,38,39,40] + "name": "coilback", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] } ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/msrfuelpreprocessor.json b/src/main/resources/assets/nuclearscience/models/block/msrfuelpreprocessor.json index fdead124..0df820f7 100644 --- a/src/main/resources/assets/nuclearscience/models/block/msrfuelpreprocessor.json +++ b/src/main/resources/assets/nuclearscience/models/block/msrfuelpreprocessor.json @@ -1,271 +1,1178 @@ { "credit": "aurilisdev", "parent": "block/cube_all", - "texture_size": [64, 64], + "texture_size": [ + 64, + 64 + ], "textures": { - "0": "nuclearscience:model/msrfuelpreprocessor", - "particle": "nuclearscience:model/msrfuelpreprocessor" + "0": "nuclearscience:block/model/msrfuelpreprocessor", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { - "from": [0, 0, 0], - "to": [16, 5, 16], + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 5, + 16 + ], "faces": { - "north": {"uv": [10, 0, 14, 1.25], "texture": "#0"}, - "east": {"uv": [10, 1.25, 14, 2.5], "texture": "#0"}, - "south": {"uv": [10, 2.5, 14, 3.75], "texture": "#0"}, - "west": {"uv": [10, 3.75, 14, 5], "texture": "#0"}, - "up": {"uv": [4, 4, 0, 0], "texture": "#0"}, - "down": {"uv": [4, 4, 0, 8], "texture": "#0"} + "north": { + "uv": [ + 10, + 0, + 14, + 1.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10, + 1.25, + 14, + 2.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 2.5, + 14, + 3.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 3.75, + 14, + 5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 4, + 0, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 4, + 0, + 8 + ], + "texture": "#0" + } } }, { - "from": [0, 5, 0], - "to": [2, 12, 2], + "from": [ + 0, + 5, + 0 + ], + "to": [ + 2, + 12, + 2 + ], "faces": { - "north": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "east": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "south": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "west": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"} + "north": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + } } }, { - "from": [0, 12, 0], - "to": [16, 13, 16], + "from": [ + 0, + 12, + 0 + ], + "to": [ + 16, + 13, + 16 + ], "faces": { - "north": {"uv": [0, 0.25, 4, 0.5], "texture": "#0"}, - "east": {"uv": [0, 0.25, 4, 0.5], "texture": "#0"}, - "south": {"uv": [0, 0.25, 4, 0.5], "texture": "#0"}, - "west": {"uv": [0, 0.25, 4, 0.5], "texture": "#0"}, - "up": {"uv": [0, 4, 4, 8], "texture": "#0"} + "north": { + "uv": [ + 0, + 0.25, + 4, + 0.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.25, + 4, + 0.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 0.25, + 4, + 0.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 0.25, + 4, + 0.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0, + 4, + 4, + 8 + ], + "texture": "#0" + } } }, { - "from": [14, 5, 0], - "to": [16, 12, 2], + "from": [ + 14, + 5, + 0 + ], + "to": [ + 16, + 12, + 2 + ], "faces": { - "north": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "east": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "south": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "west": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"} + "north": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + } } }, { - "from": [0, 5, 14], - "to": [2, 12, 16], + "from": [ + 0, + 5, + 14 + ], + "to": [ + 2, + 12, + 16 + ], "faces": { - "north": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "east": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "south": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "west": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"} + "north": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + } } }, { - "from": [14, 5, 14], - "to": [16, 12, 16], + "from": [ + 14, + 5, + 14 + ], + "to": [ + 16, + 12, + 16 + ], "faces": { - "north": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "east": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "south": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"}, - "west": {"uv": [8, 11.75, 8.5, 13.75], "texture": "#0"} + "north": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 11.75, + 8.5, + 13.75 + ], + "texture": "#0" + } } }, { - "from": [1, 1, 2], - "to": [2, 12, 14], + "from": [ + 1, + 1, + 2 + ], + "to": [ + 2, + 12, + 14 + ], "faces": { - "east": {"uv": [4, 3, 7, 5.75], "texture": "#0"}, - "west": {"uv": [4, 5.75, 7, 8.5], "texture": "#0"} + "east": { + "uv": [ + 4, + 3, + 7, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 5.75, + 7, + 8.5 + ], + "texture": "#0" + } } }, { - "from": [14, 1, 2], - "to": [15, 12, 14], + "from": [ + 14, + 1, + 2 + ], + "to": [ + 15, + 12, + 14 + ], "faces": { - "east": {"uv": [7, 0, 10, 2.75], "texture": "#0"}, - "west": {"uv": [7, 2.75, 10, 5.5], "texture": "#0"} + "east": { + "uv": [ + 7, + 0, + 10, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 2.75, + 10, + 5.5 + ], + "texture": "#0" + } } }, { - "from": [2, 1, 1], - "to": [14, 12, 2], + "from": [ + 2, + 1, + 1 + ], + "to": [ + 14, + 12, + 2 + ], "faces": { - "north": {"uv": [7, 5.5, 10, 8.25], "texture": "#0"}, - "south": {"uv": [0, 8, 3, 10.75], "texture": "#0"} + "north": { + "uv": [ + 7, + 5.5, + 10, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 8, + 3, + 10.75 + ], + "texture": "#0" + } } }, { - "from": [2, 1, 14], - "to": [14, 12, 15], + "from": [ + 2, + 1, + 14 + ], + "to": [ + 14, + 12, + 15 + ], "faces": { - "north": {"uv": [7, 8.25, 10, 11], "texture": "#0"}, - "south": {"uv": [3, 8.5, 6, 11.25], "texture": "#0"} + "north": { + "uv": [ + 7, + 8.25, + 10, + 11 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 8.5, + 6, + 11.25 + ], + "texture": "#0" + } } }, { - "from": [4, 5, 15], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 4, + 5, + 15 + ], + "to": [ + 12, + 12, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "east": {"uv": [12.25, 13.5, 12.5, 15.25], "texture": "#0"}, - "south": {"uv": [3.5, 14, 5.5, 15.75], "texture": "#0"}, - "west": {"uv": [12, 13.5, 12.25, 15.25], "texture": "#0"} + "east": { + "uv": [ + 12.25, + 13.5, + 12.5, + 15.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 14, + 5.5, + 15.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 12, + 13.5, + 12.25, + 15.25 + ], + "texture": "#0" + } } }, { - "from": [0, 5, 4], - "to": [1, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 0, + 5, + 4 + ], + "to": [ + 1, + 12, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "north": {"uv": [12, 13.5, 12.25, 15.25], "texture": "#0"}, - "south": {"uv": [12.25, 13.5, 12.5, 15.25], "texture": "#0"}, - "west": {"uv": [10, 5, 12, 6.75], "texture": "#0"} + "north": { + "uv": [ + 12, + 13.5, + 12.25, + 15.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 12.25, + 13.5, + 12.5, + 15.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 5, + 12, + 6.75 + ], + "texture": "#0" + } } }, { - "from": [0, 6, 2], - "to": [0, 7, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 0, + 6, + 2 + ], + "to": [ + 0, + 7, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "east": {"uv": [9, 13.75, 9.5, 14], "texture": "#0"}, - "west": {"uv": [9.5, 13.75, 10, 14], "texture": "#0"} + "east": { + "uv": [ + 9, + 13.75, + 9.5, + 14 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 13.75, + 10, + 14 + ], + "texture": "#0" + } } }, { - "from": [2, 6, 16], - "to": [4, 7, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 2, + 6, + 16 + ], + "to": [ + 4, + 7, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "north": {"uv": [9, 13.75, 9.5, 14], "texture": "#0"}, - "south": {"uv": [9.5, 13.75, 10, 14], "texture": "#0"} + "north": { + "uv": [ + 9, + 13.75, + 9.5, + 14 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 13.75, + 10, + 14 + ], + "texture": "#0" + } } }, { - "from": [0, 10, 2], - "to": [0, 11, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 0, + 10, + 2 + ], + "to": [ + 0, + 11, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "east": {"uv": [0, 14, 0.5, 14.25], "texture": "#0"}, - "west": {"uv": [14, 0, 14.5, 0.25], "texture": "#0"} + "east": { + "uv": [ + 0, + 14, + 0.5, + 14.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 14, + 0, + 14.5, + 0.25 + ], + "texture": "#0" + } } }, { - "from": [2, 10, 16], - "to": [4, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 2, + 10, + 16 + ], + "to": [ + 4, + 11, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "north": {"uv": [0, 14, 0.5, 14.25], "texture": "#0"}, - "south": {"uv": [14, 0, 14.5, 0.25], "texture": "#0"} + "north": { + "uv": [ + 0, + 14, + 0.5, + 14.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 14, + 0, + 14.5, + 0.25 + ], + "texture": "#0" + } } }, { - "from": [0, 6, 12], - "to": [0, 7, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 0, + 6, + 12 + ], + "to": [ + 0, + 7, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "east": {"uv": [14, 0.25, 14.5, 0.5], "texture": "#0"}, - "west": {"uv": [0.5, 14, 1, 14.25], "texture": "#0"} + "east": { + "uv": [ + 14, + 0.25, + 14.5, + 0.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.5, + 14, + 1, + 14.25 + ], + "texture": "#0" + } } }, { - "from": [12, 6, 16], - "to": [14, 7, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 12, + 6, + 16 + ], + "to": [ + 14, + 7, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "north": {"uv": [14, 0.25, 14.5, 0.5], "texture": "#0"}, - "south": {"uv": [0.5, 14, 1, 14.25], "texture": "#0"} + "north": { + "uv": [ + 14, + 0.25, + 14.5, + 0.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 14, + 1, + 14.25 + ], + "texture": "#0" + } } }, { - "from": [0, 10, 12], - "to": [0, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 0, + 10, + 12 + ], + "to": [ + 0, + 11, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "east": {"uv": [14, 0.5, 14.5, 0.75], "texture": "#0"}, - "west": {"uv": [14, 0.75, 14.5, 1], "texture": "#0"} + "east": { + "uv": [ + 14, + 0.5, + 14.5, + 0.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 14, + 0.75, + 14.5, + 1 + ], + "texture": "#0" + } } }, { - "from": [12, 10, 16], - "to": [14, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "from": [ + 12, + 10, + 16 + ], + "to": [ + 14, + 11, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 0, + 8 + ] + }, "faces": { - "north": {"uv": [14, 0.5, 14.5, 0.75], "texture": "#0"}, - "south": {"uv": [14, 0.75, 14.5, 1], "texture": "#0"} + "north": { + "uv": [ + 14, + 0.5, + 14.5, + 0.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 14, + 0.75, + 14.5, + 1 + ], + "texture": "#0" + } } }, { - "from": [15, 6, 2], - "to": [16, 7, 14], + "from": [ + 15, + 6, + 2 + ], + "to": [ + 16, + 7, + 14 + ], "faces": { - "east": {"uv": [13, 8, 16, 8.25], "texture": "#0"}, - "up": {"uv": [6.75, 14.5, 6.5, 11.5], "texture": "#0"}, - "down": {"uv": [7, 11.5, 6.75, 14.5], "texture": "#0"} + "east": { + "uv": [ + 13, + 8, + 16, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 14.5, + 6.5, + 11.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 11.5, + 6.75, + 14.5 + ], + "texture": "#0" + } } }, { - "from": [15, 10, 2], - "to": [16, 11, 14], + "from": [ + 15, + 10, + 2 + ], + "to": [ + 16, + 11, + 14 + ], "faces": { - "east": {"uv": [13, 8.25, 16, 8.5], "texture": "#0"}, - "up": {"uv": [10.25, 16, 10, 13], "texture": "#0"}, - "down": {"uv": [10.5, 13, 10.25, 16], "texture": "#0"} + "east": { + "uv": [ + 13, + 8.25, + 16, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 16, + 10, + 13 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 13, + 10.25, + 16 + ], + "texture": "#0" + } } }, { - "from": [2, 6, 0], - "to": [14, 7, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "from": [ + 2, + 6, + 0 + ], + "to": [ + 14, + 7, + 1 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [13, 8, 16, 8.25], "texture": "#0"}, - "up": {"uv": [6.75, 14.5, 6.5, 11.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [7, 11.5, 6.75, 14.5], "rotation": 90, "texture": "#0"} + "north": { + "uv": [ + 13, + 8, + 16, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 14.5, + 6.5, + 11.5 + ], + "rotation": 270, + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 11.5, + 6.75, + 14.5 + ], + "rotation": 90, + "texture": "#0" + } } }, { - "from": [2, 10, 0], - "to": [14, 11, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "from": [ + 2, + 10, + 0 + ], + "to": [ + 14, + 11, + 1 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [13, 8.25, 16, 8.5], "texture": "#0"}, - "up": {"uv": [10.25, 16, 10, 13], "rotation": 270, "texture": "#0"}, - "down": {"uv": [10.5, 13, 10.25, 16], "rotation": 90, "texture": "#0"} + "north": { + "uv": [ + 13, + 8.25, + 16, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 16, + 10, + 13 + ], + "rotation": 270, + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 13, + 10.25, + 16 + ], + "rotation": 90, + "texture": "#0" + } } }, { "name": "WATER", - "from": [2, 0, 2], - "to": [14, 7, 14], + "from": [ + 2, + 0, + 2 + ], + "to": [ + 14, + 7, + 14 + ], "faces": { - "up": {"uv": [7, 3, 4, 0], "texture": "#0"} + "up": { + "uv": [ + 7, + 3, + 4, + 0 + ], + "texture": "#0" + } } } ], "groups": [ { "name": "spinning", - "origin": [8, 8, 8], + "origin": [ + 8, + 8, + 8 + ], "color": 0, - "children": [] + "children": [ + ] }, { "name": "chemicalmixerbase", - "origin": [8, 8, 8], + "origin": [ + 8, + 8, + 8 + ], "color": 0, "children": [ { "name": "main", - "origin": [0, 0, 0], + "origin": [ + 0, + 0, + 0 + ], "color": 0, "children": [ { "name": "mixbase", - "origin": [0, 0, 0], + "origin": [ + 0, + 0, + 0 + ], "color": 0, - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23] - }, 24] + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + 24 + ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/msrreactorcore.json b/src/main/resources/assets/nuclearscience/models/block/msrreactorcore.json index 7f20813e..bc440d79 100644 --- a/src/main/resources/assets/nuclearscience/models/block/msrreactorcore.json +++ b/src/main/resources/assets/nuclearscience/models/block/msrreactorcore.json @@ -1,69 +1,4705 @@ { - "credit":"skip999", - "texture_size":[128,128], + "credit": "skip999", + "texture_size": [ + 128, + 128 + ], "parent": "block/cube_all", - "textures":{ - "0":"nuclearscience:model/msrreactorcore", - "particle":"nuclearscience:model/msrreactorcore" + "textures": { + "0": "nuclearscience:block/model/msreactorcore", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[2,0,2],"to":[14,13,14],"faces":{"north":{"uv":[1.5,1.5,3,3.125],"texture":"#0"},"east":{"uv":[0,1.5,1.5,3.125],"texture":"#0"},"south":{"uv":[4.5,1.5,6,3.125],"texture":"#0"},"west":{"uv":[3,1.5,4.5,3.125],"texture":"#0"},"up":{"uv":[3,1.5,1.5,0],"texture":"#0"},"down":{"uv":[4.5,0,3,1.5],"texture":"#0"}}},{"from":[4,-1,3],"to":[12,0,4],"faces":{"north":{"uv":[7.875,6.875,8.875,7],"texture":"#0"},"east":{"uv":[7.75,6.875,7.875,7],"texture":"#0"},"south":{"uv":[9,6.875,10,7],"texture":"#0"},"west":{"uv":[8.875,6.875,9,7],"texture":"#0"},"up":{"uv":[8.875,6.875,7.875,6.75],"texture":"#0"},"down":{"uv":[9.875,6.75,8.875,6.875],"texture":"#0"}}},{"from":[4,-1,12],"to":[12,0,13],"faces":{"north":{"uv":[7.875,6.5,8.875,6.625],"texture":"#0"},"east":{"uv":[7.75,6.5,7.875,6.625],"texture":"#0"},"south":{"uv":[9,6.5,10,6.625],"texture":"#0"},"west":{"uv":[8.875,6.5,9,6.625],"texture":"#0"},"up":{"uv":[8.875,6.5,7.875,6.375],"texture":"#0"},"down":{"uv":[9.875,6.375,8.875,6.5],"texture":"#0"}}}, - {"from":[3,-1,3],"to":[4,0,13],"faces":{"north":{"uv":[7.5,1.5,7.625,1.625],"texture":"#0"},"east":{"uv":[6.25,1.5,7.5,1.625],"texture":"#0"},"south":{"uv":[8.875,1.5,9,1.625],"texture":"#0"},"west":{"uv":[7.625,1.5,8.875,1.625],"texture":"#0"},"up":{"uv":[7.625,1.5,7.5,0.25],"texture":"#0"},"down":{"uv":[7.75,0.25,7.625,1.5],"texture":"#0"}}},{"from":[12,-1,3],"to":[13,0,13],"faces":{"north":{"uv":[7,6.125,7.125,6.25],"texture":"#0"},"east":{"uv":[5.75,6.125,7,6.25],"texture":"#0"},"south":{"uv":[8.375,6.125,8.5,6.25],"texture":"#0"},"west":{"uv":[7.125,6.125,8.375,6.25],"texture":"#0"},"up":{"uv":[7.125,6.125,7,4.875],"texture":"#0"},"down":{"uv":[7.25,4.875,7.125,6.125],"texture":"#0"}}},{"from":[1,2,3],"to":[2,12,13],"faces":{"north":{"uv":[1.25,6,1.375,7.25],"texture":"#0"},"east":{"uv":[0,6,1.25,7.25],"texture":"#0"},"south":{"uv":[2.625,6,2.75,7.25],"texture":"#0"},"west":{"uv":[1.375,6,2.625,7.25],"texture":"#0"},"up":{"uv":[1.375,6,1.25,4.75],"texture":"#0"},"down":{"uv":[1.5,4.75,1.375,6],"texture":"#0"}}}, - {"from":[14,2,3],"to":[15,12,13],"faces":{"north":{"uv":[5.125,4.75,5.25,6],"texture":"#0"},"east":{"uv":[3.875,4.75,5.125,6],"texture":"#0"},"south":{"uv":[6.5,4.75,6.625,6],"texture":"#0"},"west":{"uv":[5.25,4.75,6.5,6],"texture":"#0"},"up":{"uv":[5.25,4.75,5.125,3.5],"texture":"#0"},"down":{"uv":[5.375,3.5,5.25,4.75],"texture":"#0"}}},{"from":[3,2,1],"to":[13,12,2],"faces":{"north":{"uv":[3,6.25,4.25,7.5],"texture":"#0"},"east":{"uv":[2.875,6.25,3,7.5],"texture":"#0"},"south":{"uv":[4.375,6.25,5.625,7.5],"texture":"#0"},"west":{"uv":[4.25,6.25,4.375,7.5],"texture":"#0"},"up":{"uv":[4.25,6.25,3,6.125],"texture":"#0"},"down":{"uv":[5.5,6.125,4.25,6.25],"texture":"#0"}}},{"from":[3,2,14],"to":[13,12,15],"faces":{"north":{"uv":[4.75,0.125,6,1.375],"texture":"#0"},"east":{"uv":[4.625,0.125,4.75,1.375],"texture":"#0"},"south":{"uv":[6.125,0.125,7.375,1.375],"texture":"#0"},"west":{"uv":[6,0.125,6.125,1.375],"texture":"#0"},"up":{"uv":[6,0.125,4.75,0],"texture":"#0"},"down":{"uv":[7.25,0,6,0.125],"texture":"#0"}}}, - {"from":[1,-2,4],"to":[2,2,5],"faces":{"north":{"uv":[7,1.875,7.125,2.375],"texture":"#0"},"east":{"uv":[6.875,1.875,7,2.375],"texture":"#0"},"south":{"uv":[7.25,1.875,7.375,2.375],"texture":"#0"},"west":{"uv":[7.125,1.875,7.25,2.375],"texture":"#0"},"up":{"uv":[7.125,1.875,7,1.75],"texture":"#0"},"down":{"uv":[7.25,1.75,7.125,1.875],"texture":"#0"}}},{"from":[1,-2,11],"to":[2,2,12],"faces":{"north":{"uv":[6.875,6.5,7,7],"texture":"#0"},"east":{"uv":[6.75,6.5,6.875,7],"texture":"#0"},"south":{"uv":[7.125,6.5,7.25,7],"texture":"#0"},"west":{"uv":[7,6.5,7.125,7],"texture":"#0"},"up":{"uv":[7,6.5,6.875,6.375],"texture":"#0"},"down":{"uv":[7.125,6.375,7,6.5],"texture":"#0"}}},{"from":[14,-2,4],"to":[15,2,5],"faces":{"north":{"uv":[6.25,6.5,6.375,7],"texture":"#0"},"east":{"uv":[6.125,6.5,6.25,7],"texture":"#0"},"south":{"uv":[6.5,6.5,6.625,7],"texture":"#0"},"west":{"uv":[6.375,6.5,6.5,7],"texture":"#0"},"up":{"uv":[6.375,6.5,6.25,6.375],"texture":"#0"},"down":{"uv":[6.5,6.375,6.375,6.5],"texture":"#0"}}}, - {"from":[14,-2,11],"to":[15,2,12],"faces":{"north":{"uv":[3,4.875,3.125,5.375],"texture":"#0"},"east":{"uv":[2.875,4.875,3,5.375],"texture":"#0"},"south":{"uv":[3.25,4.875,3.375,5.375],"texture":"#0"},"west":{"uv":[3.125,4.875,3.25,5.375],"texture":"#0"},"up":{"uv":[3.125,4.875,3,4.75],"texture":"#0"},"down":{"uv":[3.25,4.75,3.125,4.875],"texture":"#0"}}},{"from":[11,-2,1],"to":[12,2,2],"faces":{"north":{"uv":[2.375,4.875,2.5,5.375],"texture":"#0"},"east":{"uv":[2.25,4.875,2.375,5.375],"texture":"#0"},"south":{"uv":[2.625,4.875,2.75,5.375],"texture":"#0"},"west":{"uv":[2.5,4.875,2.625,5.375],"texture":"#0"},"up":{"uv":[2.5,4.875,2.375,4.75],"texture":"#0"},"down":{"uv":[2.625,4.75,2.5,4.875],"texture":"#0"}}},{"from":[4,-2,1],"to":[5,2,2],"faces":{"north":{"uv":[1.75,4.875,1.875,5.375],"texture":"#0"},"east":{"uv":[1.625,4.875,1.75,5.375],"texture":"#0"},"south":{"uv":[2,4.875,2.125,5.375],"texture":"#0"},"west":{"uv":[1.875,4.875,2,5.375],"texture":"#0"},"up":{"uv":[1.875,4.875,1.75,4.75],"texture":"#0"},"down":{"uv":[2,4.75,1.875,4.875],"texture":"#0"}}}, - {"from":[11,-2,14],"to":[12,2,15],"faces":{"north":{"uv":[0.75,4.875,0.875,5.375],"texture":"#0"},"east":{"uv":[0.625,4.875,0.75,5.375],"texture":"#0"},"south":{"uv":[1,4.875,1.125,5.375],"texture":"#0"},"west":{"uv":[0.875,4.875,1,5.375],"texture":"#0"},"up":{"uv":[0.875,4.875,0.75,4.75],"texture":"#0"},"down":{"uv":[1,4.75,0.875,4.875],"texture":"#0"}}},{"from":[4,-2,14],"to":[5,2,15],"faces":{"north":{"uv":[0.125,4.875,0.25,5.375],"texture":"#0"},"east":{"uv":[0,4.875,0.125,5.375],"texture":"#0"},"south":{"uv":[0.375,4.875,0.5,5.375],"texture":"#0"},"west":{"uv":[0.25,4.875,0.375,5.375],"texture":"#0"},"up":{"uv":[0.25,4.875,0.125,4.75],"texture":"#0"},"down":{"uv":[0.375,4.75,0.25,4.875],"texture":"#0"}}},{"from":[0,3,4],"to":[1,11,12],"faces":{"north":{"uv":[6.5,3.25,6.625,4.25],"texture":"#0"},"east":{"uv":[5.5,3.25,6.5,4.25],"texture":"#0"},"south":{"uv":[7.625,3.25,7.75,4.25],"texture":"#0"},"west":{"uv":[6.625,3.25,7.625,4.25],"texture":"#0"},"up":{"uv":[6.625,3.25,6.5,2.25],"texture":"#0"},"down":{"uv":[6.75,2.25,6.625,3.25],"texture":"#0"}}}, - {"from":[3,13,3],"to":[13,14,13],"faces":{"north":{"uv":[1.25,4.5,2.5,4.625],"texture":"#0"},"east":{"uv":[0,4.5,1.25,4.625],"texture":"#0"},"south":{"uv":[3.75,4.5,5,4.625],"texture":"#0"},"west":{"uv":[2.5,4.5,3.75,4.625],"texture":"#0"},"up":{"uv":[2.5,4.5,1.25,3.25],"texture":"#0"},"down":{"uv":[3.75,3.25,2.5,4.5],"texture":"#0"}}},{"from":[5,14,5],"to":[11,16,11],"faces":{"north":{"uv":[7.625,2.5,8.375,2.75],"texture":"#0"},"east":{"uv":[6.875,2.5,7.625,2.75],"texture":"#0"},"south":{"uv":[9.125,2.5,9.875,2.75],"texture":"#0"},"west":{"uv":[8.375,2.5,9.125,2.75],"texture":"#0"},"up":{"uv":[8.375,2.5,7.625,1.75],"texture":"#0"},"down":{"uv":[9.125,1.75,8.375,2.5],"texture":"#0"}}},{"from":[4,14,6],"to":[5,18,7],"faces":{"north":{"uv":[4.625,3.375,4.75,3.875],"texture":"#0"},"east":{"uv":[4.5,3.375,4.625,3.875],"texture":"#0"},"south":{"uv":[4.875,3.375,5,3.875],"texture":"#0"},"west":{"uv":[4.75,3.375,4.875,3.875],"texture":"#0"},"up":{"uv":[4.75,3.375,4.625,3.25],"texture":"#0"},"down":{"uv":[4.875,3.25,4.75,3.375],"texture":"#0"}}}, - {"from":[4,14,9],"to":[5,18,10],"faces":{"north":{"uv":[4,3.375,4.125,3.875],"texture":"#0"},"east":{"uv":[3.875,3.375,4,3.875],"texture":"#0"},"south":{"uv":[4.25,3.375,4.375,3.875],"texture":"#0"},"west":{"uv":[4.125,3.375,4.25,3.875],"texture":"#0"},"up":{"uv":[4.125,3.375,4,3.25],"texture":"#0"},"down":{"uv":[4.25,3.25,4.125,3.375],"texture":"#0"}}},{"from":[11,14,9],"to":[12,18,10],"faces":{"north":{"uv":[0.75,3.375,0.875,3.875],"texture":"#0"},"east":{"uv":[0.625,3.375,0.75,3.875],"texture":"#0"},"south":{"uv":[1,3.375,1.125,3.875],"texture":"#0"},"west":{"uv":[0.875,3.375,1,3.875],"texture":"#0"},"up":{"uv":[0.875,3.375,0.75,3.25],"texture":"#0"},"down":{"uv":[1,3.25,0.875,3.375],"texture":"#0"}}},{"from":[11,14,6],"to":[12,18,7],"faces":{"north":{"uv":[0.125,3.375,0.25,3.875],"texture":"#0"},"east":{"uv":[0,3.375,0.125,3.875],"texture":"#0"},"south":{"uv":[0.375,3.375,0.5,3.875],"texture":"#0"},"west":{"uv":[0.25,3.375,0.375,3.875],"texture":"#0"},"up":{"uv":[0.25,3.375,0.125,3.25],"texture":"#0"},"down":{"uv":[0.375,3.25,0.25,3.375],"texture":"#0"}}}, - {"from":[9,14,4],"to":[10,18,5],"faces":{"north":{"uv":[0.75,0.875,0.875,1.375],"texture":"#0"},"east":{"uv":[0.625,0.875,0.75,1.375],"texture":"#0"},"south":{"uv":[1,0.875,1.125,1.375],"texture":"#0"},"west":{"uv":[0.875,0.875,1,1.375],"texture":"#0"},"up":{"uv":[0.875,0.875,0.75,0.75],"texture":"#0"},"down":{"uv":[1,0.75,0.875,0.875],"texture":"#0"}}},{"from":[6,14,4],"to":[7,18,5],"faces":{"north":{"uv":[0.125,0.875,0.25,1.375],"texture":"#0"},"east":{"uv":[0,0.875,0.125,1.375],"texture":"#0"},"south":{"uv":[0.375,0.875,0.5,1.375],"texture":"#0"},"west":{"uv":[0.25,0.875,0.375,1.375],"texture":"#0"},"up":{"uv":[0.25,0.875,0.125,0.75],"texture":"#0"},"down":{"uv":[0.375,0.75,0.25,0.875],"texture":"#0"}}},{"from":[6,14,11],"to":[7,18,12],"faces":{"north":{"uv":[0.75,0.125,0.875,0.625],"texture":"#0"},"east":{"uv":[0.625,0.125,0.75,0.625],"texture":"#0"},"south":{"uv":[1,0.125,1.125,0.625],"texture":"#0"},"west":{"uv":[0.875,0.125,1,0.625],"texture":"#0"},"up":{"uv":[0.875,0.125,0.75,0],"texture":"#0"},"down":{"uv":[1,0,0.875,0.125],"texture":"#0"}}}, - {"from":[9,14,11],"to":[10,18,12],"faces":{"north":{"uv":[0.125,0.125,0.25,0.625],"texture":"#0"},"east":{"uv":[0,0.125,0.125,0.625],"texture":"#0"},"south":{"uv":[0.375,0.125,0.5,0.625],"texture":"#0"},"west":{"uv":[0.25,0.125,0.375,0.625],"texture":"#0"},"up":{"uv":[0.25,0.125,0.125,0],"texture":"#0"},"down":{"uv":[0.375,0,0.25,0.125],"texture":"#0"}}},{"from":[0,4,3],"to":[1,5,4],"faces":{"north":{"uv":[1.375,8.25,1.5,8.375],"texture":"#0"},"east":{"uv":[1.25,8.25,1.375,8.375],"texture":"#0"},"south":{"uv":[1.625,8.25,1.75,8.375],"texture":"#0"},"west":{"uv":[1.5,8.25,1.625,8.375],"texture":"#0"},"up":{"uv":[1.5,8.25,1.375,8.125],"texture":"#0"},"down":{"uv":[1.625,8.125,1.5,8.25],"texture":"#0"}}},{"from":[0,6.5,3],"to":[1,7.5,4],"faces":{"north":{"uv":[0.75,8.25,0.875,8.375],"texture":"#0"},"east":{"uv":[0.625,8.25,0.75,8.375],"texture":"#0"},"south":{"uv":[1,8.25,1.125,8.375],"texture":"#0"},"west":{"uv":[0.875,8.25,1,8.375],"texture":"#0"},"up":{"uv":[0.875,8.25,0.75,8.125],"texture":"#0"},"down":{"uv":[1,8.125,0.875,8.25],"texture":"#0"}}}, - {"from":[0,9,3],"to":[1,10,4],"faces":{"north":{"uv":[0.125,8.25,0.25,8.375],"texture":"#0"},"east":{"uv":[0,8.25,0.125,8.375],"texture":"#0"},"south":{"uv":[0.375,8.25,0.5,8.375],"texture":"#0"},"west":{"uv":[0.25,8.25,0.375,8.375],"texture":"#0"},"up":{"uv":[0.25,8.25,0.125,8.125],"texture":"#0"},"down":{"uv":[0.375,8.125,0.25,8.25],"texture":"#0"}}},{"from":[0,9,12],"to":[1,10,13],"faces":{"north":{"uv":[3.5,8.125,3.625,8.25],"texture":"#0"},"east":{"uv":[3.375,8.125,3.5,8.25],"texture":"#0"},"south":{"uv":[3.75,8.125,3.875,8.25],"texture":"#0"},"west":{"uv":[3.625,8.125,3.75,8.25],"texture":"#0"},"up":{"uv":[3.625,8.125,3.5,8],"texture":"#0"},"down":{"uv":[3.75,8,3.625,8.125],"texture":"#0"}}},{"from":[0,6.5,12],"to":[1,7.5,13],"faces":{"north":{"uv":[2.875,8.125,3,8.25],"texture":"#0"},"east":{"uv":[2.75,8.125,2.875,8.25],"texture":"#0"},"south":{"uv":[3.125,8.125,3.25,8.25],"texture":"#0"},"west":{"uv":[3,8.125,3.125,8.25],"texture":"#0"},"up":{"uv":[3,8.125,2.875,8],"texture":"#0"},"down":{"uv":[3.125,8,3,8.125],"texture":"#0"}}}, - {"from":[0,4,12],"to":[1,5,13],"faces":{"north":{"uv":[5.375,8,5.5,8.125],"texture":"#0"},"east":{"uv":[5.25,8,5.375,8.125],"texture":"#0"},"south":{"uv":[5.625,8,5.75,8.125],"texture":"#0"},"west":{"uv":[5.5,8,5.625,8.125],"texture":"#0"},"up":{"uv":[5.5,8,5.375,7.875],"texture":"#0"},"down":{"uv":[5.625,7.875,5.5,8],"texture":"#0"}}},{"from":[1,9,13],"to":[2,10,14],"faces":{"north":{"uv":[4.75,8,4.875,8.125],"texture":"#0"},"east":{"uv":[4.625,8,4.75,8.125],"texture":"#0"},"south":{"uv":[5,8,5.125,8.125],"texture":"#0"},"west":{"uv":[4.875,8,5,8.125],"texture":"#0"},"up":{"uv":[4.875,8,4.75,7.875],"texture":"#0"},"down":{"uv":[5,7.875,4.875,8],"texture":"#0"}}},{"from":[1,6.5,13],"to":[2,7.5,14],"faces":{"north":{"uv":[4.125,8,4.25,8.125],"texture":"#0"},"east":{"uv":[4,8,4.125,8.125],"texture":"#0"},"south":{"uv":[4.375,8,4.5,8.125],"texture":"#0"},"west":{"uv":[4.25,8,4.375,8.125],"texture":"#0"},"up":{"uv":[4.25,8,4.125,7.875],"texture":"#0"},"down":{"uv":[4.375,7.875,4.25,8],"texture":"#0"}}}, - {"from":[1,4,13],"to":[2,5,14],"faces":{"north":{"uv":[8,1.25,8.125,1.375],"texture":"#0"},"east":{"uv":[7.875,1.25,8,1.375],"texture":"#0"},"south":{"uv":[8.25,1.25,8.375,1.375],"texture":"#0"},"west":{"uv":[8.125,1.25,8.25,1.375],"texture":"#0"},"up":{"uv":[8.125,1.25,8,1.125],"texture":"#0"},"down":{"uv":[8.25,1.125,8.125,1.25],"texture":"#0"}}},{"from":[1,9,2],"to":[2,10,3],"faces":{"north":{"uv":[8,0.875,8.125,1],"texture":"#0"},"east":{"uv":[7.875,0.875,8,1],"texture":"#0"},"south":{"uv":[8.25,0.875,8.375,1],"texture":"#0"},"west":{"uv":[8.125,0.875,8.25,1],"texture":"#0"},"up":{"uv":[8.125,0.875,8,0.75],"texture":"#0"},"down":{"uv":[8.25,0.75,8.125,0.875],"texture":"#0"}}},{"from":[1,6.5,2],"to":[2,7.5,3],"faces":{"north":{"uv":[8,0.5,8.125,0.625],"texture":"#0"},"east":{"uv":[7.875,0.5,8,0.625],"texture":"#0"},"south":{"uv":[8.25,0.5,8.375,0.625],"texture":"#0"},"west":{"uv":[8.125,0.5,8.25,0.625],"texture":"#0"},"up":{"uv":[8.125,0.5,8,0.375],"texture":"#0"},"down":{"uv":[8.25,0.375,8.125,0.5],"texture":"#0"}}}, - {"from":[1,4,2],"to":[2,5,3],"faces":{"north":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"east":{"uv":[7.875,0.125,8,0.25],"texture":"#0"},"south":{"uv":[8.25,0.125,8.375,0.25],"texture":"#0"},"west":{"uv":[8.125,0.125,8.25,0.25],"texture":"#0"},"up":{"uv":[8.125,0.125,8,0],"texture":"#0"},"down":{"uv":[8.25,0,8.125,0.125],"texture":"#0"}}},{"from":[14,6.5,2],"to":[15,7.5,3],"faces":{"north":{"uv":[7.875,7.625,8,7.75],"texture":"#0"},"east":{"uv":[7.75,7.625,7.875,7.75],"texture":"#0"},"south":{"uv":[8.125,7.625,8.25,7.75],"texture":"#0"},"west":{"uv":[8,7.625,8.125,7.75],"texture":"#0"},"up":{"uv":[8,7.625,7.875,7.5],"texture":"#0"},"down":{"uv":[8.125,7.5,8,7.625],"texture":"#0"}}},{"from":[14,4,2],"to":[15,5,3],"faces":{"north":{"uv":[7.875,7.25,8,7.375],"texture":"#0"},"east":{"uv":[7.75,7.25,7.875,7.375],"texture":"#0"},"south":{"uv":[8.125,7.25,8.25,7.375],"texture":"#0"},"west":{"uv":[8,7.25,8.125,7.375],"texture":"#0"},"up":{"uv":[8,7.25,7.875,7.125],"texture":"#0"},"down":{"uv":[8.125,7.125,8,7.25],"texture":"#0"}}}, - {"from":[14,9,2],"to":[15,10,3],"faces":{"north":{"uv":[3.625,7.75,3.75,7.875],"texture":"#0"},"east":{"uv":[3.5,7.75,3.625,7.875],"texture":"#0"},"south":{"uv":[3.875,7.75,4,7.875],"texture":"#0"},"west":{"uv":[3.75,7.75,3.875,7.875],"texture":"#0"},"up":{"uv":[3.75,7.75,3.625,7.625],"texture":"#0"},"down":{"uv":[3.875,7.625,3.75,7.75],"texture":"#0"}}},{"from":[14,9,13],"to":[15,10,14],"faces":{"north":{"uv":[3,7.75,3.125,7.875],"texture":"#0"},"east":{"uv":[2.875,7.75,3,7.875],"texture":"#0"},"south":{"uv":[3.25,7.75,3.375,7.875],"texture":"#0"},"west":{"uv":[3.125,7.75,3.25,7.875],"texture":"#0"},"up":{"uv":[3.125,7.75,3,7.625],"texture":"#0"},"down":{"uv":[3.25,7.625,3.125,7.75],"texture":"#0"}}},{"from":[14,6.5,13],"to":[15,7.5,14],"faces":{"north":{"uv":[6.875,7.25,7,7.375],"texture":"#0"},"east":{"uv":[6.75,7.25,6.875,7.375],"texture":"#0"},"south":{"uv":[7.125,7.25,7.25,7.375],"texture":"#0"},"west":{"uv":[7,7.25,7.125,7.375],"texture":"#0"},"up":{"uv":[7,7.25,6.875,7.125],"texture":"#0"},"down":{"uv":[7.125,7.125,7,7.25],"texture":"#0"}}}, - {"from":[14,4,13],"to":[15,5,14],"faces":{"north":{"uv":[6.25,7.25,6.375,7.375],"texture":"#0"},"east":{"uv":[6.125,7.25,6.25,7.375],"texture":"#0"},"south":{"uv":[6.5,7.25,6.625,7.375],"texture":"#0"},"west":{"uv":[6.375,7.25,6.5,7.375],"texture":"#0"},"up":{"uv":[6.375,7.25,6.25,7.125],"texture":"#0"},"down":{"uv":[6.5,7.125,6.375,7.25],"texture":"#0"}}},{"from":[15,9,3],"to":[16,10,13],"faces":{"north":{"uv":[5.75,7.625,5.875,7.75],"texture":"#0"},"east":{"uv":[4.5,7.625,5.75,7.75],"texture":"#0"},"south":{"uv":[7.125,7.625,7.25,7.75],"texture":"#0"},"west":{"uv":[5.875,7.625,7.125,7.75],"texture":"#0"},"up":{"uv":[5.875,7.625,5.75,6.375],"texture":"#0"},"down":{"uv":[6,6.375,5.875,7.625],"texture":"#0"}}},{"from":[15,6.5,3],"to":[16,7.5,13],"faces":{"north":{"uv":[7.875,4.375,8,4.5],"texture":"#0"},"east":{"uv":[6.625,4.375,7.875,4.5],"texture":"#0"},"south":{"uv":[9.25,4.375,9.375,4.5],"texture":"#0"},"west":{"uv":[8,4.375,9.25,4.5],"texture":"#0"},"up":{"uv":[8,4.375,7.875,3.125],"texture":"#0"},"down":{"uv":[8.125,3.125,8,4.375],"texture":"#0"}}}, - {"from":[15,4,3],"to":[16,5,13],"faces":{"north":{"uv":[7.375,7.875,7.5,8],"texture":"#0"},"east":{"uv":[6.125,7.875,7.375,8],"texture":"#0"},"south":{"uv":[8.75,7.875,8.875,8],"texture":"#0"},"west":{"uv":[7.5,7.875,8.75,8],"texture":"#0"},"up":{"uv":[7.5,7.875,7.375,6.625],"texture":"#0"},"down":{"uv":[7.625,6.625,7.5,7.875],"texture":"#0"}}},{"from":[13,9,14],"to":[14,10,15],"faces":{"north":{"uv":[7,3,7.125,3.125],"texture":"#0"},"east":{"uv":[6.875,3,7,3.125],"texture":"#0"},"south":{"uv":[7.25,3,7.375,3.125],"texture":"#0"},"west":{"uv":[7.125,3,7.25,3.125],"texture":"#0"},"up":{"uv":[7.125,3,7,2.875],"texture":"#0"},"down":{"uv":[7.25,2.875,7.125,3],"texture":"#0"}}},{"from":[13,6.5,14],"to":[14,7.5,15],"faces":{"north":{"uv":[6.25,1.875,6.375,2],"texture":"#0"},"east":{"uv":[6.125,1.875,6.25,2],"texture":"#0"},"south":{"uv":[6.5,1.875,6.625,2],"texture":"#0"},"west":{"uv":[6.375,1.875,6.5,2],"texture":"#0"},"up":{"uv":[6.375,1.875,6.25,1.75],"texture":"#0"},"down":{"uv":[6.5,1.75,6.375,1.875],"texture":"#0"}}}, - {"from":[13,4,14],"to":[14,5,15],"faces":{"north":{"uv":[5.625,4.5,5.75,4.625],"texture":"#0"},"east":{"uv":[5.5,4.5,5.625,4.625],"texture":"#0"},"south":{"uv":[5.875,4.5,6,4.625],"texture":"#0"},"west":{"uv":[5.75,4.5,5.875,4.625],"texture":"#0"},"up":{"uv":[5.75,4.5,5.625,4.375],"texture":"#0"},"down":{"uv":[5.875,4.375,5.75,4.5],"texture":"#0"}}},{"from":[2,9,14],"to":[3,10,15],"faces":{"north":{"uv":[3,5.625,3.125,5.75],"texture":"#0"},"east":{"uv":[2.875,5.625,3,5.75],"texture":"#0"},"south":{"uv":[3.25,5.625,3.375,5.75],"texture":"#0"},"west":{"uv":[3.125,5.625,3.25,5.75],"texture":"#0"},"up":{"uv":[3.125,5.625,3,5.5],"texture":"#0"},"down":{"uv":[3.25,5.5,3.125,5.625],"texture":"#0"}}},{"from":[2,6.5,14],"to":[3,7.5,15],"faces":{"north":{"uv":[2.375,5.625,2.5,5.75],"texture":"#0"},"east":{"uv":[2.25,5.625,2.375,5.75],"texture":"#0"},"south":{"uv":[2.625,5.625,2.75,5.75],"texture":"#0"},"west":{"uv":[2.5,5.625,2.625,5.75],"texture":"#0"},"up":{"uv":[2.5,5.625,2.375,5.5],"texture":"#0"},"down":{"uv":[2.625,5.5,2.5,5.625],"texture":"#0"}}}, - {"from":[2,4,14],"to":[3,5,15],"faces":{"north":{"uv":[1.75,5.625,1.875,5.75],"texture":"#0"},"east":{"uv":[1.625,5.625,1.75,5.75],"texture":"#0"},"south":{"uv":[2,5.625,2.125,5.75],"texture":"#0"},"west":{"uv":[1.875,5.625,2,5.75],"texture":"#0"},"up":{"uv":[1.875,5.625,1.75,5.5],"texture":"#0"},"down":{"uv":[2,5.5,1.875,5.625],"texture":"#0"}}},{"from":[2,9,1],"to":[3,10,2],"faces":{"north":{"uv":[0.75,5.625,0.875,5.75],"texture":"#0"},"east":{"uv":[0.625,5.625,0.75,5.75],"texture":"#0"},"south":{"uv":[1,5.625,1.125,5.75],"texture":"#0"},"west":{"uv":[0.875,5.625,1,5.75],"texture":"#0"},"up":{"uv":[0.875,5.625,0.75,5.5],"texture":"#0"},"down":{"uv":[1,5.5,0.875,5.625],"texture":"#0"}}},{"from":[2,6.5,1],"to":[3,7.5,2],"faces":{"north":{"uv":[0.125,5.625,0.25,5.75],"texture":"#0"},"east":{"uv":[0,5.625,0.125,5.75],"texture":"#0"},"south":{"uv":[0.375,5.625,0.5,5.75],"texture":"#0"},"west":{"uv":[0.25,5.625,0.375,5.75],"texture":"#0"},"up":{"uv":[0.25,5.625,0.125,5.5],"texture":"#0"},"down":{"uv":[0.375,5.5,0.25,5.625],"texture":"#0"}}}, - {"from":[2,4,1],"to":[3,5,2],"faces":{"north":{"uv":[4.625,4.125,4.75,4.25],"texture":"#0"},"east":{"uv":[4.5,4.125,4.625,4.25],"texture":"#0"},"south":{"uv":[4.875,4.125,5,4.25],"texture":"#0"},"west":{"uv":[4.75,4.125,4.875,4.25],"texture":"#0"},"up":{"uv":[4.75,4.125,4.625,4],"texture":"#0"},"down":{"uv":[4.875,4,4.75,4.125],"texture":"#0"}}},{"from":[13,9,1],"to":[14,10,2],"faces":{"north":{"uv":[4,4.125,4.125,4.25],"texture":"#0"},"east":{"uv":[3.875,4.125,4,4.25],"texture":"#0"},"south":{"uv":[4.25,4.125,4.375,4.25],"texture":"#0"},"west":{"uv":[4.125,4.125,4.25,4.25],"texture":"#0"},"up":{"uv":[4.125,4.125,4,4],"texture":"#0"},"down":{"uv":[4.25,4,4.125,4.125],"texture":"#0"}}},{"from":[13,6.5,1],"to":[14,7.5,2],"faces":{"north":{"uv":[0.75,4.125,0.875,4.25],"texture":"#0"},"east":{"uv":[0.625,4.125,0.75,4.25],"texture":"#0"},"south":{"uv":[1,4.125,1.125,4.25],"texture":"#0"},"west":{"uv":[0.875,4.125,1,4.25],"texture":"#0"},"up":{"uv":[0.875,4.125,0.75,4],"texture":"#0"},"down":{"uv":[1,4,0.875,4.125],"texture":"#0"}}}, - {"from":[13,4,1],"to":[14,5,2],"faces":{"north":{"uv":[0.125,4.125,0.25,4.25],"texture":"#0"},"east":{"uv":[0,4.125,0.125,4.25],"texture":"#0"},"south":{"uv":[0.375,4.125,0.5,4.25],"texture":"#0"},"west":{"uv":[0.25,4.125,0.375,4.25],"texture":"#0"},"up":{"uv":[0.25,4.125,0.125,4],"texture":"#0"},"down":{"uv":[0.375,4,0.25,4.125],"texture":"#0"}}},{"from":[3,9,0],"to":[13,10,1],"faces":{"north":{"uv":[0.125,7.875,1.375,8],"texture":"#0"},"east":{"uv":[0,7.875,0.125,8],"texture":"#0"},"south":{"uv":[1.5,7.875,2.75,8],"texture":"#0"},"west":{"uv":[1.375,7.875,1.5,8],"texture":"#0"},"up":{"uv":[1.375,7.875,0.125,7.75],"texture":"#0"},"down":{"uv":[2.625,7.75,1.375,7.875],"texture":"#0"}}},{"from":[3,6.5,0],"to":[13,7.5,1],"faces":{"north":{"uv":[7.5,5.875,8.75,6],"texture":"#0"},"east":{"uv":[7.375,5.875,7.5,6],"texture":"#0"},"south":{"uv":[8.875,5.875,10.125,6],"texture":"#0"},"west":{"uv":[8.75,5.875,8.875,6],"texture":"#0"},"up":{"uv":[8.75,5.875,7.5,5.75],"texture":"#0"},"down":{"uv":[10,5.75,8.75,5.875],"texture":"#0"}}}, - {"from":[3,4,0],"to":[13,5,1],"faces":{"north":{"uv":[7.5,5.5,8.75,5.625],"texture":"#0"},"east":{"uv":[7.375,5.5,7.5,5.625],"texture":"#0"},"south":{"uv":[8.875,5.5,10.125,5.625],"texture":"#0"},"west":{"uv":[8.75,5.5,8.875,5.625],"texture":"#0"},"up":{"uv":[8.75,5.5,7.5,5.375],"texture":"#0"},"down":{"uv":[10,5.375,8.75,5.5],"texture":"#0"}}},{"from":[3,9,15],"to":[13,10,16],"faces":{"north":{"uv":[7.5,5.125,8.75,5.25],"texture":"#0"},"east":{"uv":[7.375,5.125,7.5,5.25],"texture":"#0"},"south":{"uv":[8.875,5.125,10.125,5.25],"texture":"#0"},"west":{"uv":[8.75,5.125,8.875,5.25],"texture":"#0"},"up":{"uv":[8.75,5.125,7.5,5],"texture":"#0"},"down":{"uv":[10,5,8.75,5.125],"texture":"#0"}}},{"from":[3,6.5,15],"to":[13,7.5,16],"faces":{"north":{"uv":[7.5,4.75,8.75,4.875],"texture":"#0"},"east":{"uv":[7.375,4.75,7.5,4.875],"texture":"#0"},"south":{"uv":[8.875,4.75,10.125,4.875],"texture":"#0"},"west":{"uv":[8.75,4.75,8.875,4.875],"texture":"#0"},"up":{"uv":[8.75,4.75,7.5,4.625],"texture":"#0"},"down":{"uv":[10,4.625,8.75,4.75],"texture":"#0"}}}, - {"from":[3,4,15],"to":[13,5,16],"faces":{"north":{"uv":[0.125,7.5,1.375,7.625],"texture":"#0"},"east":{"uv":[0,7.5,0.125,7.625],"texture":"#0"},"south":{"uv":[1.5,7.5,2.75,7.625],"texture":"#0"},"west":{"uv":[1.375,7.5,1.5,7.625],"texture":"#0"},"up":{"uv":[1.375,7.5,0.125,7.375],"texture":"#0"},"down":{"uv":[2.625,7.375,1.375,7.5],"texture":"#0"}}} + "elements": [ + { + "from": [ + 2, + 0, + 2 + ], + "to": [ + 14, + 13, + 14 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 1.5, + 3, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1.5, + 1.5, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 1.5, + 6, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 1.5, + 4.5, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 1.5, + 1.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 0, + 3, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -1, + 3 + ], + "to": [ + 12, + 0, + 4 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 6.875, + 8.875, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 6.875, + 7.875, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 6.875, + 10, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.875, + 6.875, + 9, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.875, + 6.875, + 7.875, + 6.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.875, + 6.75, + 8.875, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -1, + 12 + ], + "to": [ + 12, + 0, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 6.5, + 8.875, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 6.5, + 7.875, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 6.5, + 10, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.875, + 6.5, + 9, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.875, + 6.5, + 7.875, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.875, + 6.375, + 8.875, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + -1, + 3 + ], + "to": [ + 4, + 0, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 1.5, + 7.625, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.25, + 1.5, + 7.5, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 1.5, + 9, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.625, + 1.5, + 8.875, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.625, + 1.5, + 7.5, + 0.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.75, + 0.25, + 7.625, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + -1, + 3 + ], + "to": [ + 13, + 0, + 13 + ], + "faces": { + "north": { + "uv": [ + 7, + 6.125, + 7.125, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.75, + 6.125, + 7, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 6.125, + 8.5, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 6.125, + 8.375, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 6.125, + 7, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 4.875, + 7.125, + 6.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 2, + 3 + ], + "to": [ + 2, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 6, + 1.375, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6, + 1.25, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.625, + 6, + 2.75, + 7.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 6, + 2.625, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 6, + 1.25, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 4.75, + 1.375, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 2, + 3 + ], + "to": [ + 15, + 12, + 13 + ], + "faces": { + "north": { + "uv": [ + 5.125, + 4.75, + 5.25, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 4.75, + 5.125, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 4.75, + 6.625, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 4.75, + 6.5, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 4.75, + 5.125, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.375, + 3.5, + 5.25, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 2, + 1 + ], + "to": [ + 13, + 12, + 2 + ], + "faces": { + "north": { + "uv": [ + 3, + 6.25, + 4.25, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.875, + 6.25, + 3, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.375, + 6.25, + 5.625, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.25, + 6.25, + 4.375, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.25, + 6.25, + 3, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.5, + 6.125, + 4.25, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 2, + 14 + ], + "to": [ + 13, + 12, + 15 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 0.125, + 6, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 0.125, + 4.75, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 0.125, + 7.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 0.125, + 6.125, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 0.125, + 4.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0, + 6, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + -2, + 4 + ], + "to": [ + 2, + 2, + 5 + ], + "faces": { + "north": { + "uv": [ + 7, + 1.875, + 7.125, + 2.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 1.875, + 7, + 2.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.25, + 1.875, + 7.375, + 2.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 1.875, + 7.25, + 2.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 1.875, + 7, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1.75, + 7.125, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + -2, + 11 + ], + "to": [ + 2, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 6.5, + 7, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.75, + 6.5, + 6.875, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 6.5, + 7.25, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 6.5, + 7.125, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7, + 6.5, + 6.875, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 6.375, + 7, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + -2, + 4 + ], + "to": [ + 15, + 2, + 5 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 6.5, + 6.375, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 6.5, + 6.25, + 7 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 6.5, + 6.625, + 7 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 6.5, + 6.5, + 7 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 6.5, + 6.25, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 6.375, + 6.375, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + -2, + 11 + ], + "to": [ + 15, + 2, + 12 + ], + "faces": { + "north": { + "uv": [ + 3, + 4.875, + 3.125, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.875, + 4.875, + 3, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.25, + 4.875, + 3.375, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 4.875, + 3.25, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.125, + 4.875, + 3, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 4.75, + 3.125, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + -2, + 1 + ], + "to": [ + 12, + 2, + 2 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 4.875, + 2.5, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.25, + 4.875, + 2.375, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.625, + 4.875, + 2.75, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 4.875, + 2.625, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 4.875, + 2.375, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 4.75, + 2.5, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -2, + 1 + ], + "to": [ + 5, + 2, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.75, + 4.875, + 1.875, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.625, + 4.875, + 1.75, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 4.875, + 2.125, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 4.875, + 2, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.875, + 4.875, + 1.75, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2, + 4.75, + 1.875, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + -2, + 14 + ], + "to": [ + 12, + 2, + 15 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 4.875, + 0.875, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 4.875, + 0.75, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 4.875, + 1.125, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 4.875, + 1, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 4.875, + 0.75, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 4.75, + 0.875, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + -2, + 14 + ], + "to": [ + 5, + 2, + 15 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 4.875, + 0.25, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.875, + 0.125, + 5.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 4.875, + 0.5, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 4.875, + 0.375, + 5.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 4.875, + 0.125, + 4.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 4.75, + 0.25, + 4.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 3, + 4 + ], + "to": [ + 1, + 11, + 12 + ], + "faces": { + "north": { + "uv": [ + 6.5, + 3.25, + 6.625, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 3.25, + 6.5, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 3.25, + 7.75, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.625, + 3.25, + 7.625, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.625, + 3.25, + 6.5, + 2.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.75, + 2.25, + 6.625, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 13, + 3 + ], + "to": [ + 13, + 14, + 13 + ], + "faces": { + "north": { + "uv": [ + 1.25, + 4.5, + 2.5, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.5, + 1.25, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.75, + 4.5, + 5, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 4.5, + 3.75, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 4.5, + 1.25, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.75, + 3.25, + 2.5, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5, + 14, + 5 + ], + "to": [ + 11, + 16, + 11 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 2.5, + 8.375, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 2.5, + 7.625, + 2.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.125, + 2.5, + 9.875, + 2.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 2.5, + 9.125, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 2.5, + 7.625, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.125, + 1.75, + 8.375, + 2.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 14, + 6 + ], + "to": [ + 5, + 18, + 7 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 3.375, + 4.75, + 3.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 3.375, + 4.625, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 3.375, + 5, + 3.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 3.375, + 4.875, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 3.375, + 4.625, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 3.25, + 4.75, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 14, + 9 + ], + "to": [ + 5, + 18, + 10 + ], + "faces": { + "north": { + "uv": [ + 4, + 3.375, + 4.125, + 3.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 3.375, + 4, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 3.375, + 4.375, + 3.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.125, + 3.375, + 4.25, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.125, + 3.375, + 4, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 3.25, + 4.125, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 14, + 9 + ], + "to": [ + 12, + 18, + 10 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 3.375, + 0.875, + 3.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 3.375, + 0.75, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 3.375, + 1.125, + 3.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 3.375, + 1, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 3.375, + 0.75, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 3.25, + 0.875, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11, + 14, + 6 + ], + "to": [ + 12, + 18, + 7 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 3.375, + 0.25, + 3.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 3.375, + 0.125, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 3.375, + 0.5, + 3.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 3.375, + 0.375, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 3.375, + 0.125, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 3.25, + 0.25, + 3.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 4 + ], + "to": [ + 10, + 18, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 0.875, + 0.875, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 0.875, + 0.75, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 0.875, + 1.125, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 0.875, + 1, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 0.875, + 0.75, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 0.75, + 0.875, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 4 + ], + "to": [ + 7, + 18, + 5 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.875, + 0.25, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.875, + 0.125, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.875, + 0.5, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.875, + 0.375, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.875, + 0.125, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0.75, + 0.25, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 14, + 11 + ], + "to": [ + 7, + 18, + 12 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 0.125, + 0.875, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 0.125, + 0.75, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 0.125, + 1.125, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 0.125, + 1, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 0.125, + 0.75, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 0, + 0.875, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9, + 14, + 11 + ], + "to": [ + 10, + 18, + 12 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.25, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 0.125, + 0.5, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 0.125, + 0.375, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 0, + 0.25, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 4, + 3 + ], + "to": [ + 1, + 5, + 4 + ], + "faces": { + "north": { + "uv": [ + 1.375, + 8.25, + 1.5, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 8.25, + 1.375, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.625, + 8.25, + 1.75, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 8.25, + 1.625, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.5, + 8.25, + 1.375, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.625, + 8.125, + 1.5, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6.5, + 3 + ], + "to": [ + 1, + 7.5, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 8.25, + 0.875, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 8.25, + 0.75, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 8.25, + 1.125, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 8.25, + 1, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 8.25, + 0.75, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 8.125, + 0.875, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 9, + 3 + ], + "to": [ + 1, + 10, + 4 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 8.25, + 0.25, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8.25, + 0.125, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 8.25, + 0.5, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 8.25, + 0.375, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 8.25, + 0.125, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 8.125, + 0.25, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 9, + 12 + ], + "to": [ + 1, + 10, + 13 + ], + "faces": { + "north": { + "uv": [ + 3.5, + 8.125, + 3.625, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 8.125, + 3.5, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.75, + 8.125, + 3.875, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.625, + 8.125, + 3.75, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.625, + 8.125, + 3.5, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.75, + 8, + 3.625, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6.5, + 12 + ], + "to": [ + 1, + 7.5, + 13 + ], + "faces": { + "north": { + "uv": [ + 2.875, + 8.125, + 3, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.75, + 8.125, + 2.875, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 8.125, + 3.25, + 8.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 8.125, + 3.125, + 8.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 8.125, + 2.875, + 8 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.125, + 8, + 3, + 8.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 4, + 12 + ], + "to": [ + 1, + 5, + 13 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 8, + 5.5, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 8, + 5.375, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 8, + 5.75, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 8, + 5.625, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 8, + 5.375, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 7.875, + 5.5, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 9, + 13 + ], + "to": [ + 2, + 10, + 14 + ], + "faces": { + "north": { + "uv": [ + 4.75, + 8, + 4.875, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.625, + 8, + 4.75, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5, + 8, + 5.125, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.875, + 8, + 5, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.875, + 8, + 4.75, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 7.875, + 4.875, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 6.5, + 13 + ], + "to": [ + 2, + 7.5, + 14 + ], + "faces": { + "north": { + "uv": [ + 4.125, + 8, + 4.25, + 8.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 8, + 4.125, + 8.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.375, + 8, + 4.5, + 8.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.25, + 8, + 4.375, + 8.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.25, + 8, + 4.125, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.375, + 7.875, + 4.25, + 8 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 13 + ], + "to": [ + 2, + 5, + 14 + ], + "faces": { + "north": { + "uv": [ + 8, + 1.25, + 8.125, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 1.25, + 8, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 1.25, + 8.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 1.25, + 8.25, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 1.25, + 8, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 1.125, + 8.125, + 1.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 9, + 2 + ], + "to": [ + 2, + 10, + 3 + ], + "faces": { + "north": { + "uv": [ + 8, + 0.875, + 8.125, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 0.875, + 8, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 0.875, + 8.375, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 0.875, + 8.25, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 0.875, + 8, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 0.75, + 8.125, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 6.5, + 2 + ], + "to": [ + 2, + 7.5, + 3 + ], + "faces": { + "north": { + "uv": [ + 8, + 0.5, + 8.125, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 0.5, + 8, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 0.5, + 8.375, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 0.5, + 8.25, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 0.5, + 8, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 0.375, + 8.125, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 4, + 2 + ], + "to": [ + 2, + 5, + 3 + ], + "faces": { + "north": { + "uv": [ + 8, + 0.125, + 8.125, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.875, + 0.125, + 8, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 0.125, + 8.375, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.125, + 0.125, + 8.25, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.125, + 0.125, + 8, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.25, + 0, + 8.125, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 6.5, + 2 + ], + "to": [ + 15, + 7.5, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 7.625, + 8, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 7.625, + 7.875, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.125, + 7.625, + 8.25, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 7.625, + 8.125, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 7.625, + 7.875, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.125, + 7.5, + 8, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 4, + 2 + ], + "to": [ + 15, + 5, + 3 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 7.25, + 8, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 7.25, + 7.875, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.125, + 7.25, + 8.25, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 7.25, + 8.125, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 7.25, + 7.875, + 7.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.125, + 7.125, + 8, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 9, + 2 + ], + "to": [ + 15, + 10, + 3 + ], + "faces": { + "north": { + "uv": [ + 3.625, + 7.75, + 3.75, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.5, + 7.75, + 3.625, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 7.75, + 4, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 7.75, + 3.875, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.75, + 7.75, + 3.625, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 7.625, + 3.75, + 7.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 9, + 13 + ], + "to": [ + 15, + 10, + 14 + ], + "faces": { + "north": { + "uv": [ + 3, + 7.75, + 3.125, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.875, + 7.75, + 3, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.25, + 7.75, + 3.375, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 7.75, + 3.25, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.125, + 7.75, + 3, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 7.625, + 3.125, + 7.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 6.5, + 13 + ], + "to": [ + 15, + 7.5, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.875, + 7.25, + 7, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.75, + 7.25, + 6.875, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 7.25, + 7.25, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 7.25, + 7.125, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7, + 7.25, + 6.875, + 7.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.125, + 7.125, + 7, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 4, + 13 + ], + "to": [ + 15, + 5, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 7.25, + 6.375, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 7.25, + 6.25, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 7.25, + 6.625, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 7.25, + 6.5, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 7.25, + 6.25, + 7.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 7.125, + 6.375, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 9, + 3 + ], + "to": [ + 16, + 10, + 13 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 7.625, + 5.875, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 7.625, + 5.75, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.125, + 7.625, + 7.25, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 7.625, + 7.125, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 7.625, + 5.75, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 6.375, + 5.875, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 6.5, + 3 + ], + "to": [ + 16, + 7.5, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.875, + 4.375, + 8, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.625, + 4.375, + 7.875, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 4.375, + 9.375, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 4.375, + 9.25, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 4.375, + 7.875, + 3.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.125, + 3.125, + 8, + 4.375 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 4, + 3 + ], + "to": [ + 16, + 5, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.375, + 7.875, + 7.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 7.875, + 7.375, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.75, + 7.875, + 8.875, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 7.875, + 8.75, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 7.875, + 7.375, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.625, + 6.625, + 7.5, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 9, + 14 + ], + "to": [ + 14, + 10, + 15 + ], + "faces": { + "north": { + "uv": [ + 7, + 3, + 7.125, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.875, + 3, + 7, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.25, + 3, + 7.375, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.125, + 3, + 7.25, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.125, + 3, + 7, + 2.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 2.875, + 7.125, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 6.5, + 14 + ], + "to": [ + 14, + 7.5, + 15 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 1.875, + 6.375, + 2 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 1.875, + 6.25, + 2 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 1.875, + 6.625, + 2 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.375, + 1.875, + 6.5, + 2 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.375, + 1.875, + 6.25, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 1.75, + 6.375, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 14 + ], + "to": [ + 14, + 5, + 15 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 4.5, + 5.75, + 4.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 4.5, + 5.625, + 4.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.875, + 4.5, + 6, + 4.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 4.5, + 5.875, + 4.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 4.5, + 5.625, + 4.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 4.375, + 5.75, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 9, + 14 + ], + "to": [ + 3, + 10, + 15 + ], + "faces": { + "north": { + "uv": [ + 3, + 5.625, + 3.125, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.875, + 5.625, + 3, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.25, + 5.625, + 3.375, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.125, + 5.625, + 3.25, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.125, + 5.625, + 3, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 5.5, + 3.125, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6.5, + 14 + ], + "to": [ + 3, + 7.5, + 15 + ], + "faces": { + "north": { + "uv": [ + 2.375, + 5.625, + 2.5, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.25, + 5.625, + 2.375, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.625, + 5.625, + 2.75, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 5.625, + 2.625, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 5.625, + 2.375, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 5.5, + 2.5, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 14 + ], + "to": [ + 3, + 5, + 15 + ], + "faces": { + "north": { + "uv": [ + 1.75, + 5.625, + 1.875, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.625, + 5.625, + 1.75, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 5.625, + 2.125, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 5.625, + 2, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.875, + 5.625, + 1.75, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2, + 5.5, + 1.875, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 9, + 1 + ], + "to": [ + 3, + 10, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 5.625, + 0.875, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 5.625, + 0.75, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 5.625, + 1.125, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 5.625, + 1, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 5.625, + 0.75, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 5.5, + 0.875, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6.5, + 1 + ], + "to": [ + 3, + 7.5, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.625, + 0.25, + 5.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.625, + 0.125, + 5.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 5.625, + 0.5, + 5.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 5.625, + 0.375, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 5.625, + 0.125, + 5.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 5.5, + 0.25, + 5.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 4, + 1 + ], + "to": [ + 3, + 5, + 2 + ], + "faces": { + "north": { + "uv": [ + 4.625, + 4.125, + 4.75, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.5, + 4.125, + 4.625, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.875, + 4.125, + 5, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 4.125, + 4.875, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 4.125, + 4.625, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.875, + 4, + 4.75, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 9, + 1 + ], + "to": [ + 14, + 10, + 2 + ], + "faces": { + "north": { + "uv": [ + 4, + 4.125, + 4.125, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 4.125, + 4, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 4.125, + 4.375, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.125, + 4.125, + 4.25, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.125, + 4.125, + 4, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 4, + 4.125, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 6.5, + 1 + ], + "to": [ + 14, + 7.5, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 4.125, + 0.875, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 4.125, + 0.75, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 4.125, + 1.125, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 4.125, + 1, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 4.125, + 0.75, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 4, + 0.875, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 13, + 4, + 1 + ], + "to": [ + 14, + 5, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 4.125, + 0.25, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.125, + 0.125, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 4.125, + 0.5, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 4.125, + 0.375, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 4.125, + 0.125, + 4 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 4, + 0.25, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 0 + ], + "to": [ + 13, + 10, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.875, + 1.375, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.875, + 0.125, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 7.875, + 2.75, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 7.875, + 1.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 7.875, + 0.125, + 7.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 7.75, + 1.375, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 6.5, + 0 + ], + "to": [ + 13, + 7.5, + 1 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 5.875, + 8.75, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 5.875, + 7.5, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 5.875, + 10.125, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 5.875, + 8.875, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 5.875, + 7.5, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 5.75, + 8.75, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 0 + ], + "to": [ + 13, + 5, + 1 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 5.5, + 8.75, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 5.5, + 7.5, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 5.5, + 10.125, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 5.5, + 8.875, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 5.5, + 7.5, + 5.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 5.375, + 8.75, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 9, + 15 + ], + "to": [ + 13, + 10, + 16 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 5.125, + 8.75, + 5.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 5.125, + 7.5, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 5.125, + 10.125, + 5.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 5.125, + 8.875, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 5.125, + 7.5, + 5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 5, + 8.75, + 5.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 6.5, + 15 + ], + "to": [ + 13, + 7.5, + 16 + ], + "faces": { + "north": { + "uv": [ + 7.5, + 4.75, + 8.75, + 4.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 4.75, + 7.5, + 4.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 4.75, + 10.125, + 4.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 4.75, + 8.875, + 4.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 4.75, + 7.5, + 4.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 4.625, + 8.75, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 4, + 15 + ], + "to": [ + 13, + 5, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.5, + 1.375, + 7.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.5, + 0.125, + 7.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 7.5, + 2.75, + 7.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.375, + 7.5, + 1.5, + 7.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.375, + 7.5, + 0.125, + 7.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 7.375, + 1.375, + 7.5 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"msrreactorcore", - "origin":[8,8,8], - "color":0, - "children":[ + "name": "msrreactorcore", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + { + "name": "frame", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "name": "stabilizers", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "name": "saltinputs", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 17 + ] + }, + { + "name": "heatoutput", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27 + ] + }, { - "name":"frame", - "origin":[8,8,8], - "color":0, - "children":[0,1,2,3,4,5,6,7,8] - },{ - "name":"stabilizers", - "origin":[8,8,8], - "color":0, - "children":[9,10,11,12,13,14,15,16] - },{ - "name":"saltinputs", - "origin":[8,8,8], - "color":0, - "children":[17] - },{ - "name":"heatoutput", - "origin":[8,8,8], - "color":0, - "children":[18,19,20,21,22,23,24,25,26,27] - },{ - "name":"reinforcements", - "origin":[8,8,8], - "color":0, - "children":[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66] + "name": "reinforcements", + "origin": [ + 8, + 8, + 8 + ], + "color": 0, + "children": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66 + ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/nuclearboiler.json b/src/main/resources/assets/nuclearscience/models/block/nuclearboiler.json index f6508990..99895aec 100644 --- a/src/main/resources/assets/nuclearscience/models/block/nuclearboiler.json +++ b/src/main/resources/assets/nuclearscience/models/block/nuclearboiler.json @@ -1,422 +1,2231 @@ { "credit": "aurilisdev", "parent": "block/cube_all", - "texture_size": [128, 128], + "texture_size": [ + 128, + 128 + ], "textures": { - "0": "nuclearscience:model/nuclearboiler", - "particle": "nuclearscience:model/nuclearboiler" + "0": "nuclearscience:block/model/nuclearboiler", + "particle": "electrodynamics:block/steelcasing" }, "groups": [ { "name": "transparent", - "origin": [0, 0, 0], - "children": [0, 1] + "origin": [ + 0, + 0, + 0 + ], + "children": [ + 0, + 1 + ] }, { "name": "Boiler", - "origin": [8, 8, 8], - "children": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] + "origin": [ + 8, + 8, + 8 + ], + "children": [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ] } ], "loader": "forge:multi-layer", "layers": { "solid": { + "render_type": "minecraft:solid", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/nuclearboiler", - "particle": "nuclearscience:model/nuclearboiler" + "0": "nuclearscience:block/model/nuclearboiler", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { - "from": [13, 2, 4.5], - "to": [16, 12, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 13, + 2, + 4.5 + ], + "to": [ + 16, + 12, + 11.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [0.875, 4.625, 1.25, 6], "texture": "#0"}, - "east": {"uv": [0, 4.625, 0.875, 6], "texture": "#0"}, - "south": {"uv": [2.125, 4.625, 2.5, 6], "texture": "#0"}, - "west": {"uv": [1.25, 4.625, 2.125, 6], "texture": "#0"}, - "up": {"uv": [1.25, 4.625, 0.875, 3.75], "texture": "#0"} + "north": { + "uv": [ + 0.875, + 4.625, + 1.25, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.625, + 0.875, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 4.625, + 2.5, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 4.625, + 2.125, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 4.625, + 0.875, + 3.75 + ], + "texture": "#0" + } } }, { - "from": [3.75, 2, 4], - "to": [12, 5, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 3.75, + 2, + 4 + ], + "to": [ + 12, + 5, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [7, 3.125, 8, 3.5], "texture": "#0"}, - "south": {"uv": [9, 3.125, 10, 3.5], "texture": "#0"}, - "west": {"uv": [8, 3.125, 9, 3.5], "texture": "#0"}, - "up": {"uv": [8, 3.125, 7, 2.125], "texture": "#0"} + "north": { + "uv": [ + 7, + 3.125, + 8, + 3.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 3.125, + 10, + 3.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 3.125, + 9, + 3.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 3.125, + 7, + 2.125 + ], + "texture": "#0" + } } }, { - "from": [12.425, 5, 9], - "to": [13.425, 5.5, 10.75], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 9.7, 8]}, + "from": [ + 12.425, + 5, + 9 + ], + "to": [ + 13.425, + 5.5, + 10.75 + ], + "rotation": { + "angle": -22.5, + "axis": "y", + "origin": [ + 8, + 9.7, + 8 + ] + }, "faces": { - "north": {"uv": [0.625, 8.75, 0.75, 8.875], "texture": "#0"}, - "east": {"uv": [0.5, 8.75, 0.625, 8.875], "texture": "#0"}, - "south": {"uv": [0.875, 8.75, 1, 8.875], "texture": "#0"}, - "west": {"uv": [0.75, 8.75, 0.875, 8.875], "texture": "#0"}, - "up": {"uv": [0.75, 8.75, 0.625, 8.625], "texture": "#0"} + "north": { + "uv": [ + 0.625, + 8.75, + 0.75, + 8.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.5, + 8.75, + 0.625, + 8.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.875, + 8.75, + 1, + 8.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 8.75, + 0.875, + 8.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.75, + 8.75, + 0.625, + 8.625 + ], + "texture": "#0" + } } }, { - "from": [3.925, 5, 9.75], - "to": [4.925, 5.5, 12], - "rotation": {"angle": 45, "axis": "y", "origin": [4.925, 9, 11]}, + "from": [ + 3.925, + 5, + 9.75 + ], + "to": [ + 4.925, + 5.5, + 12 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 4.925, + 9, + 11 + ] + }, "faces": { - "north": {"uv": [5, 8.25, 5.125, 8.375], "texture": "#0"}, - "east": {"uv": [4.75, 8.25, 5, 8.375], "texture": "#0"}, - "south": {"uv": [5.375, 8.25, 5.5, 8.375], "texture": "#0"}, - "west": {"uv": [5.125, 8.25, 5.375, 8.375], "texture": "#0"}, - "up": {"uv": [5.125, 8.25, 5, 8], "texture": "#0"} + "north": { + "uv": [ + 5, + 8.25, + 5.125, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 8.25, + 5, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.375, + 8.25, + 5.5, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 8.25, + 5.375, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.125, + 8.25, + 5, + 8 + ], + "texture": "#0" + } } }, { - "from": [3.925, 5, 4], - "to": [4.925, 5.5, 6.25], - "rotation": {"angle": -45, "axis": "y", "origin": [4.925, 9, 5]}, + "from": [ + 3.925, + 5, + 4 + ], + "to": [ + 4.925, + 5.5, + 6.25 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 4.925, + 9, + 5 + ] + }, "faces": { - "north": {"uv": [4.25, 8.25, 4.375, 8.375], "texture": "#0"}, - "east": {"uv": [4.375, 8.25, 4.625, 8.375], "texture": "#0"}, - "south": {"uv": [4.625, 8.25, 4.75, 8.375], "texture": "#0"}, - "west": {"uv": [4.375, 8.25, 4.625, 8.375], "texture": "#0"}, - "up": {"uv": [4.375, 8.25, 4.25, 8], "texture": "#0"} + "north": { + "uv": [ + 4.25, + 8.25, + 4.375, + 8.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 8.25, + 4.625, + 8.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 8.25, + 4.75, + 8.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.375, + 8.25, + 4.625, + 8.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.375, + 8.25, + 4.25, + 8 + ], + "texture": "#0" + } } }, { - "from": [12.425, 5, 5.25], - "to": [13.425, 5.5, 7], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 9.7, 8]}, + "from": [ + 12.425, + 5, + 5.25 + ], + "to": [ + 13.425, + 5.5, + 7 + ], + "rotation": { + "angle": 22.5, + "axis": "y", + "origin": [ + 8, + 9.7, + 8 + ] + }, "faces": { - "north": {"uv": [0.125, 8.75, 0.25, 8.875], "texture": "#0"}, - "east": {"uv": [0, 8.75, 0.125, 8.875], "texture": "#0"}, - "south": {"uv": [0.375, 8.75, 0.5, 8.875], "texture": "#0"}, - "west": {"uv": [0.25, 8.75, 0.375, 8.875], "texture": "#0"}, - "up": {"uv": [0.25, 8.75, 0.125, 8.625], "texture": "#0"} + "north": { + "uv": [ + 0.125, + 8.75, + 0.25, + 8.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8.75, + 0.125, + 8.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 8.75, + 0.5, + 8.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 8.75, + 0.375, + 8.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 8.75, + 0.125, + 8.625 + ], + "texture": "#0" + } } }, { - "from": [12.425, 2, 9], - "to": [13.425, 5, 10.75], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 6.7, 8]}, + "from": [ + 12.425, + 2, + 9 + ], + "to": [ + 13.425, + 5, + 10.75 + ], + "rotation": { + "angle": -22.5, + "axis": "y", + "origin": [ + 8, + 6.7, + 8 + ] + }, "faces": { - "east": {"uv": [3.5, 8.125, 3.625, 8.5], "texture": "#0"}, - "south": {"uv": [3.875, 8.125, 4, 8.5], "texture": "#0"}, - "west": {"uv": [3.75, 8.125, 3.875, 8.5], "texture": "#0"}, - "down": {"uv": [3.875, 8, 3.75, 8.125], "texture": "#0"} + "east": { + "uv": [ + 3.5, + 8.125, + 3.625, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 8.125, + 4, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.75, + 8.125, + 3.875, + 8.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 8, + 3.75, + 8.125 + ], + "texture": "#0" + } } }, { - "from": [12.425, 2, 5.25], - "to": [13.425, 5, 7], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 6.7, 8]}, + "from": [ + 12.425, + 2, + 5.25 + ], + "to": [ + 13.425, + 5, + 7 + ], + "rotation": { + "angle": 22.5, + "axis": "y", + "origin": [ + 8, + 6.7, + 8 + ] + }, "faces": { - "north": {"uv": [3.125, 8.125, 3.25, 8.5], "texture": "#0"}, - "east": {"uv": [3, 8.125, 3.125, 8.5], "texture": "#0"}, - "west": {"uv": [3.25, 8.125, 3.375, 8.5], "texture": "#0"}, - "down": {"uv": [3.375, 8, 3.25, 8.125], "texture": "#0"} + "north": { + "uv": [ + 3.125, + 8.125, + 3.25, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3, + 8.125, + 3.125, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.25, + 8.125, + 3.375, + 8.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.375, + 8, + 3.25, + 8.125 + ], + "texture": "#0" + } } }, { - "from": [3.925, 2, 9.75], - "to": [4.925, 5, 12], - "rotation": {"angle": 45, "axis": "y", "origin": [4.925, 6, 11]}, + "from": [ + 3.925, + 2, + 9.75 + ], + "to": [ + 4.925, + 5, + 12 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 4.925, + 6, + 11 + ] + }, "faces": { - "north": {"uv": [0.25, 8.25, 0.375, 8.625], "texture": "#0"}, - "south": {"uv": [0.625, 8.25, 0.75, 8.625], "texture": "#0"}, - "west": {"uv": [0.375, 8.25, 0.625, 8.625], "texture": "#0"}, - "down": {"uv": [0.5, 8, 0.375, 8.25], "texture": "#0"} + "north": { + "uv": [ + 0.25, + 8.25, + 0.375, + 8.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.625, + 8.25, + 0.75, + 8.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 8.25, + 0.625, + 8.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.5, + 8, + 0.375, + 8.25 + ], + "texture": "#0" + } } }, { - "from": [3.925, 2, 4], - "to": [4.925, 5, 6.25], - "rotation": {"angle": -45, "axis": "y", "origin": [4.925, 6, 5]}, + "from": [ + 3.925, + 2, + 4 + ], + "to": [ + 4.925, + 5, + 6.25 + ], + "rotation": { + "angle": -45, + "axis": "y", + "origin": [ + 4.925, + 6, + 5 + ] + }, "faces": { - "north": {"uv": [1, 8.25, 1.125, 8.625], "texture": "#0"}, - "south": {"uv": [1.375, 8.25, 1.5, 8.625], "texture": "#0"}, - "west": {"uv": [1.125, 8.25, 1.375, 8.625], "texture": "#0"}, - "down": {"uv": [1.25, 8, 1.125, 8.25], "texture": "#0"} + "north": { + "uv": [ + 1, + 8.25, + 1.125, + 8.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 8.25, + 1.5, + 8.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.125, + 8.25, + 1.375, + 8.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.25, + 8, + 1.125, + 8.25 + ], + "texture": "#0" + } } }, { - "from": [7, 5, 5], - "to": [9, 8, 6.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 7, + 5, + 5 + ], + "to": [ + 9, + 8, + 6.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [2.375, 8.125, 2.625, 8.5], "texture": "#0"}, - "east": {"uv": [2.25, 8.125, 2.375, 8.5], "texture": "#0"}, - "south": {"uv": [2.75, 8.125, 3, 8.5], "texture": "#0"}, - "west": {"uv": [2.625, 8.125, 2.75, 8.5], "texture": "#0"}, - "up": {"uv": [2.25, 6.125, 2.5, 6.25], "texture": "#0"} + "north": { + "uv": [ + 2.375, + 8.125, + 2.625, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.25, + 8.125, + 2.375, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 8.125, + 3, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.625, + 8.125, + 2.75, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6.125, + 2.5, + 6.25 + ], + "texture": "#0" + } } }, { - "from": [7, 5, 9.5], - "to": [9, 8, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 7, + 5, + 9.5 + ], + "to": [ + 9, + 8, + 11 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [1.625, 8.125, 1.875, 8.5], "texture": "#0"}, - "east": {"uv": [1.5, 8.125, 1.625, 8.5], "texture": "#0"}, - "south": {"uv": [2, 8.125, 2.25, 8.5], "texture": "#0"}, - "west": {"uv": [1.875, 8.125, 2, 8.5], "texture": "#0"}, - "up": {"uv": [2.25, 6.125, 2.5, 6.25], "texture": "#0"} + "north": { + "uv": [ + 1.625, + 8.125, + 1.875, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.5, + 8.125, + 1.625, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 8.125, + 2.25, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 8.125, + 2, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6.125, + 2.5, + 6.25 + ], + "texture": "#0" + } } }, { - "from": [10, 9, 5.5], - "to": [13, 11, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 10, + 9, + 5.5 + ], + "to": [ + 13, + 11, + 10.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [2.125, 6.625, 2.375, 6.875], "texture": "#0"}, - "south": {"uv": [3, 6.625, 3.25, 6.875], "texture": "#0"}, - "west": {"uv": [2.5, 6.625, 3.125, 6.875], "texture": "#0"}, - "up": {"uv": [2.375, 6.625, 2.125, 6], "texture": "#0"}, - "down": {"uv": [2.625, 6, 2.375, 6.625], "texture": "#0"} + "north": { + "uv": [ + 2.125, + 6.625, + 2.375, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3, + 6.625, + 3.25, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.5, + 6.625, + 3.125, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.375, + 6.625, + 2.125, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.625, + 6, + 2.375, + 6.625 + ], + "texture": "#0" + } } }, { - "from": [7, 9.25, 0.25], - "to": [9, 11, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 7, + 9.25, + 0.25 + ], + "to": [ + 9, + 11, + 4.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [3.75, 7.125, 4, 7.25], "texture": "#0"}, - "east": {"uv": [3.25, 7.125, 3.75, 7.25], "texture": "#0"}, - "south": {"uv": [4, 6.5, 3.75, 6], "texture": "#0"}, - "west": {"uv": [4, 7.125, 4.5, 7.25], "texture": "#0"}, - "up": {"uv": [4, 7.125, 3.75, 6.625], "texture": "#0"}, - "down": {"uv": [4.25, 6.625, 4, 7.125], "texture": "#0"} + "north": { + "uv": [ + 3.75, + 7.125, + 4, + 7.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 7.125, + 3.75, + 7.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.5, + 3.75, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 7.125, + 4.5, + 7.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 7.125, + 3.75, + 6.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 6.625, + 4, + 7.125 + ], + "texture": "#0" + } } }, { - "from": [6, 6, 0], - "to": [10, 10, 1.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 6, + 6, + 0 + ], + "to": [ + 10, + 10, + 1.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [1.375, 7.375, 1.875, 7.875], "texture": "#0"}, - "east": {"uv": [1.25, 7.375, 1.375, 7.875], "texture": "#0"}, - "south": {"uv": [2, 7.375, 2.5, 7.875], "texture": "#0"}, - "west": {"uv": [1.875, 7.375, 2, 7.875], "texture": "#0"}, - "up": {"uv": [1.875, 7.375, 1.375, 7.25], "texture": "#0"}, - "down": {"uv": [2.375, 7.25, 1.875, 7.375], "texture": "#0"} + "north": { + "uv": [ + 1.375, + 7.375, + 1.875, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 7.375, + 1.375, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 7.375, + 2.5, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.875, + 7.375, + 2, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.875, + 7.375, + 1.375, + 7.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 7.25, + 1.875, + 7.375 + ], + "texture": "#0" + } } }, { - "from": [7, 2, 0], - "to": [9, 6, 1.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 7, + 2, + 0 + ], + "to": [ + 9, + 6, + 1.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [4.125, 7.375, 4.375, 8], "texture": "#0"}, - "east": {"uv": [4, 7.375, 4.125, 8], "texture": "#0"}, - "south": {"uv": [4.5, 7.375, 4.75, 8], "texture": "#0"}, - "west": {"uv": [4.375, 7.375, 4.5, 8], "texture": "#0"} + "north": { + "uv": [ + 4.125, + 7.375, + 4.375, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 7.375, + 4.125, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 7.375, + 4.75, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.375, + 7.375, + 4.5, + 8 + ], + "texture": "#0" + } } }, { - "from": [6, 6, 14.5], - "to": [10, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 22.5]}, + "from": [ + 6, + 6, + 14.5 + ], + "to": [ + 10, + 10, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 22.5 + ] + }, "faces": { - "north": {"uv": [0.125, 7.375, 0.625, 7.875], "texture": "#0"}, - "east": {"uv": [0, 7.375, 0.125, 7.875], "texture": "#0"}, - "south": {"uv": [0.75, 7.375, 1.25, 7.875], "texture": "#0"}, - "west": {"uv": [0.625, 7.375, 0.75, 7.875], "texture": "#0"}, - "up": {"uv": [0.625, 7.375, 0.125, 7.25], "texture": "#0"}, - "down": {"uv": [1.125, 7.25, 0.625, 7.375], "texture": "#0"} + "north": { + "uv": [ + 0.125, + 7.375, + 0.625, + 7.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.375, + 0.125, + 7.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 7.375, + 1.25, + 7.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 7.375, + 0.75, + 7.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 7.375, + 0.125, + 7.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 7.25, + 0.625, + 7.375 + ], + "texture": "#0" + } } }, { - "from": [7, 2, 14.5], - "to": [9, 6, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 22.5]}, + "from": [ + 7, + 2, + 14.5 + ], + "to": [ + 9, + 6, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 22.5 + ] + }, "faces": { - "north": {"uv": [4.875, 7.375, 5.125, 8], "texture": "#0"}, - "east": {"uv": [4.75, 7.375, 4.875, 8], "texture": "#0"}, - "south": {"uv": [5.25, 7.375, 5.5, 8], "texture": "#0"}, - "west": {"uv": [5.125, 7.375, 5.25, 8], "texture": "#0"} + "north": { + "uv": [ + 4.875, + 7.375, + 5.125, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 7.375, + 4.875, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 7.375, + 5.5, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.125, + 7.375, + 5.25, + 8 + ], + "texture": "#0" + } } }, { - "from": [7, 9.25, 11.5], - "to": [9, 11, 15.75], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 7, + 9.25, + 11.5 + ], + "to": [ + 9, + 11, + 15.75 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [4, 6.5, 3.75, 6], "texture": "#0"}, - "east": {"uv": [3.25, 6.5, 3.75, 6.625], "texture": "#0"}, - "south": {"uv": [4.5, 6.5, 4.75, 6.625], "texture": "#0"}, - "west": {"uv": [4, 6.5, 4.5, 6.625], "texture": "#0"}, - "up": {"uv": [4, 6.5, 3.75, 6], "texture": "#0"}, - "down": {"uv": [4.25, 6, 4, 6.5], "texture": "#0"} + "north": { + "uv": [ + 4, + 6.5, + 3.75, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 6.5, + 3.75, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 6.5, + 4.75, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 6.5, + 4.5, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 6.5, + 3.75, + 6 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 6, + 4, + 6.5 + ], + "texture": "#0" + } } }, { - "from": [1.9625, 3.2875, 9.5], - "to": [3.7125, 8.4625, 14.5], - "rotation": {"angle": -22.5, "axis": "z", "origin": [4.5875, 4.625, 8]}, + "from": [ + 1.9625, + 3.2875, + 9.5 + ], + "to": [ + 3.7125, + 8.4625, + 14.5 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 4.5875, + 4.625, + 8 + ] + }, "faces": { - "north": {"uv": [6.125, 5.25, 7, 5.375], "texture": "#0"}, - "east": {"uv": [6.125, 4.375, 7, 5.25], "texture": "#0"}, - "south": {"uv": [7, 5.25, 7.875, 5.375], "texture": "#0"}, - "west": {"uv": [5.25, 4.375, 6.125, 5.25], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.125, 5.375, 5.25, 5.25], "texture": "#0"}, - "down": {"uv": [4.375, 5.25, 5.25, 5.375], "texture": "#0"} + "north": { + "uv": [ + 6.125, + 5.25, + 7, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 4.375, + 7, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 5.25, + 7.875, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 4.375, + 6.125, + 5.25 + ], + "rotation": 90, + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 5.375, + 5.25, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.375, + 5.25, + 5.25, + 5.375 + ], + "texture": "#0" + } } }, { - "from": [1.9625, 0.5375, 11], - "to": [3.7125, 3.2875, 13], - "rotation": {"angle": -22.5, "axis": "z", "origin": [4.5875, 4.625, 8]}, + "from": [ + 1.9625, + 0.5375, + 11 + ], + "to": [ + 3.7125, + 3.2875, + 13 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 4.5875, + 4.625, + 8 + ] + }, "faces": { - "north": {"uv": [3.5, 7.5, 3.625, 8], "texture": "#0"}, - "east": {"uv": [3.25, 7.5, 3.5, 8], "texture": "#0"}, - "south": {"uv": [3.875, 7.5, 4, 8], "texture": "#0"}, - "west": {"uv": [3.625, 7.5, 3.875, 8], "texture": "#0"} + "north": { + "uv": [ + 3.5, + 7.5, + 3.625, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 7.5, + 3.5, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.875, + 7.5, + 4, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.625, + 7.5, + 3.875, + 8 + ], + "texture": "#0" + } } }, { - "from": [1.9625, 0.5375, 4], - "to": [3.7125, 3.2875, 6], - "rotation": {"angle": -22.5, "axis": "z", "origin": [4.5875, 4.625, 8]}, + "from": [ + 1.9625, + 0.5375, + 4 + ], + "to": [ + 3.7125, + 3.2875, + 6 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 4.5875, + 4.625, + 8 + ] + }, "faces": { - "north": {"uv": [2.75, 7.5, 2.875, 8], "texture": "#0"}, - "east": {"uv": [2.5, 7.5, 2.75, 8], "texture": "#0"}, - "south": {"uv": [3.125, 7.5, 3.25, 8], "texture": "#0"}, - "west": {"uv": [2.875, 7.5, 3.125, 8], "texture": "#0"} + "north": { + "uv": [ + 2.75, + 7.5, + 2.875, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.5, + 7.5, + 2.75, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 7.5, + 3.25, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.875, + 7.5, + 3.125, + 8 + ], + "texture": "#0" + } } }, { - "from": [1.9625, 3.2875, 2.5], - "to": [3.7125, 8.4625, 7.5], - "rotation": {"angle": -22.5, "axis": "z", "origin": [4.5875, 4.625, 8]}, + "from": [ + 1.9625, + 3.2875, + 2.5 + ], + "to": [ + 3.7125, + 8.4625, + 7.5 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 4.5875, + 4.625, + 8 + ] + }, "faces": { - "north": {"uv": [6.125, 5.25, 7, 5.375], "texture": "#0"}, - "east": {"uv": [6.125, 4.375, 7, 5.25], "texture": "#0"}, - "south": {"uv": [7, 5.25, 7.875, 5.375], "texture": "#0"}, - "west": {"uv": [5.25, 4.375, 6.125, 5.25], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.125, 5.375, 5.25, 5.25], "texture": "#0"}, - "down": {"uv": [4.375, 5.25, 5.25, 5.375], "texture": "#0"} + "north": { + "uv": [ + 6.125, + 5.25, + 7, + 5.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 4.375, + 7, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7, + 5.25, + 7.875, + 5.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 4.375, + 6.125, + 5.25 + ], + "rotation": 90, + "texture": "#0" + }, + "up": { + "uv": [ + 6.125, + 5.375, + 5.25, + 5.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.375, + 5.25, + 5.25, + 5.375 + ], + "texture": "#0" + } } }, { - "from": [4, 0, 4], - "to": [12, 1, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]}, + "from": [ + 4, + 0, + 4 + ], + "to": [ + 12, + 1, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 7, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [6, 0, 7, 0.125], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 0.125], "texture": "#0"}, - "south": {"uv": [6, 0, 7, 0.125], "texture": "#0"}, - "west": {"uv": [6, 0, 7, 0.125], "texture": "#0"}, - "down": {"uv": [7, 0, 6, 1], "texture": "#0"} + "north": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 0, + 7, + 0.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 0, + 6, + 1 + ], + "texture": "#0" + } } }, { - "from": [1, 0, 15], - "to": [15, 1, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 23]}, + "from": [ + 1, + 0, + 15 + ], + "to": [ + 15, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 23 + ] + }, "faces": { - "north": {"uv": [2, 2, 4, 2.125], "texture": "#0"}, - "south": {"uv": [6, 2, 8, 2.125], "texture": "#0"}, - "down": {"uv": [2, 2, 4, 2.125], "texture": "#0"} + "north": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 2.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + } } }, { - "from": [0, 0, 0], - "to": [1, 1, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 0, + 0, + 0 + ], + "to": [ + 1, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [6.5, 4.875, 6.75, 5.125], "texture": "#0"}, - "east": {"uv": [0, 2, 2, 2.125], "texture": "#0"}, - "south": {"uv": [6.5, 4.875, 6.75, 5.125], "texture": "#0"}, - "west": {"uv": [4, 2, 6, 2.125], "texture": "#0"}, - "down": {"uv": [0, 2, 2, 2.125], "texture": "#0"} + "north": { + "uv": [ + 6.5, + 4.875, + 6.75, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 4.875, + 6.75, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + } } }, { - "from": [1, 0, 0], - "to": [15, 1, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 1, + 0, + 0 + ], + "to": [ + 15, + 1, + 1 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [2, 2, 4, 2.125], "texture": "#0"}, - "south": {"uv": [2, 2, 4, 2.125], "texture": "#0"}, - "down": {"uv": [2, 2, 4, 2.125], "texture": "#0"} + "north": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + } } }, { - "from": [15, 0, 0], - "to": [16, 1, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "from": [ + 15, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 23, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [6.5, 4.875, 6.75, 5.125], "texture": "#0"}, - "east": {"uv": [0, 2, 2, 2.125], "texture": "#0"}, - "south": {"uv": [6.5, 4.875, 6.75, 5.125], "texture": "#0"}, - "west": {"uv": [0, 2, 2, 2.125], "texture": "#0"}, - "down": {"uv": [0, 2, 2, 2.125], "texture": "#0"} + "north": { + "uv": [ + 6.5, + 4.875, + 6.75, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 4.875, + 6.75, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + } } }, { - "from": [0, 1, 0], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 2, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [2, 2, 4, 2.125], "texture": "#0"}, - "east": {"uv": [0, 2, 2, 2.125], "texture": "#0"}, - "south": {"uv": [6, 2, 8, 2.125], "texture": "#0"}, - "west": {"uv": [4, 2, 6, 2.125], "texture": "#0"}, - "up": {"uv": [4, 2, 2, 0], "texture": "#0"}, - "down": {"uv": [6, 0, 4, 2], "texture": "#0"} + "north": { + "uv": [ + 2, + 2, + 4, + 2.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 2.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2, + 2, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 0, + 4, + 2 + ], + "texture": "#0" + } } }, { - "from": [2, 2, 2], - "to": [14, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, + "from": [ + 2, + 2, + 2 + ], + "to": [ + 14, + 3, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 9, + 8 + ] + }, "faces": { - "north": {"uv": [8.875, 9, 10.375, 9.125], "texture": "#0"}, - "east": {"uv": [7.375, 9, 8.875, 9.125], "texture": "#0"}, - "south": {"uv": [11.875, 9, 13.375, 9.125], "texture": "#0"}, - "west": {"uv": [10.375, 9, 11.875, 9.125], "texture": "#0"}, - "up": {"uv": [10.375, 9, 8.875, 7.5], "texture": "#0"} + "north": { + "uv": [ + 8.875, + 9, + 10.375, + 9.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.375, + 9, + 8.875, + 9.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11.875, + 9, + 13.375, + 9.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 9, + 11.875, + 9.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.375, + 9, + 8.875, + 7.5 + ], + "texture": "#0" + } } } ] }, "translucent": { + "render_type": "minecraft:translucent", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/nuclearboiler", - "particle": "nuclearscience:model/nuclearboiler" + "0": "nuclearscience:block/model/nuclearboiler", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { - "from": [6, 8, 8.5], - "to": [10, 12, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 6, + 8, + 8.5 + ], + "to": [ + 10, + 12, + 11.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#0"}, - "east": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#0"}, - "south": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#0"}, - "west": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#0"}, - "up": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#0"}, - "down": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#0"} + "north": { + "uv": [ + 3.375, + 4.625, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 4.25, + 3.375, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 4.625, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 4.25, + 3.375, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 4.125, + 3.375, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 4.125, + 3.375, + 3.75 + ], + "texture": "#0" + } } }, { - "from": [6, 8, 4.5], - "to": [10, 12, 7.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [ + 6, + 8, + 4.5 + ], + "to": [ + 10, + 12, + 7.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 0, + 0 + ] + }, "faces": { - "north": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#0"}, - "east": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#0"}, - "south": {"uv": [3.375, 4.625, 3.875, 5.125], "texture": "#0"}, - "west": {"uv": [3.875, 4.25, 3.375, 3.875], "texture": "#0"}, - "up": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#0"}, - "down": {"uv": [3.875, 4.125, 3.375, 3.75], "texture": "#0"} + "north": { + "uv": [ + 3.375, + 4.625, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.875, + 4.25, + 3.375, + 3.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 4.625, + 3.875, + 5.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.875, + 4.25, + 3.375, + 3.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.875, + 4.125, + 3.375, + 3.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.875, + 4.125, + 3.375, + 3.75 + ], + "texture": "#0" + } } } ] } } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/particleinjector.json b/src/main/resources/assets/nuclearscience/models/block/particleinjector.json index eba6bf8c..0fd0e11d 100644 --- a/src/main/resources/assets/nuclearscience/models/block/particleinjector.json +++ b/src/main/resources/assets/nuclearscience/models/block/particleinjector.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "1": "nuclearscience:model/particleinjector", - "particle": "nuclearscience:model/particleinjector" + "1": "nuclearscience:block/model/particleinjector", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/plasma.json b/src/main/resources/assets/nuclearscience/models/block/plasma.json deleted file mode 100644 index c215508e..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/plasma.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "nuclearscience:block/plasma" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/block/quantumcapacitor.json b/src/main/resources/assets/nuclearscience/models/block/quantumcapacitor.json index 764a968e..d0355e41 100644 --- a/src/main/resources/assets/nuclearscience/models/block/quantumcapacitor.json +++ b/src/main/resources/assets/nuclearscience/models/block/quantumcapacitor.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "0": "nuclearscience:model/quantumcapacitor", - "particle": "nuclearscience:model/quantumcapacitor" + "0": "nuclearscience:block/model/quantumcapacitor", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessor.json b/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessor.json index d07b9339..323b9f13 100644 --- a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessor.json +++ b/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessor.json @@ -1,55 +1,3383 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/radioactiveprocessor", - "particle":"nuclearscience:model/radioactiveprocessor" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/radioactiveprocessor", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[0,0,0],"to":[16,5,16],"faces":{"north":{"uv":[2,2,4,2.625],"texture":"#0"},"east":{"uv":[0,2,2,2.625],"texture":"#0"},"south":{"uv":[6,2,8,2.625],"texture":"#0"},"west":{"uv":[4,2,6,2.625],"texture":"#0"},"up":{"uv":[4,2,2,0],"texture":"#0"},"down":{"uv":[6,0,4,2],"texture":"#0"}}},{"from":[1,5,1],"to":[15,14,15],"faces":{"north":{"uv":[1.75,4.5,3.5,5.625],"texture":"#0"},"east":{"uv":[0,4.5,1.75,5.625],"texture":"#0"},"south":{"uv":[5.25,4.5,7,5.625],"texture":"#0"},"west":{"uv":[3.5,4.5,5.25,5.625],"texture":"#0"},"up":{"uv":[3.5,4.5,1.75,2.75],"texture":"#0"},"down":{"uv":[5.25,2.75,3.5,4.5],"texture":"#0"}}},{"from":[0,5,0],"to":[2,16,1],"faces":{"north":{"uv":[8.125,8.25,8.375,9.625],"texture":"#0"},"east":{"uv":[8,8.25,8.125,9.625],"texture":"#0"},"south":{"uv":[8.5,8.25,8.75,9.625],"texture":"#0"},"west":{"uv":[8.375,8.25,8.5,9.625],"texture":"#0"},"up":{"uv":[8.375,8.25,8.125,8.125],"texture":"#0"},"down":{"uv":[8.625,8.125,8.375,8.25],"texture":"#0"}}}, - {"from":[14,5,0],"to":[16,16,1],"faces":{"north":{"uv":[7.25,8.25,7.5,9.625],"texture":"#0"},"east":{"uv":[7.125,8.25,7.25,9.625],"texture":"#0"},"south":{"uv":[7.625,8.25,7.875,9.625],"texture":"#0"},"west":{"uv":[7.5,8.25,7.625,9.625],"texture":"#0"},"up":{"uv":[7.5,8.25,7.25,8.125],"texture":"#0"},"down":{"uv":[7.75,8.125,7.5,8.25],"texture":"#0"}}},{"from":[14,5,15],"to":[16,16,16],"faces":{"north":{"uv":[1,8.25,1.25,9.625],"texture":"#0"},"east":{"uv":[0.875,8.25,1,9.625],"texture":"#0"},"south":{"uv":[1.375,8.25,1.625,9.625],"texture":"#0"},"west":{"uv":[1.25,8.25,1.375,9.625],"texture":"#0"},"up":{"uv":[1.25,8.25,1,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.25,8.25],"texture":"#0"}}},{"from":[0,5,15],"to":[2,16,16],"faces":{"north":{"uv":[0.125,8.25,0.375,9.625],"texture":"#0"},"east":{"uv":[0,8.25,0.125,9.625],"texture":"#0"},"south":{"uv":[0.5,8.25,0.75,9.625],"texture":"#0"},"west":{"uv":[0.375,8.25,0.5,9.625],"texture":"#0"},"up":{"uv":[0.375,8.25,0.125,8.125],"texture":"#0"},"down":{"uv":[0.625,8.125,0.375,8.25],"texture":"#0"}}}, - {"from":[0,5,14],"to":[1,16,15],"faces":{"north":{"uv":[9,8.25,9.125,9.625],"texture":"#0"},"east":{"uv":[8.875,8.25,9,9.625],"texture":"#0"},"south":{"uv":[9.25,8.25,9.375,9.625],"texture":"#0"},"west":{"uv":[9.125,8.25,9.25,9.625],"texture":"#0"},"up":{"uv":[9.125,8.25,9,8.125],"texture":"#0"},"down":{"uv":[9.25,8.125,9.125,8.25],"texture":"#0"}}},{"from":[0,5,1],"to":[1,16,2],"faces":{"north":{"uv":[8.625,1.875,8.75,3.25],"texture":"#0"},"east":{"uv":[8.5,1.875,8.625,3.25],"texture":"#0"},"south":{"uv":[8.875,1.875,9,3.25],"texture":"#0"},"west":{"uv":[8.75,1.875,8.875,3.25],"texture":"#0"},"up":{"uv":[8.75,1.875,8.625,1.75],"texture":"#0"},"down":{"uv":[8.875,1.75,8.75,1.875],"texture":"#0"}}},{"from":[15,5,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,8.25,2,9.625],"texture":"#0"},"east":{"uv":[1.75,8.25,1.875,9.625],"texture":"#0"},"south":{"uv":[2.125,8.25,2.25,9.625],"texture":"#0"},"west":{"uv":[2,8.25,2.125,9.625],"texture":"#0"},"up":{"uv":[2,8.25,1.875,8.125],"texture":"#0"},"down":{"uv":[2.125,8.125,2,8.25],"texture":"#0"}}}, - {"from":[15,5,14],"to":[16,16,15],"faces":{"north":{"uv":[1.5,0.125,1.625,1.5],"texture":"#0"},"east":{"uv":[1.375,0.125,1.5,1.5],"texture":"#0"},"south":{"uv":[1.75,0.125,1.875,1.5],"texture":"#0"},"west":{"uv":[1.625,0.125,1.75,1.5],"texture":"#0"},"up":{"uv":[1.625,0.125,1.5,0],"texture":"#0"},"down":{"uv":[1.75,0,1.625,0.125],"texture":"#0"}}},{"from":[2,6,0],"to":[6,7,1],"faces":{"north":{"uv":[5.375,6.25,5.875,6.375],"texture":"#0"},"east":{"uv":[5.25,6.25,5.375,6.375],"texture":"#0"},"south":{"uv":[6,6.25,6.5,6.375],"texture":"#0"},"west":{"uv":[5.875,6.25,6,6.375],"texture":"#0"},"up":{"uv":[5.875,6.25,5.375,6.125],"texture":"#0"},"down":{"uv":[6.375,6.125,5.875,6.25],"texture":"#0"}}},{"from":[2,10,0],"to":[6,11,1],"faces":{"north":{"uv":[6.25,1.25,6.75,1.375],"texture":"#0"},"east":{"uv":[6.125,1.25,6.25,1.375],"texture":"#0"},"south":{"uv":[6.875,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[6.75,1.25,6.875,1.375],"texture":"#0"},"up":{"uv":[6.75,1.25,6.25,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,6.75,1.25],"texture":"#0"}}}, - {"from":[10,6,0],"to":[14,7,1],"faces":{"north":{"uv":[6.25,0.875,6.75,1],"texture":"#0"},"east":{"uv":[6.125,0.875,6.25,1],"texture":"#0"},"south":{"uv":[6.875,0.875,7.375,1],"texture":"#0"},"west":{"uv":[6.75,0.875,6.875,1],"texture":"#0"},"up":{"uv":[6.75,0.875,6.25,0.75],"texture":"#0"},"down":{"uv":[7.25,0.75,6.75,0.875],"texture":"#0"}}},{"from":[10,10,0],"to":[14,11,1],"faces":{"north":{"uv":[6.25,0.5,6.75,0.625],"texture":"#0"},"east":{"uv":[6.125,0.5,6.25,0.625],"texture":"#0"},"south":{"uv":[6.875,0.5,7.375,0.625],"texture":"#0"},"west":{"uv":[6.75,0.5,6.875,0.625],"texture":"#0"},"up":{"uv":[6.75,0.5,6.25,0.375],"texture":"#0"},"down":{"uv":[7.25,0.375,6.75,0.5],"texture":"#0"}}},{"from":[6,5,0],"to":[10,12,1],"faces":{"north":{"uv":[0.125,2.875,0.625,3.75],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3.75],"texture":"#0"},"south":{"uv":[0.75,2.875,1.25,3.75],"texture":"#0"},"west":{"uv":[0.625,2.875,0.75,3.75],"texture":"#0"},"up":{"uv":[0.625,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[1.125,2.75,0.625,2.875],"texture":"#0"}}}, - {"from":[6,5,15],"to":[10,12,16],"faces":{"north":{"uv":[0.125,0.125,0.625,1],"texture":"#0"},"east":{"uv":[0,0.125,0.125,1],"texture":"#0"},"south":{"uv":[0.75,0.125,1.25,1],"texture":"#0"},"west":{"uv":[0.625,0.125,0.75,1],"texture":"#0"},"up":{"uv":[0.625,0.125,0.125,0],"texture":"#0"},"down":{"uv":[1.125,0,0.625,0.125],"texture":"#0"}}},{"from":[2,6,15],"to":[6,7,16],"faces":{"north":{"uv":[6.25,0.125,6.75,0.25],"texture":"#0"},"east":{"uv":[6.125,0.125,6.25,0.25],"texture":"#0"},"south":{"uv":[6.875,0.125,7.375,0.25],"texture":"#0"},"west":{"uv":[6.75,0.125,6.875,0.25],"texture":"#0"},"up":{"uv":[6.75,0.125,6.25,0],"texture":"#0"},"down":{"uv":[7.25,0,6.75,0.125],"texture":"#0"}}},{"from":[2,10,15],"to":[6,11,16],"faces":{"north":{"uv":[0.125,6.25,0.625,6.375],"texture":"#0"},"east":{"uv":[0,6.25,0.125,6.375],"texture":"#0"},"south":{"uv":[0.75,6.25,1.25,6.375],"texture":"#0"},"west":{"uv":[0.625,6.25,0.75,6.375],"texture":"#0"},"up":{"uv":[0.625,6.25,0.125,6.125],"texture":"#0"},"down":{"uv":[1.125,6.125,0.625,6.25],"texture":"#0"}}}, - {"from":[10,10,15],"to":[14,11,16],"faces":{"north":{"uv":[0.125,5.875,0.625,6],"texture":"#0"},"east":{"uv":[0,5.875,0.125,6],"texture":"#0"},"south":{"uv":[0.75,5.875,1.25,6],"texture":"#0"},"west":{"uv":[0.625,5.875,0.75,6],"texture":"#0"},"up":{"uv":[0.625,5.875,0.125,5.75],"texture":"#0"},"down":{"uv":[1.125,5.75,0.625,5.875],"texture":"#0"}}},{"from":[10,6,15],"to":[14,7,16],"faces":{"north":{"uv":[5.5,4.25,6,4.375],"texture":"#0"},"east":{"uv":[5.375,4.25,5.5,4.375],"texture":"#0"},"south":{"uv":[6.125,4.25,6.625,4.375],"texture":"#0"},"west":{"uv":[6,4.25,6.125,4.375],"texture":"#0"},"up":{"uv":[6,4.25,5.5,4.125],"texture":"#0"},"down":{"uv":[6.5,4.125,6,4.25],"texture":"#0"}}},{"from":[0,10,2],"to":[1,11,4],"faces":{"north":{"uv":[2.125,6.5,2.25,6.625],"texture":"#0"},"east":{"uv":[1.875,6.5,2.125,6.625],"texture":"#0"},"south":{"uv":[2.5,6.5,2.625,6.625],"texture":"#0"},"west":{"uv":[2.25,6.5,2.5,6.625],"texture":"#0"},"up":{"uv":[2.25,6.5,2.125,6.25],"texture":"#0"},"down":{"uv":[2.375,6.25,2.25,6.5],"texture":"#0"}}}, - {"from":[0,10,12],"to":[1,11,14],"faces":{"north":{"uv":[2.125,6,2.25,6.125],"texture":"#0"},"east":{"uv":[1.875,6,2.125,6.125],"texture":"#0"},"south":{"uv":[2.5,6,2.625,6.125],"texture":"#0"},"west":{"uv":[2.25,6,2.5,6.125],"texture":"#0"},"up":{"uv":[2.25,6,2.125,5.75],"texture":"#0"},"down":{"uv":[2.375,5.75,2.25,6],"texture":"#0"}}},{"from":[0,6,12],"to":[1,7,14],"faces":{"north":{"uv":[5.625,3.5,5.75,3.625],"texture":"#0"},"east":{"uv":[5.375,3.5,5.625,3.625],"texture":"#0"},"south":{"uv":[6,3.5,6.125,3.625],"texture":"#0"},"west":{"uv":[5.75,3.5,6,3.625],"texture":"#0"},"up":{"uv":[5.75,3.5,5.625,3.25],"texture":"#0"},"down":{"uv":[5.875,3.25,5.75,3.5],"texture":"#0"}}},{"from":[0,6,2],"to":[1,7,4],"faces":{"north":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"east":{"uv":[5.375,3,5.625,3.125],"texture":"#0"},"south":{"uv":[6,3,6.125,3.125],"texture":"#0"},"west":{"uv":[5.75,3,6,3.125],"texture":"#0"},"up":{"uv":[5.75,3,5.625,2.75],"texture":"#0"},"down":{"uv":[5.875,2.75,5.75,3],"texture":"#0"}}}, - {"from":[15,6,2],"to":[16,7,14],"faces":{"north":{"uv":[8.625,7.875,8.75,8],"texture":"#0"},"east":{"uv":[7.125,7.875,8.625,8],"texture":"#0"},"south":{"uv":[10.25,7.875,10.375,8],"texture":"#0"},"west":{"uv":[8.75,7.875,10.25,8],"texture":"#0"},"up":{"uv":[8.75,7.875,8.625,6.375],"texture":"#0"},"down":{"uv":[8.875,6.375,8.75,7.875],"texture":"#0"}}},{"from":[15,10,2],"to":[16,11,14],"faces":{"north":{"uv":[6.75,7.625,6.875,7.75],"texture":"#0"},"east":{"uv":[5.25,7.625,6.75,7.75],"texture":"#0"},"south":{"uv":[8.375,7.625,8.5,7.75],"texture":"#0"},"west":{"uv":[6.875,7.625,8.375,7.75],"texture":"#0"},"up":{"uv":[6.875,7.625,6.75,6.125],"texture":"#0"},"down":{"uv":[7,6.125,6.875,7.625],"texture":"#0"}}},{"from":[2,14,0],"to":[14,16,1],"faces":{"north":{"uv":[0.125,7.75,1.625,8],"texture":"#0"},"east":{"uv":[0,7.75,0.125,8],"texture":"#0"},"south":{"uv":[1.75,7.75,3.25,8],"texture":"#0"},"west":{"uv":[1.625,7.75,1.75,8],"texture":"#0"},"up":{"uv":[1.625,7.75,0.125,7.625],"texture":"#0"},"down":{"uv":[3.125,7.625,1.625,7.75],"texture":"#0"}}}, - {"from":[2,14,15],"to":[14,16,16],"faces":{"north":{"uv":[7.625,5,9.125,5.25],"texture":"#0"},"east":{"uv":[7.5,5,7.625,5.25],"texture":"#0"},"south":{"uv":[9.25,5,10.75,5.25],"texture":"#0"},"west":{"uv":[9.125,5,9.25,5.25],"texture":"#0"},"up":{"uv":[9.125,5,7.625,4.875],"texture":"#0"},"down":{"uv":[10.625,4.875,9.125,5],"texture":"#0"}}},{"from":[0,14,2],"to":[1,16,14],"faces":{"north":{"uv":[1.5,7.25,1.625,7.5],"texture":"#0"},"east":{"uv":[0,7.25,1.5,7.5],"texture":"#0"},"south":{"uv":[3.125,7.25,3.25,7.5],"texture":"#0"},"west":{"uv":[1.625,7.25,3.125,7.5],"texture":"#0"},"up":{"uv":[1.625,7.25,1.5,5.75],"texture":"#0"},"down":{"uv":[1.75,5.75,1.625,7.25],"texture":"#0"}}},{"from":[15,14,2],"to":[16,16,14],"faces":{"north":{"uv":[7.125,5.75,7.25,6],"texture":"#0"},"east":{"uv":[5.625,5.75,7.125,6],"texture":"#0"},"south":{"uv":[8.75,5.75,8.875,6],"texture":"#0"},"west":{"uv":[7.25,5.75,8.75,6],"texture":"#0"},"up":{"uv":[7.25,5.75,7.125,4.25],"texture":"#0"},"down":{"uv":[7.375,4.25,7.25,5.75],"texture":"#0"}}}, - {"from":[4,14,4],"to":[12,16,12],"faces":{"north":{"uv":[6.375,3.75,7.375,4],"texture":"#0"},"east":{"uv":[5.375,3.75,6.375,4],"texture":"#0"},"south":{"uv":[8.375,3.75,9.375,4],"texture":"#0"},"west":{"uv":[7.375,3.75,8.375,4],"texture":"#0"},"up":{"uv":[7.375,3.75,6.375,2.75],"texture":"#0"},"down":{"uv":[8.375,2.75,7.375,3.75],"texture":"#0"}}},{"from":[1,15,1],"to":[2,16,2],"faces":{"north":{"uv":[5.375,6.625,5.5,6.75],"texture":"#0"},"east":{"uv":[5.25,6.625,5.375,6.75],"texture":"#0"},"south":{"uv":[5.625,6.625,5.75,6.75],"texture":"#0"},"west":{"uv":[5.5,6.625,5.625,6.75],"texture":"#0"},"up":{"uv":[5.5,6.625,5.375,6.5],"texture":"#0"},"down":{"uv":[5.625,6.5,5.5,6.625],"texture":"#0"}}},{"from":[1,15,14],"to":[2,16,15],"faces":{"north":{"uv":[4.375,6.625,4.5,6.75],"texture":"#0"},"east":{"uv":[4.25,6.625,4.375,6.75],"texture":"#0"},"south":{"uv":[4.625,6.625,4.75,6.75],"texture":"#0"},"west":{"uv":[4.5,6.625,4.625,6.75],"texture":"#0"},"up":{"uv":[4.5,6.625,4.375,6.5],"texture":"#0"},"down":{"uv":[4.625,6.5,4.5,6.625],"texture":"#0"}}}, - {"from":[14,15,14],"to":[15,16,15],"faces":{"north":{"uv":[0.75,6.625,0.875,6.75],"texture":"#0"},"east":{"uv":[0.625,6.625,0.75,6.75],"texture":"#0"},"south":{"uv":[1,6.625,1.125,6.75],"texture":"#0"},"west":{"uv":[0.875,6.625,1,6.75],"texture":"#0"},"up":{"uv":[0.875,6.625,0.75,6.5],"texture":"#0"},"down":{"uv":[1,6.5,0.875,6.625],"texture":"#0"}}},{"from":[14,15,1],"to":[15,16,2],"faces":{"north":{"uv":[0.125,6.625,0.25,6.75],"texture":"#0"},"east":{"uv":[0,6.625,0.125,6.75],"texture":"#0"},"south":{"uv":[0.375,6.625,0.5,6.75],"texture":"#0"},"west":{"uv":[0.25,6.625,0.375,6.75],"texture":"#0"},"up":{"uv":[0.25,6.625,0.125,6.5],"texture":"#0"},"down":{"uv":[0.375,6.5,0.25,6.625],"texture":"#0"}}},{"from":[11.5,16,7],"to":[15.5,17,9],"faces":{"north":{"uv":[4,7.875,4.5,8],"texture":"#0"},"east":{"uv":[3.75,7.875,4,8],"texture":"#0"},"south":{"uv":[4.75,7.875,5.25,8],"texture":"#0"},"west":{"uv":[4.5,7.875,4.75,8],"texture":"#0"},"up":{"uv":[4.5,7.875,4,7.625],"texture":"#0"},"down":{"uv":[5,7.625,4.5,7.875],"texture":"#0"}}}, - {"from":[0.5,16,7],"to":[4.5,17,9],"faces":{"north":{"uv":[0.25,4.125,0.75,4.25],"texture":"#0"},"east":{"uv":[0,4.125,0.25,4.25],"texture":"#0"},"south":{"uv":[1,4.125,1.5,4.25],"texture":"#0"},"west":{"uv":[0.75,4.125,1,4.25],"texture":"#0"},"up":{"uv":[0.75,4.125,0.25,3.875],"texture":"#0"},"down":{"uv":[1.25,3.875,0.75,4.125],"texture":"#0"}}},{"from":[7,16,0.5],"to":[9,17,4.5],"faces":{"north":{"uv":[3.75,6.25,4,6.375],"texture":"#0"},"east":{"uv":[3.25,6.25,3.75,6.375],"texture":"#0"},"south":{"uv":[4.5,6.25,4.75,6.375],"texture":"#0"},"west":{"uv":[4,6.25,4.5,6.375],"texture":"#0"},"up":{"uv":[4,6.25,3.75,5.75],"texture":"#0"},"down":{"uv":[4.25,5.75,4,6.25],"texture":"#0"}}},{"from":[7,16,11.5],"to":[9,17,15.5],"faces":{"north":{"uv":[0.5,1.625,0.75,1.75],"texture":"#0"},"east":{"uv":[0,1.625,0.5,1.75],"texture":"#0"},"south":{"uv":[1.25,1.625,1.5,1.75],"texture":"#0"},"west":{"uv":[0.75,1.625,1.25,1.75],"texture":"#0"},"up":{"uv":[0.75,1.625,0.5,1.125],"texture":"#0"},"down":{"uv":[1,1.125,0.75,1.625],"texture":"#0"}}}, - {"from":[3,14,3],"to":[13,15,4],"faces":{"north":{"uv":[8.125,0.125,9.375,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[9.5,0.125,10.75,0.25],"texture":"#0"},"west":{"uv":[9.375,0.125,9.5,0.25],"texture":"#0"},"up":{"uv":[9.375,0.125,8.125,0],"texture":"#0"},"down":{"uv":[10.625,0,9.375,0.125],"texture":"#0"}}},{"from":[3,14,4],"to":[4,15,12],"faces":{"north":{"uv":[5.75,8.875,5.875,9],"texture":"#0"},"east":{"uv":[4.75,8.875,5.75,9],"texture":"#0"},"south":{"uv":[6.875,8.875,7,9],"texture":"#0"},"west":{"uv":[5.875,8.875,6.875,9],"texture":"#0"},"up":{"uv":[5.875,8.875,5.75,7.875],"texture":"#0"},"down":{"uv":[6,7.875,5.875,8.875],"texture":"#0"}}},{"from":[3,14,12],"to":[13,15,13],"faces":{"north":{"uv":[7.625,5.5,8.875,5.625],"texture":"#0"},"east":{"uv":[7.5,5.5,7.625,5.625],"texture":"#0"},"south":{"uv":[9,5.5,10.25,5.625],"texture":"#0"},"west":{"uv":[8.875,5.5,9,5.625],"texture":"#0"},"up":{"uv":[8.875,5.5,7.625,5.375],"texture":"#0"},"down":{"uv":[10.125,5.375,8.875,5.5],"texture":"#0"}}}, - {"from":[12,14,4],"to":[13,15,12],"faces":{"north":{"uv":[2.875,6.75,3,6.875],"texture":"#0"},"east":{"uv":[1.875,6.75,2.875,6.875],"texture":"#0"},"south":{"uv":[4,6.75,4.125,6.875],"texture":"#0"},"west":{"uv":[3,6.75,4,6.875],"texture":"#0"},"up":{"uv":[3,6.75,2.875,5.75],"texture":"#0"},"down":{"uv":[3.125,5.75,3,6.75],"texture":"#0"}}},{"from":[1,14,1],"to":[15,15,2],"faces":{"north":{"uv":[7.625,4.625,9.375,4.75],"texture":"#0"},"east":{"uv":[7.5,4.625,7.625,4.75],"texture":"#0"},"south":{"uv":[9.5,4.625,11.25,4.75],"texture":"#0"},"west":{"uv":[9.375,4.625,9.5,4.75],"texture":"#0"},"up":{"uv":[9.375,4.625,7.625,4.5],"texture":"#0"},"down":{"uv":[11.125,4.5,9.375,4.625],"texture":"#0"}}},{"from":[1,14,2],"to":[2,15,14],"faces":{"north":{"uv":[7.625,1.5,7.75,1.625],"texture":"#0"},"east":{"uv":[6.125,1.5,7.625,1.625],"texture":"#0"},"south":{"uv":[9.25,1.5,9.375,1.625],"texture":"#0"},"west":{"uv":[7.75,1.5,9.25,1.625],"texture":"#0"},"up":{"uv":[7.75,1.5,7.625,0],"texture":"#0"},"down":{"uv":[7.875,0,7.75,1.5],"texture":"#0"}}}, - {"from":[1,14,14],"to":[15,15,15],"faces":{"north":{"uv":[7.625,4.25,9.375,4.375],"texture":"#0"},"east":{"uv":[7.5,4.25,7.625,4.375],"texture":"#0"},"south":{"uv":[9.5,4.25,11.25,4.375],"texture":"#0"},"west":{"uv":[9.375,4.25,9.5,4.375],"texture":"#0"},"up":{"uv":[9.375,4.25,7.625,4.125],"texture":"#0"},"down":{"uv":[11.125,4.125,9.375,4.25],"texture":"#0"}}},{"from":[14,14,2],"to":[15,15,14],"faces":{"north":{"uv":[4.875,7.25,5,7.375],"texture":"#0"},"east":{"uv":[3.375,7.25,4.875,7.375],"texture":"#0"},"south":{"uv":[6.5,7.25,6.625,7.375],"texture":"#0"},"west":{"uv":[5,7.25,6.5,7.375],"texture":"#0"},"up":{"uv":[5,7.25,4.875,5.75],"texture":"#0"},"down":{"uv":[5.125,5.75,5,7.25],"texture":"#0"}}},{"from":[0,5,4],"to":[1,12,12],"faces":{"north":{"uv":[3.375,8.5,3.5,9.375],"texture":"#0"},"east":{"uv":[2.375,8.5,3.375,9.375],"texture":"#0"},"south":{"uv":[4.5,8.5,4.625,9.375],"texture":"#0"},"west":{"uv":[3.5,8.5,4.5,9.375],"texture":"#0"},"up":{"uv":[3.5,8.5,3.375,7.5],"texture":"#0"},"down":{"uv":[3.625,7.5,3.5,8.5],"texture":"#0"}}} + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 5, + 16 + ], + "faces": { + "north": { + "uv": [ + 2, + 2, + 4, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2, + 2, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 0, + 4, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 5, + 1 + ], + "to": [ + 15, + 14, + 15 + ], + "faces": { + "north": { + "uv": [ + 1.75, + 4.5, + 3.5, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.5, + 1.75, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 4.5, + 7, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 4.5, + 5.25, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 4.5, + 1.75, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.25, + 2.75, + 3.5, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 0 + ], + "to": [ + 2, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 8.25, + 8.375, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 8.25, + 8.125, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 8.25, + 8.75, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 8.25, + 8.5, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 8.25, + 8.125, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 8.125, + 8.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 5, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 7.25, + 8.25, + 7.5, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.125, + 8.25, + 7.25, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 8.25, + 7.875, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 8.25, + 7.625, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 8.25, + 7.25, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.75, + 8.125, + 7.5, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 5, + 15 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 1, + 8.25, + 1.25, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 8.25, + 1, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 8.25, + 1.625, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 8.25, + 1.375, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 8.25, + 1, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 8.125, + 1.25, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 15 + ], + "to": [ + 2, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 8.25, + 0.375, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8.25, + 0.125, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 8.25, + 0.75, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 8.25, + 0.5, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 8.25, + 0.125, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 8.125, + 0.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 14 + ], + "to": [ + 1, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 9, + 8.25, + 9.125, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.875, + 8.25, + 9, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 8.25, + 9.375, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 8.25, + 9.25, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 8.25, + 9, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.25, + 8.125, + 9.125, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 1 + ], + "to": [ + 1, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 8.625, + 1.875, + 8.75, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.5, + 1.875, + 8.625, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 1.875, + 9, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 1.875, + 8.875, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 1.875, + 8.625, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.875, + 1.75, + 8.75, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 5, + 1 + ], + "to": [ + 16, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 8.25, + 2, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 8.25, + 1.875, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 8.25, + 2.25, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 8.25, + 2.125, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 8.25, + 1.875, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.125, + 8.125, + 2, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 5, + 14 + ], + "to": [ + 16, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 0.125, + 1.625, + 1.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 0.125, + 1.5, + 1.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 0.125, + 1.875, + 1.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 0.125, + 1.75, + 1.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 0.125, + 1.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 0, + 1.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6, + 0 + ], + "to": [ + 6, + 7, + 1 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 6.25, + 5.875, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 6.25, + 5.375, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 6.25, + 6.5, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 6.25, + 6, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 6.25, + 5.375, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.375, + 6.125, + 5.875, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 10, + 0 + ], + "to": [ + 6, + 11, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 1.25, + 6.75, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 1.25, + 6.25, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 1.25, + 7.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 1.25, + 6.875, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 1.25, + 6.25, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1.125, + 6.75, + 1.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 6, + 0 + ], + "to": [ + 14, + 7, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.875, + 6.75, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.875, + 6.25, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.875, + 7.375, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.875, + 6.875, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.875, + 6.25, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0.75, + 6.75, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 10, + 0 + ], + "to": [ + 14, + 11, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.5, + 6.75, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.5, + 6.25, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.5, + 7.375, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.5, + 6.875, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.5, + 6.25, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0.375, + 6.75, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 5, + 0 + ], + "to": [ + 10, + 12, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.875, + 0.625, + 3.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.875, + 0.125, + 3.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 2.875, + 1.25, + 3.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 2.875, + 0.75, + 3.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 2.875, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 2.75, + 0.625, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 5, + 15 + ], + "to": [ + 10, + 12, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.625, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 0.125, + 1.25, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 0.125, + 0.75, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 0, + 0.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6, + 15 + ], + "to": [ + 6, + 7, + 16 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.125, + 6.75, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.125, + 6.25, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.125, + 7.375, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.125, + 6.875, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.125, + 6.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0, + 6.75, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 10, + 15 + ], + "to": [ + 6, + 11, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 6.25, + 0.625, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6.25, + 0.125, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 6.25, + 1.25, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 6.25, + 0.75, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 6.25, + 0.125, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 6.125, + 0.625, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 10, + 15 + ], + "to": [ + 14, + 11, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.875, + 0.625, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.875, + 0.125, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 5.875, + 1.25, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 5.875, + 0.75, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 5.875, + 0.125, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 5.75, + 0.625, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 6, + 15 + ], + "to": [ + 14, + 7, + 16 + ], + "faces": { + "north": { + "uv": [ + 5.5, + 4.25, + 6, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 4.25, + 5.5, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 4.25, + 6.625, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 4.25, + 6.125, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 4.25, + 5.5, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 4.125, + 6, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 10, + 2 + ], + "to": [ + 1, + 11, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 6.5, + 2.25, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6.5, + 2.125, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 6.5, + 2.625, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 6.5, + 2.5, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6.5, + 2.125, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 6.25, + 2.25, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 10, + 12 + ], + "to": [ + 1, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 6, + 2.25, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6, + 2.125, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 6, + 2.625, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 6, + 2.5, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6, + 2.125, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 5.75, + 2.25, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6, + 12 + ], + "to": [ + 1, + 7, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3.5, + 5.75, + 3.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3.5, + 5.625, + 3.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 3.5, + 6.125, + 3.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.5, + 6, + 3.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.5, + 5.625, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 3.25, + 5.75, + 3.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6, + 2 + ], + "to": [ + 1, + 7, + 4 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3, + 5.75, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3, + 5.625, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 3, + 6.125, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3, + 6, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3, + 5.625, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 2.75, + 5.75, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 6, + 2 + ], + "to": [ + 16, + 7, + 14 + ], + "faces": { + "north": { + "uv": [ + 8.625, + 7.875, + 8.75, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.125, + 7.875, + 8.625, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.25, + 7.875, + 10.375, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 7.875, + 10.25, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 7.875, + 8.625, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.875, + 6.375, + 8.75, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 10, + 2 + ], + "to": [ + 16, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 7.625, + 6.875, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 7.625, + 6.75, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 7.625, + 8.5, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 7.625, + 8.375, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 7.625, + 6.75, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 6.125, + 6.875, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 14, + 0 + ], + "to": [ + 14, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.75, + 1.625, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.75, + 0.125, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 7.75, + 3.25, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 7.75, + 1.75, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 7.75, + 0.125, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.125, + 7.625, + 1.625, + 7.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 14, + 15 + ], + "to": [ + 14, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 5, + 9.125, + 5.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 5, + 7.625, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 5, + 10.75, + 5.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 5, + 9.25, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 5, + 7.625, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 4.875, + 9.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 14, + 2 + ], + "to": [ + 1, + 16, + 14 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 7.25, + 1.625, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.25, + 1.5, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 7.25, + 3.25, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 7.25, + 3.125, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 7.25, + 1.5, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 5.75, + 1.625, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 14, + 2 + ], + "to": [ + 16, + 16, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 5.75, + 7.25, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.625, + 5.75, + 7.125, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.75, + 5.75, + 8.875, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 5.75, + 8.75, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 5.75, + 7.125, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 4.25, + 7.25, + 5.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 14, + 4 + ], + "to": [ + 12, + 16, + 12 + ], + "faces": { + "north": { + "uv": [ + 6.375, + 3.75, + 7.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3.75, + 6.375, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 3.75, + 9.375, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 3.75, + 8.375, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 3.75, + 6.375, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 2.75, + 7.375, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 15, + 1 + ], + "to": [ + 2, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 6.625, + 5.5, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 6.625, + 5.375, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 6.625, + 5.75, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 6.625, + 5.625, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 6.625, + 5.375, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 6.5, + 5.5, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 15, + 14 + ], + "to": [ + 2, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 6.625, + 4.5, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 6.625, + 4.375, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 6.625, + 4.75, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 6.625, + 4.625, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 6.625, + 4.375, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.625, + 6.5, + 4.5, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 15, + 14 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 6.625, + 0.875, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 6.625, + 0.75, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 6.625, + 1.125, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 6.625, + 1, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 6.625, + 0.75, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 6.5, + 0.875, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 15, + 1 + ], + "to": [ + 15, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 6.625, + 0.25, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6.625, + 0.125, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 6.625, + 0.5, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 6.625, + 0.375, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 6.625, + 0.125, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 6.5, + 0.25, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11.5, + 16, + 7 + ], + "to": [ + 15.5, + 17, + 9 + ], + "faces": { + "north": { + "uv": [ + 4, + 7.875, + 4.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 7.875, + 4, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 7.875, + 5.25, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 7.875, + 4.75, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 7.875, + 4, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 7.625, + 4.5, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0.5, + 16, + 7 + ], + "to": [ + 4.5, + 17, + 9 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 4.125, + 0.75, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.125, + 0.25, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 4.125, + 1.5, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 4.125, + 1, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.75, + 4.125, + 0.25, + 3.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.25, + 3.875, + 0.75, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 16, + 0.5 + ], + "to": [ + 9, + 17, + 4.5 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 6.25, + 4, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 6.25, + 3.75, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 6.25, + 4.75, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 6.25, + 4.5, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 6.25, + 3.75, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 5.75, + 4, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 16, + 11.5 + ], + "to": [ + 9, + 17, + 15.5 + ], + "faces": { + "north": { + "uv": [ + 0.5, + 1.625, + 0.75, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1.625, + 0.5, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.25, + 1.625, + 1.5, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 1.625, + 1.25, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.75, + 1.625, + 0.5, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 1.125, + 0.75, + 1.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 3 + ], + "to": [ + 13, + 15, + 4 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.125, + 9.375, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.125, + 8.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 0.125, + 10.75, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 0.125, + 9.5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 0.125, + 8.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 0, + 9.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 4 + ], + "to": [ + 4, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 8.875, + 5.875, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 8.875, + 5.75, + 9 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 8.875, + 7, + 9 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 8.875, + 6.875, + 9 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 8.875, + 5.75, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 7.875, + 5.875, + 8.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 12 + ], + "to": [ + 13, + 15, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 5.5, + 8.875, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 5.5, + 7.625, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 5.5, + 10.25, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.875, + 5.5, + 9, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.875, + 5.5, + 7.625, + 5.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.125, + 5.375, + 8.875, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 4 + ], + "to": [ + 13, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 2.875, + 6.75, + 3, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6.75, + 2.875, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.75, + 4.125, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 6.75, + 4, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 6.75, + 2.875, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.125, + 5.75, + 3, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 1 + ], + "to": [ + 15, + 15, + 2 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 4.625, + 9.375, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 4.625, + 7.625, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 4.625, + 11.25, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 4.625, + 9.5, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 4.625, + 7.625, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 4.5, + 9.375, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 2 + ], + "to": [ + 2, + 15, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 1.5, + 7.75, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 1.5, + 7.625, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 1.5, + 9.375, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.75, + 1.5, + 9.25, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.75, + 1.5, + 7.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.875, + 0, + 7.75, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 14 + ], + "to": [ + 15, + 15, + 15 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 4.25, + 9.375, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 4.25, + 7.625, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 4.25, + 11.25, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 4.25, + 9.5, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 4.25, + 7.625, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 4.125, + 9.375, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 14, + 2 + ], + "to": [ + 15, + 15, + 14 + ], + "faces": { + "north": { + "uv": [ + 4.875, + 7.25, + 5, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 7.25, + 4.875, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 7.25, + 6.625, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5, + 7.25, + 6.5, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5, + 7.25, + 4.875, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.125, + 5.75, + 5, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 4 + ], + "to": [ + 1, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 8.5, + 3.5, + 9.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 8.5, + 3.375, + 9.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 8.5, + 4.625, + 9.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 8.5, + 4.5, + 9.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 8.5, + 3.375, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 7.5, + 3.5, + 8.5 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"radioactiveprocessor", - "origin":[0,0,0], - "color":0, - "children":[ + "name": "radioactiveprocessor", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + { + "name": "frame", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ] + }, + { + "name": "fluidinput", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "name": "wires", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + }, { - "name":"frame", - "origin":[0,0,0], - "color":0, - "children":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29] - },{ - "name":"fluidinput", - "origin":[0,0,0], - "color":0, - "children":[30,31,32,33,34,35,36,37,38] - },{ - "name":"wires", - "origin":[0,0,0], - "color":0, - "children":[39,40,41,42,43,44,45,46] - },{ - "name":"power", - "origin":[0,0,0], - "color":0,"children":[47] + "name": "power", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 47 + ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoritem.json b/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoritem.json deleted file mode 100644 index 255ef6e9..00000000 --- a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoritem.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "parent":"block/cube_all", - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/radioactiveprocessor", - "particle":"nuclearscience:model/radioactiveprocessor" - }, - "elements":[ - {"from":[0,0,0],"to":[16,5,16],"faces":{"north":{"uv":[2,2,4,2.625],"texture":"#0"},"east":{"uv":[0,2,2,2.625],"texture":"#0"},"south":{"uv":[6,2,8,2.625],"texture":"#0"},"west":{"uv":[4,2,6,2.625],"texture":"#0"},"up":{"uv":[4,2,2,0],"texture":"#0"},"down":{"uv":[6,0,4,2],"texture":"#0"}}},{"from":[1,5,1],"to":[15,14,15],"faces":{"north":{"uv":[1.75,4.5,3.5,5.625],"texture":"#0"},"east":{"uv":[0,4.5,1.75,5.625],"texture":"#0"},"south":{"uv":[5.25,4.5,7,5.625],"texture":"#0"},"west":{"uv":[3.5,4.5,5.25,5.625],"texture":"#0"},"up":{"uv":[3.5,4.5,1.75,2.75],"texture":"#0"},"down":{"uv":[5.25,2.75,3.5,4.5],"texture":"#0"}}},{"from":[0,5,0],"to":[2,16,1],"faces":{"north":{"uv":[8.125,8.25,8.375,9.625],"texture":"#0"},"east":{"uv":[8,8.25,8.125,9.625],"texture":"#0"},"south":{"uv":[8.5,8.25,8.75,9.625],"texture":"#0"},"west":{"uv":[8.375,8.25,8.5,9.625],"texture":"#0"},"up":{"uv":[8.375,8.25,8.125,8.125],"texture":"#0"},"down":{"uv":[8.625,8.125,8.375,8.25],"texture":"#0"}}}, - {"from":[14,5,0],"to":[16,16,1],"faces":{"north":{"uv":[7.25,8.25,7.5,9.625],"texture":"#0"},"east":{"uv":[7.125,8.25,7.25,9.625],"texture":"#0"},"south":{"uv":[7.625,8.25,7.875,9.625],"texture":"#0"},"west":{"uv":[7.5,8.25,7.625,9.625],"texture":"#0"},"up":{"uv":[7.5,8.25,7.25,8.125],"texture":"#0"},"down":{"uv":[7.75,8.125,7.5,8.25],"texture":"#0"}}},{"from":[14,5,15],"to":[16,16,16],"faces":{"north":{"uv":[1,8.25,1.25,9.625],"texture":"#0"},"east":{"uv":[0.875,8.25,1,9.625],"texture":"#0"},"south":{"uv":[1.375,8.25,1.625,9.625],"texture":"#0"},"west":{"uv":[1.25,8.25,1.375,9.625],"texture":"#0"},"up":{"uv":[1.25,8.25,1,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.25,8.25],"texture":"#0"}}},{"from":[0,5,15],"to":[2,16,16],"faces":{"north":{"uv":[0.125,8.25,0.375,9.625],"texture":"#0"},"east":{"uv":[0,8.25,0.125,9.625],"texture":"#0"},"south":{"uv":[0.5,8.25,0.75,9.625],"texture":"#0"},"west":{"uv":[0.375,8.25,0.5,9.625],"texture":"#0"},"up":{"uv":[0.375,8.25,0.125,8.125],"texture":"#0"},"down":{"uv":[0.625,8.125,0.375,8.25],"texture":"#0"}}}, - {"from":[0,5,14],"to":[1,16,15],"faces":{"north":{"uv":[9,8.25,9.125,9.625],"texture":"#0"},"east":{"uv":[8.875,8.25,9,9.625],"texture":"#0"},"south":{"uv":[9.25,8.25,9.375,9.625],"texture":"#0"},"west":{"uv":[9.125,8.25,9.25,9.625],"texture":"#0"},"up":{"uv":[9.125,8.25,9,8.125],"texture":"#0"},"down":{"uv":[9.25,8.125,9.125,8.25],"texture":"#0"}}},{"from":[0,5,1],"to":[1,16,2],"faces":{"north":{"uv":[8.625,1.875,8.75,3.25],"texture":"#0"},"east":{"uv":[8.5,1.875,8.625,3.25],"texture":"#0"},"south":{"uv":[8.875,1.875,9,3.25],"texture":"#0"},"west":{"uv":[8.75,1.875,8.875,3.25],"texture":"#0"},"up":{"uv":[8.75,1.875,8.625,1.75],"texture":"#0"},"down":{"uv":[8.875,1.75,8.75,1.875],"texture":"#0"}}},{"from":[15,5,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,8.25,2,9.625],"texture":"#0"},"east":{"uv":[1.75,8.25,1.875,9.625],"texture":"#0"},"south":{"uv":[2.125,8.25,2.25,9.625],"texture":"#0"},"west":{"uv":[2,8.25,2.125,9.625],"texture":"#0"},"up":{"uv":[2,8.25,1.875,8.125],"texture":"#0"},"down":{"uv":[2.125,8.125,2,8.25],"texture":"#0"}}}, - {"from":[15,5,14],"to":[16,16,15],"faces":{"north":{"uv":[1.5,0.125,1.625,1.5],"texture":"#0"},"east":{"uv":[1.375,0.125,1.5,1.5],"texture":"#0"},"south":{"uv":[1.75,0.125,1.875,1.5],"texture":"#0"},"west":{"uv":[1.625,0.125,1.75,1.5],"texture":"#0"},"up":{"uv":[1.625,0.125,1.5,0],"texture":"#0"},"down":{"uv":[1.75,0,1.625,0.125],"texture":"#0"}}},{"from":[2,6,0],"to":[6,7,1],"faces":{"north":{"uv":[5.375,6.25,5.875,6.375],"texture":"#0"},"east":{"uv":[5.25,6.25,5.375,6.375],"texture":"#0"},"south":{"uv":[6,6.25,6.5,6.375],"texture":"#0"},"west":{"uv":[5.875,6.25,6,6.375],"texture":"#0"},"up":{"uv":[5.875,6.25,5.375,6.125],"texture":"#0"},"down":{"uv":[6.375,6.125,5.875,6.25],"texture":"#0"}}},{"from":[2,10,0],"to":[6,11,1],"faces":{"north":{"uv":[6.25,1.25,6.75,1.375],"texture":"#0"},"east":{"uv":[6.125,1.25,6.25,1.375],"texture":"#0"},"south":{"uv":[6.875,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[6.75,1.25,6.875,1.375],"texture":"#0"},"up":{"uv":[6.75,1.25,6.25,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,6.75,1.25],"texture":"#0"}}}, - {"from":[10,6,0],"to":[14,7,1],"faces":{"north":{"uv":[6.25,0.875,6.75,1],"texture":"#0"},"east":{"uv":[6.125,0.875,6.25,1],"texture":"#0"},"south":{"uv":[6.875,0.875,7.375,1],"texture":"#0"},"west":{"uv":[6.75,0.875,6.875,1],"texture":"#0"},"up":{"uv":[6.75,0.875,6.25,0.75],"texture":"#0"},"down":{"uv":[7.25,0.75,6.75,0.875],"texture":"#0"}}},{"from":[10,10,0],"to":[14,11,1],"faces":{"north":{"uv":[6.25,0.5,6.75,0.625],"texture":"#0"},"east":{"uv":[6.125,0.5,6.25,0.625],"texture":"#0"},"south":{"uv":[6.875,0.5,7.375,0.625],"texture":"#0"},"west":{"uv":[6.75,0.5,6.875,0.625],"texture":"#0"},"up":{"uv":[6.75,0.5,6.25,0.375],"texture":"#0"},"down":{"uv":[7.25,0.375,6.75,0.5],"texture":"#0"}}},{"from":[6,5,0],"to":[10,12,1],"faces":{"north":{"uv":[0.125,2.875,0.625,3.75],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3.75],"texture":"#0"},"south":{"uv":[0.75,2.875,1.25,3.75],"texture":"#0"},"west":{"uv":[0.625,2.875,0.75,3.75],"texture":"#0"},"up":{"uv":[0.625,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[1.125,2.75,0.625,2.875],"texture":"#0"}}}, - {"from":[6,5,15],"to":[10,12,16],"faces":{"north":{"uv":[0.125,0.125,0.625,1],"texture":"#0"},"east":{"uv":[0,0.125,0.125,1],"texture":"#0"},"south":{"uv":[0.75,0.125,1.25,1],"texture":"#0"},"west":{"uv":[0.625,0.125,0.75,1],"texture":"#0"},"up":{"uv":[0.625,0.125,0.125,0],"texture":"#0"},"down":{"uv":[1.125,0,0.625,0.125],"texture":"#0"}}},{"from":[2,6,15],"to":[6,7,16],"faces":{"north":{"uv":[6.25,0.125,6.75,0.25],"texture":"#0"},"east":{"uv":[6.125,0.125,6.25,0.25],"texture":"#0"},"south":{"uv":[6.875,0.125,7.375,0.25],"texture":"#0"},"west":{"uv":[6.75,0.125,6.875,0.25],"texture":"#0"},"up":{"uv":[6.75,0.125,6.25,0],"texture":"#0"},"down":{"uv":[7.25,0,6.75,0.125],"texture":"#0"}}},{"from":[2,10,15],"to":[6,11,16],"faces":{"north":{"uv":[0.125,6.25,0.625,6.375],"texture":"#0"},"east":{"uv":[0,6.25,0.125,6.375],"texture":"#0"},"south":{"uv":[0.75,6.25,1.25,6.375],"texture":"#0"},"west":{"uv":[0.625,6.25,0.75,6.375],"texture":"#0"},"up":{"uv":[0.625,6.25,0.125,6.125],"texture":"#0"},"down":{"uv":[1.125,6.125,0.625,6.25],"texture":"#0"}}}, - {"from":[10,10,15],"to":[14,11,16],"faces":{"north":{"uv":[0.125,5.875,0.625,6],"texture":"#0"},"east":{"uv":[0,5.875,0.125,6],"texture":"#0"},"south":{"uv":[0.75,5.875,1.25,6],"texture":"#0"},"west":{"uv":[0.625,5.875,0.75,6],"texture":"#0"},"up":{"uv":[0.625,5.875,0.125,5.75],"texture":"#0"},"down":{"uv":[1.125,5.75,0.625,5.875],"texture":"#0"}}},{"from":[10,6,15],"to":[14,7,16],"faces":{"north":{"uv":[5.5,4.25,6,4.375],"texture":"#0"},"east":{"uv":[5.375,4.25,5.5,4.375],"texture":"#0"},"south":{"uv":[6.125,4.25,6.625,4.375],"texture":"#0"},"west":{"uv":[6,4.25,6.125,4.375],"texture":"#0"},"up":{"uv":[6,4.25,5.5,4.125],"texture":"#0"},"down":{"uv":[6.5,4.125,6,4.25],"texture":"#0"}}},{"from":[0,10,2],"to":[1,11,4],"faces":{"north":{"uv":[2.125,6.5,2.25,6.625],"texture":"#0"},"east":{"uv":[1.875,6.5,2.125,6.625],"texture":"#0"},"south":{"uv":[2.5,6.5,2.625,6.625],"texture":"#0"},"west":{"uv":[2.25,6.5,2.5,6.625],"texture":"#0"},"up":{"uv":[2.25,6.5,2.125,6.25],"texture":"#0"},"down":{"uv":[2.375,6.25,2.25,6.5],"texture":"#0"}}}, - {"from":[0,10,12],"to":[1,11,14],"faces":{"north":{"uv":[2.125,6,2.25,6.125],"texture":"#0"},"east":{"uv":[1.875,6,2.125,6.125],"texture":"#0"},"south":{"uv":[2.5,6,2.625,6.125],"texture":"#0"},"west":{"uv":[2.25,6,2.5,6.125],"texture":"#0"},"up":{"uv":[2.25,6,2.125,5.75],"texture":"#0"},"down":{"uv":[2.375,5.75,2.25,6],"texture":"#0"}}},{"from":[0,6,12],"to":[1,7,14],"faces":{"north":{"uv":[5.625,3.5,5.75,3.625],"texture":"#0"},"east":{"uv":[5.375,3.5,5.625,3.625],"texture":"#0"},"south":{"uv":[6,3.5,6.125,3.625],"texture":"#0"},"west":{"uv":[5.75,3.5,6,3.625],"texture":"#0"},"up":{"uv":[5.75,3.5,5.625,3.25],"texture":"#0"},"down":{"uv":[5.875,3.25,5.75,3.5],"texture":"#0"}}},{"from":[0,6,2],"to":[1,7,4],"faces":{"north":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"east":{"uv":[5.375,3,5.625,3.125],"texture":"#0"},"south":{"uv":[6,3,6.125,3.125],"texture":"#0"},"west":{"uv":[5.75,3,6,3.125],"texture":"#0"},"up":{"uv":[5.75,3,5.625,2.75],"texture":"#0"},"down":{"uv":[5.875,2.75,5.75,3],"texture":"#0"}}}, - {"from":[15,6,2],"to":[16,7,14],"faces":{"north":{"uv":[8.625,7.875,8.75,8],"texture":"#0"},"east":{"uv":[7.125,7.875,8.625,8],"texture":"#0"},"south":{"uv":[10.25,7.875,10.375,8],"texture":"#0"},"west":{"uv":[8.75,7.875,10.25,8],"texture":"#0"},"up":{"uv":[8.75,7.875,8.625,6.375],"texture":"#0"},"down":{"uv":[8.875,6.375,8.75,7.875],"texture":"#0"}}},{"from":[15,10,2],"to":[16,11,14],"faces":{"north":{"uv":[6.75,7.625,6.875,7.75],"texture":"#0"},"east":{"uv":[5.25,7.625,6.75,7.75],"texture":"#0"},"south":{"uv":[8.375,7.625,8.5,7.75],"texture":"#0"},"west":{"uv":[6.875,7.625,8.375,7.75],"texture":"#0"},"up":{"uv":[6.875,7.625,6.75,6.125],"texture":"#0"},"down":{"uv":[7,6.125,6.875,7.625],"texture":"#0"}}},{"from":[2,14,0],"to":[14,16,1],"faces":{"north":{"uv":[0.125,7.75,1.625,8],"texture":"#0"},"east":{"uv":[0,7.75,0.125,8],"texture":"#0"},"south":{"uv":[1.75,7.75,3.25,8],"texture":"#0"},"west":{"uv":[1.625,7.75,1.75,8],"texture":"#0"},"up":{"uv":[1.625,7.75,0.125,7.625],"texture":"#0"},"down":{"uv":[3.125,7.625,1.625,7.75],"texture":"#0"}}}, - {"from":[2,14,15],"to":[14,16,16],"faces":{"north":{"uv":[7.625,5,9.125,5.25],"texture":"#0"},"east":{"uv":[7.5,5,7.625,5.25],"texture":"#0"},"south":{"uv":[9.25,5,10.75,5.25],"texture":"#0"},"west":{"uv":[9.125,5,9.25,5.25],"texture":"#0"},"up":{"uv":[9.125,5,7.625,4.875],"texture":"#0"},"down":{"uv":[10.625,4.875,9.125,5],"texture":"#0"}}},{"from":[0,14,2],"to":[1,16,14],"faces":{"north":{"uv":[1.5,7.25,1.625,7.5],"texture":"#0"},"east":{"uv":[0,7.25,1.5,7.5],"texture":"#0"},"south":{"uv":[3.125,7.25,3.25,7.5],"texture":"#0"},"west":{"uv":[1.625,7.25,3.125,7.5],"texture":"#0"},"up":{"uv":[1.625,7.25,1.5,5.75],"texture":"#0"},"down":{"uv":[1.75,5.75,1.625,7.25],"texture":"#0"}}},{"from":[15,14,2],"to":[16,16,14],"faces":{"north":{"uv":[7.125,5.75,7.25,6],"texture":"#0"},"east":{"uv":[5.625,5.75,7.125,6],"texture":"#0"},"south":{"uv":[8.75,5.75,8.875,6],"texture":"#0"},"west":{"uv":[7.25,5.75,8.75,6],"texture":"#0"},"up":{"uv":[7.25,5.75,7.125,4.25],"texture":"#0"},"down":{"uv":[7.375,4.25,7.25,5.75],"texture":"#0"}}}, - {"from":[4,14,4],"to":[12,16,12],"faces":{"north":{"uv":[6.375,3.75,7.375,4],"texture":"#0"},"east":{"uv":[5.375,3.75,6.375,4],"texture":"#0"},"south":{"uv":[8.375,3.75,9.375,4],"texture":"#0"},"west":{"uv":[7.375,3.75,8.375,4],"texture":"#0"},"up":{"uv":[7.375,3.75,6.375,2.75],"texture":"#0"},"down":{"uv":[8.375,2.75,7.375,3.75],"texture":"#0"}}},{"from":[1,15,1],"to":[2,16,2],"faces":{"north":{"uv":[5.375,6.625,5.5,6.75],"texture":"#0"},"east":{"uv":[5.25,6.625,5.375,6.75],"texture":"#0"},"south":{"uv":[5.625,6.625,5.75,6.75],"texture":"#0"},"west":{"uv":[5.5,6.625,5.625,6.75],"texture":"#0"},"up":{"uv":[5.5,6.625,5.375,6.5],"texture":"#0"},"down":{"uv":[5.625,6.5,5.5,6.625],"texture":"#0"}}},{"from":[1,15,14],"to":[2,16,15],"faces":{"north":{"uv":[4.375,6.625,4.5,6.75],"texture":"#0"},"east":{"uv":[4.25,6.625,4.375,6.75],"texture":"#0"},"south":{"uv":[4.625,6.625,4.75,6.75],"texture":"#0"},"west":{"uv":[4.5,6.625,4.625,6.75],"texture":"#0"},"up":{"uv":[4.5,6.625,4.375,6.5],"texture":"#0"},"down":{"uv":[4.625,6.5,4.5,6.625],"texture":"#0"}}}, - {"from":[14,15,14],"to":[15,16,15],"faces":{"north":{"uv":[0.75,6.625,0.875,6.75],"texture":"#0"},"east":{"uv":[0.625,6.625,0.75,6.75],"texture":"#0"},"south":{"uv":[1,6.625,1.125,6.75],"texture":"#0"},"west":{"uv":[0.875,6.625,1,6.75],"texture":"#0"},"up":{"uv":[0.875,6.625,0.75,6.5],"texture":"#0"},"down":{"uv":[1,6.5,0.875,6.625],"texture":"#0"}}},{"from":[14,15,1],"to":[15,16,2],"faces":{"north":{"uv":[0.125,6.625,0.25,6.75],"texture":"#0"},"east":{"uv":[0,6.625,0.125,6.75],"texture":"#0"},"south":{"uv":[0.375,6.625,0.5,6.75],"texture":"#0"},"west":{"uv":[0.25,6.625,0.375,6.75],"texture":"#0"},"up":{"uv":[0.25,6.625,0.125,6.5],"texture":"#0"},"down":{"uv":[0.375,6.5,0.25,6.625],"texture":"#0"}}},{"from":[11.5,16,7],"to":[15.5,17,9],"faces":{"north":{"uv":[4,7.875,4.5,8],"texture":"#0"},"east":{"uv":[3.75,7.875,4,8],"texture":"#0"},"south":{"uv":[4.75,7.875,5.25,8],"texture":"#0"},"west":{"uv":[4.5,7.875,4.75,8],"texture":"#0"},"up":{"uv":[4.5,7.875,4,7.625],"texture":"#0"},"down":{"uv":[5,7.625,4.5,7.875],"texture":"#0"}}}, - {"from":[0.5,16,7],"to":[4.5,17,9],"faces":{"north":{"uv":[0.25,4.125,0.75,4.25],"texture":"#0"},"east":{"uv":[0,4.125,0.25,4.25],"texture":"#0"},"south":{"uv":[1,4.125,1.5,4.25],"texture":"#0"},"west":{"uv":[0.75,4.125,1,4.25],"texture":"#0"},"up":{"uv":[0.75,4.125,0.25,3.875],"texture":"#0"},"down":{"uv":[1.25,3.875,0.75,4.125],"texture":"#0"}}},{"from":[7,16,0.5],"to":[9,17,4.5],"faces":{"north":{"uv":[3.75,6.25,4,6.375],"texture":"#0"},"east":{"uv":[3.25,6.25,3.75,6.375],"texture":"#0"},"south":{"uv":[4.5,6.25,4.75,6.375],"texture":"#0"},"west":{"uv":[4,6.25,4.5,6.375],"texture":"#0"},"up":{"uv":[4,6.25,3.75,5.75],"texture":"#0"},"down":{"uv":[4.25,5.75,4,6.25],"texture":"#0"}}},{"from":[7,16,11.5],"to":[9,17,15.5],"faces":{"north":{"uv":[0.5,1.625,0.75,1.75],"texture":"#0"},"east":{"uv":[0,1.625,0.5,1.75],"texture":"#0"},"south":{"uv":[1.25,1.625,1.5,1.75],"texture":"#0"},"west":{"uv":[0.75,1.625,1.25,1.75],"texture":"#0"},"up":{"uv":[0.75,1.625,0.5,1.125],"texture":"#0"},"down":{"uv":[1,1.125,0.75,1.625],"texture":"#0"}}}, - {"from":[3,14,3],"to":[13,15,4],"faces":{"north":{"uv":[8.125,0.125,9.375,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[9.5,0.125,10.75,0.25],"texture":"#0"},"west":{"uv":[9.375,0.125,9.5,0.25],"texture":"#0"},"up":{"uv":[9.375,0.125,8.125,0],"texture":"#0"},"down":{"uv":[10.625,0,9.375,0.125],"texture":"#0"}}},{"from":[3,14,4],"to":[4,15,12],"faces":{"north":{"uv":[5.75,8.875,5.875,9],"texture":"#0"},"east":{"uv":[4.75,8.875,5.75,9],"texture":"#0"},"south":{"uv":[6.875,8.875,7,9],"texture":"#0"},"west":{"uv":[5.875,8.875,6.875,9],"texture":"#0"},"up":{"uv":[5.875,8.875,5.75,7.875],"texture":"#0"},"down":{"uv":[6,7.875,5.875,8.875],"texture":"#0"}}},{"from":[3,14,12],"to":[13,15,13],"faces":{"north":{"uv":[7.625,5.5,8.875,5.625],"texture":"#0"},"east":{"uv":[7.5,5.5,7.625,5.625],"texture":"#0"},"south":{"uv":[9,5.5,10.25,5.625],"texture":"#0"},"west":{"uv":[8.875,5.5,9,5.625],"texture":"#0"},"up":{"uv":[8.875,5.5,7.625,5.375],"texture":"#0"},"down":{"uv":[10.125,5.375,8.875,5.5],"texture":"#0"}}}, - {"from":[12,14,4],"to":[13,15,12],"faces":{"north":{"uv":[2.875,6.75,3,6.875],"texture":"#0"},"east":{"uv":[1.875,6.75,2.875,6.875],"texture":"#0"},"south":{"uv":[4,6.75,4.125,6.875],"texture":"#0"},"west":{"uv":[3,6.75,4,6.875],"texture":"#0"},"up":{"uv":[3,6.75,2.875,5.75],"texture":"#0"},"down":{"uv":[3.125,5.75,3,6.75],"texture":"#0"}}},{"from":[1,14,1],"to":[15,15,2],"faces":{"north":{"uv":[7.625,4.625,9.375,4.75],"texture":"#0"},"east":{"uv":[7.5,4.625,7.625,4.75],"texture":"#0"},"south":{"uv":[9.5,4.625,11.25,4.75],"texture":"#0"},"west":{"uv":[9.375,4.625,9.5,4.75],"texture":"#0"},"up":{"uv":[9.375,4.625,7.625,4.5],"texture":"#0"},"down":{"uv":[11.125,4.5,9.375,4.625],"texture":"#0"}}},{"from":[1,14,2],"to":[2,15,14],"faces":{"north":{"uv":[7.625,1.5,7.75,1.625],"texture":"#0"},"east":{"uv":[6.125,1.5,7.625,1.625],"texture":"#0"},"south":{"uv":[9.25,1.5,9.375,1.625],"texture":"#0"},"west":{"uv":[7.75,1.5,9.25,1.625],"texture":"#0"},"up":{"uv":[7.75,1.5,7.625,0],"texture":"#0"},"down":{"uv":[7.875,0,7.75,1.5],"texture":"#0"}}}, - {"from":[1,14,14],"to":[15,15,15],"faces":{"north":{"uv":[7.625,4.25,9.375,4.375],"texture":"#0"},"east":{"uv":[7.5,4.25,7.625,4.375],"texture":"#0"},"south":{"uv":[9.5,4.25,11.25,4.375],"texture":"#0"},"west":{"uv":[9.375,4.25,9.5,4.375],"texture":"#0"},"up":{"uv":[9.375,4.25,7.625,4.125],"texture":"#0"},"down":{"uv":[11.125,4.125,9.375,4.25],"texture":"#0"}}},{"from":[14,14,2],"to":[15,15,14],"faces":{"north":{"uv":[4.875,7.25,5,7.375],"texture":"#0"},"east":{"uv":[3.375,7.25,4.875,7.375],"texture":"#0"},"south":{"uv":[6.5,7.25,6.625,7.375],"texture":"#0"},"west":{"uv":[5,7.25,6.5,7.375],"texture":"#0"},"up":{"uv":[5,7.25,4.875,5.75],"texture":"#0"},"down":{"uv":[5.125,5.75,5,7.25],"texture":"#0"}}},{"from":[0,5,4],"to":[1,12,12],"faces":{"north":{"uv":[3.375,8.5,3.5,9.375],"texture":"#0"},"east":{"uv":[2.375,8.5,3.375,9.375],"texture":"#0"},"south":{"uv":[4.5,8.5,4.625,9.375],"texture":"#0"},"west":{"uv":[3.5,8.5,4.5,9.375],"texture":"#0"},"up":{"uv":[3.5,8.5,3.375,7.5],"texture":"#0"},"down":{"uv":[3.625,7.5,3.5,8.5],"texture":"#0"}}} - ], - "groups":[ - { - "name":"radioactiveprocessor", - "origin":[0,0,0], - "color":0, - "children":[ - { - "name":"frame", - "origin":[0,0,0], - "color":0, - "children":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29] - },{ - "name":"fluidinput", - "origin":[0,0,0], - "color":0, - "children":[30,31,32,33,34,35,36,37,38] - },{ - "name":"wires", - "origin":[0,0,0], - "color":0, - "children":[39,40,41,42,43,44,45,46] - },{ - "name":"power", - "origin":[0,0,0], - "color":0,"children":[47] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoron.json b/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoron.json index eb253568..15a2aa14 100644 --- a/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoron.json +++ b/src/main/resources/assets/nuclearscience/models/block/radioactiveprocessoron.json @@ -1,55 +1,3383 @@ { - "credit":"skip999", - "texture_size":[128,128], - "textures":{ - "0":"nuclearscience:model/radioactiveprocessoron", - "particle":"nuclearscience:model/radioactiveprocessoron" + "credit": "skip999", + "parent": "block/cube_all", + "texture_size": [ + 128, + 128 + ], + "textures": { + "0": "nuclearscience:block/model/radioactiveprocessoron", + "particle": "electrodynamics:block/steelcasing" }, - "elements":[ - {"from":[0,0,0],"to":[16,5,16],"faces":{"north":{"uv":[2,2,4,2.625],"texture":"#0"},"east":{"uv":[0,2,2,2.625],"texture":"#0"},"south":{"uv":[6,2,8,2.625],"texture":"#0"},"west":{"uv":[4,2,6,2.625],"texture":"#0"},"up":{"uv":[4,2,2,0],"texture":"#0"},"down":{"uv":[6,0,4,2],"texture":"#0"}}},{"from":[1,5,1],"to":[15,14,15],"faces":{"north":{"uv":[1.75,4.5,3.5,5.625],"texture":"#0"},"east":{"uv":[0,4.5,1.75,5.625],"texture":"#0"},"south":{"uv":[5.25,4.5,7,5.625],"texture":"#0"},"west":{"uv":[3.5,4.5,5.25,5.625],"texture":"#0"},"up":{"uv":[3.5,4.5,1.75,2.75],"texture":"#0"},"down":{"uv":[5.25,2.75,3.5,4.5],"texture":"#0"}}},{"from":[0,5,0],"to":[2,16,1],"faces":{"north":{"uv":[8.125,8.25,8.375,9.625],"texture":"#0"},"east":{"uv":[8,8.25,8.125,9.625],"texture":"#0"},"south":{"uv":[8.5,8.25,8.75,9.625],"texture":"#0"},"west":{"uv":[8.375,8.25,8.5,9.625],"texture":"#0"},"up":{"uv":[8.375,8.25,8.125,8.125],"texture":"#0"},"down":{"uv":[8.625,8.125,8.375,8.25],"texture":"#0"}}}, - {"from":[14,5,0],"to":[16,16,1],"faces":{"north":{"uv":[7.25,8.25,7.5,9.625],"texture":"#0"},"east":{"uv":[7.125,8.25,7.25,9.625],"texture":"#0"},"south":{"uv":[7.625,8.25,7.875,9.625],"texture":"#0"},"west":{"uv":[7.5,8.25,7.625,9.625],"texture":"#0"},"up":{"uv":[7.5,8.25,7.25,8.125],"texture":"#0"},"down":{"uv":[7.75,8.125,7.5,8.25],"texture":"#0"}}},{"from":[14,5,15],"to":[16,16,16],"faces":{"north":{"uv":[1,8.25,1.25,9.625],"texture":"#0"},"east":{"uv":[0.875,8.25,1,9.625],"texture":"#0"},"south":{"uv":[1.375,8.25,1.625,9.625],"texture":"#0"},"west":{"uv":[1.25,8.25,1.375,9.625],"texture":"#0"},"up":{"uv":[1.25,8.25,1,8.125],"texture":"#0"},"down":{"uv":[1.5,8.125,1.25,8.25],"texture":"#0"}}},{"from":[0,5,15],"to":[2,16,16],"faces":{"north":{"uv":[0.125,8.25,0.375,9.625],"texture":"#0"},"east":{"uv":[0,8.25,0.125,9.625],"texture":"#0"},"south":{"uv":[0.5,8.25,0.75,9.625],"texture":"#0"},"west":{"uv":[0.375,8.25,0.5,9.625],"texture":"#0"},"up":{"uv":[0.375,8.25,0.125,8.125],"texture":"#0"},"down":{"uv":[0.625,8.125,0.375,8.25],"texture":"#0"}}}, - {"from":[0,5,14],"to":[1,16,15],"faces":{"north":{"uv":[9,8.25,9.125,9.625],"texture":"#0"},"east":{"uv":[8.875,8.25,9,9.625],"texture":"#0"},"south":{"uv":[9.25,8.25,9.375,9.625],"texture":"#0"},"west":{"uv":[9.125,8.25,9.25,9.625],"texture":"#0"},"up":{"uv":[9.125,8.25,9,8.125],"texture":"#0"},"down":{"uv":[9.25,8.125,9.125,8.25],"texture":"#0"}}},{"from":[0,5,1],"to":[1,16,2],"faces":{"north":{"uv":[8.625,1.875,8.75,3.25],"texture":"#0"},"east":{"uv":[8.5,1.875,8.625,3.25],"texture":"#0"},"south":{"uv":[8.875,1.875,9,3.25],"texture":"#0"},"west":{"uv":[8.75,1.875,8.875,3.25],"texture":"#0"},"up":{"uv":[8.75,1.875,8.625,1.75],"texture":"#0"},"down":{"uv":[8.875,1.75,8.75,1.875],"texture":"#0"}}},{"from":[15,5,1],"to":[16,16,2],"faces":{"north":{"uv":[1.875,8.25,2,9.625],"texture":"#0"},"east":{"uv":[1.75,8.25,1.875,9.625],"texture":"#0"},"south":{"uv":[2.125,8.25,2.25,9.625],"texture":"#0"},"west":{"uv":[2,8.25,2.125,9.625],"texture":"#0"},"up":{"uv":[2,8.25,1.875,8.125],"texture":"#0"},"down":{"uv":[2.125,8.125,2,8.25],"texture":"#0"}}}, - {"from":[15,5,14],"to":[16,16,15],"faces":{"north":{"uv":[1.5,0.125,1.625,1.5],"texture":"#0"},"east":{"uv":[1.375,0.125,1.5,1.5],"texture":"#0"},"south":{"uv":[1.75,0.125,1.875,1.5],"texture":"#0"},"west":{"uv":[1.625,0.125,1.75,1.5],"texture":"#0"},"up":{"uv":[1.625,0.125,1.5,0],"texture":"#0"},"down":{"uv":[1.75,0,1.625,0.125],"texture":"#0"}}},{"from":[2,6,0],"to":[6,7,1],"faces":{"north":{"uv":[5.375,6.25,5.875,6.375],"texture":"#0"},"east":{"uv":[5.25,6.25,5.375,6.375],"texture":"#0"},"south":{"uv":[6,6.25,6.5,6.375],"texture":"#0"},"west":{"uv":[5.875,6.25,6,6.375],"texture":"#0"},"up":{"uv":[5.875,6.25,5.375,6.125],"texture":"#0"},"down":{"uv":[6.375,6.125,5.875,6.25],"texture":"#0"}}},{"from":[2,10,0],"to":[6,11,1],"faces":{"north":{"uv":[6.25,1.25,6.75,1.375],"texture":"#0"},"east":{"uv":[6.125,1.25,6.25,1.375],"texture":"#0"},"south":{"uv":[6.875,1.25,7.375,1.375],"texture":"#0"},"west":{"uv":[6.75,1.25,6.875,1.375],"texture":"#0"},"up":{"uv":[6.75,1.25,6.25,1.125],"texture":"#0"},"down":{"uv":[7.25,1.125,6.75,1.25],"texture":"#0"}}}, - {"from":[10,6,0],"to":[14,7,1],"faces":{"north":{"uv":[6.25,0.875,6.75,1],"texture":"#0"},"east":{"uv":[6.125,0.875,6.25,1],"texture":"#0"},"south":{"uv":[6.875,0.875,7.375,1],"texture":"#0"},"west":{"uv":[6.75,0.875,6.875,1],"texture":"#0"},"up":{"uv":[6.75,0.875,6.25,0.75],"texture":"#0"},"down":{"uv":[7.25,0.75,6.75,0.875],"texture":"#0"}}},{"from":[10,10,0],"to":[14,11,1],"faces":{"north":{"uv":[6.25,0.5,6.75,0.625],"texture":"#0"},"east":{"uv":[6.125,0.5,6.25,0.625],"texture":"#0"},"south":{"uv":[6.875,0.5,7.375,0.625],"texture":"#0"},"west":{"uv":[6.75,0.5,6.875,0.625],"texture":"#0"},"up":{"uv":[6.75,0.5,6.25,0.375],"texture":"#0"},"down":{"uv":[7.25,0.375,6.75,0.5],"texture":"#0"}}},{"from":[6,5,0],"to":[10,12,1],"faces":{"north":{"uv":[0.125,2.875,0.625,3.75],"texture":"#0"},"east":{"uv":[0,2.875,0.125,3.75],"texture":"#0"},"south":{"uv":[0.75,2.875,1.25,3.75],"texture":"#0"},"west":{"uv":[0.625,2.875,0.75,3.75],"texture":"#0"},"up":{"uv":[0.625,2.875,0.125,2.75],"texture":"#0"},"down":{"uv":[1.125,2.75,0.625,2.875],"texture":"#0"}}}, - {"from":[6,5,15],"to":[10,12,16],"faces":{"north":{"uv":[0.125,0.125,0.625,1],"texture":"#0"},"east":{"uv":[0,0.125,0.125,1],"texture":"#0"},"south":{"uv":[0.75,0.125,1.25,1],"texture":"#0"},"west":{"uv":[0.625,0.125,0.75,1],"texture":"#0"},"up":{"uv":[0.625,0.125,0.125,0],"texture":"#0"},"down":{"uv":[1.125,0,0.625,0.125],"texture":"#0"}}},{"from":[2,6,15],"to":[6,7,16],"faces":{"north":{"uv":[6.25,0.125,6.75,0.25],"texture":"#0"},"east":{"uv":[6.125,0.125,6.25,0.25],"texture":"#0"},"south":{"uv":[6.875,0.125,7.375,0.25],"texture":"#0"},"west":{"uv":[6.75,0.125,6.875,0.25],"texture":"#0"},"up":{"uv":[6.75,0.125,6.25,0],"texture":"#0"},"down":{"uv":[7.25,0,6.75,0.125],"texture":"#0"}}},{"from":[2,10,15],"to":[6,11,16],"faces":{"north":{"uv":[0.125,6.25,0.625,6.375],"texture":"#0"},"east":{"uv":[0,6.25,0.125,6.375],"texture":"#0"},"south":{"uv":[0.75,6.25,1.25,6.375],"texture":"#0"},"west":{"uv":[0.625,6.25,0.75,6.375],"texture":"#0"},"up":{"uv":[0.625,6.25,0.125,6.125],"texture":"#0"},"down":{"uv":[1.125,6.125,0.625,6.25],"texture":"#0"}}}, - {"from":[10,10,15],"to":[14,11,16],"faces":{"north":{"uv":[0.125,5.875,0.625,6],"texture":"#0"},"east":{"uv":[0,5.875,0.125,6],"texture":"#0"},"south":{"uv":[0.75,5.875,1.25,6],"texture":"#0"},"west":{"uv":[0.625,5.875,0.75,6],"texture":"#0"},"up":{"uv":[0.625,5.875,0.125,5.75],"texture":"#0"},"down":{"uv":[1.125,5.75,0.625,5.875],"texture":"#0"}}},{"from":[10,6,15],"to":[14,7,16],"faces":{"north":{"uv":[5.5,4.25,6,4.375],"texture":"#0"},"east":{"uv":[5.375,4.25,5.5,4.375],"texture":"#0"},"south":{"uv":[6.125,4.25,6.625,4.375],"texture":"#0"},"west":{"uv":[6,4.25,6.125,4.375],"texture":"#0"},"up":{"uv":[6,4.25,5.5,4.125],"texture":"#0"},"down":{"uv":[6.5,4.125,6,4.25],"texture":"#0"}}},{"from":[0,10,2],"to":[1,11,4],"faces":{"north":{"uv":[2.125,6.5,2.25,6.625],"texture":"#0"},"east":{"uv":[1.875,6.5,2.125,6.625],"texture":"#0"},"south":{"uv":[2.5,6.5,2.625,6.625],"texture":"#0"},"west":{"uv":[2.25,6.5,2.5,6.625],"texture":"#0"},"up":{"uv":[2.25,6.5,2.125,6.25],"texture":"#0"},"down":{"uv":[2.375,6.25,2.25,6.5],"texture":"#0"}}}, - {"from":[0,10,12],"to":[1,11,14],"faces":{"north":{"uv":[2.125,6,2.25,6.125],"texture":"#0"},"east":{"uv":[1.875,6,2.125,6.125],"texture":"#0"},"south":{"uv":[2.5,6,2.625,6.125],"texture":"#0"},"west":{"uv":[2.25,6,2.5,6.125],"texture":"#0"},"up":{"uv":[2.25,6,2.125,5.75],"texture":"#0"},"down":{"uv":[2.375,5.75,2.25,6],"texture":"#0"}}},{"from":[0,6,12],"to":[1,7,14],"faces":{"north":{"uv":[5.625,3.5,5.75,3.625],"texture":"#0"},"east":{"uv":[5.375,3.5,5.625,3.625],"texture":"#0"},"south":{"uv":[6,3.5,6.125,3.625],"texture":"#0"},"west":{"uv":[5.75,3.5,6,3.625],"texture":"#0"},"up":{"uv":[5.75,3.5,5.625,3.25],"texture":"#0"},"down":{"uv":[5.875,3.25,5.75,3.5],"texture":"#0"}}},{"from":[0,6,2],"to":[1,7,4],"faces":{"north":{"uv":[5.625,3,5.75,3.125],"texture":"#0"},"east":{"uv":[5.375,3,5.625,3.125],"texture":"#0"},"south":{"uv":[6,3,6.125,3.125],"texture":"#0"},"west":{"uv":[5.75,3,6,3.125],"texture":"#0"},"up":{"uv":[5.75,3,5.625,2.75],"texture":"#0"},"down":{"uv":[5.875,2.75,5.75,3],"texture":"#0"}}}, - {"from":[15,6,2],"to":[16,7,14],"faces":{"north":{"uv":[8.625,7.875,8.75,8],"texture":"#0"},"east":{"uv":[7.125,7.875,8.625,8],"texture":"#0"},"south":{"uv":[10.25,7.875,10.375,8],"texture":"#0"},"west":{"uv":[8.75,7.875,10.25,8],"texture":"#0"},"up":{"uv":[8.75,7.875,8.625,6.375],"texture":"#0"},"down":{"uv":[8.875,6.375,8.75,7.875],"texture":"#0"}}},{"from":[15,10,2],"to":[16,11,14],"faces":{"north":{"uv":[6.75,7.625,6.875,7.75],"texture":"#0"},"east":{"uv":[5.25,7.625,6.75,7.75],"texture":"#0"},"south":{"uv":[8.375,7.625,8.5,7.75],"texture":"#0"},"west":{"uv":[6.875,7.625,8.375,7.75],"texture":"#0"},"up":{"uv":[6.875,7.625,6.75,6.125],"texture":"#0"},"down":{"uv":[7,6.125,6.875,7.625],"texture":"#0"}}},{"from":[2,14,0],"to":[14,16,1],"faces":{"north":{"uv":[0.125,7.75,1.625,8],"texture":"#0"},"east":{"uv":[0,7.75,0.125,8],"texture":"#0"},"south":{"uv":[1.75,7.75,3.25,8],"texture":"#0"},"west":{"uv":[1.625,7.75,1.75,8],"texture":"#0"},"up":{"uv":[1.625,7.75,0.125,7.625],"texture":"#0"},"down":{"uv":[3.125,7.625,1.625,7.75],"texture":"#0"}}}, - {"from":[2,14,15],"to":[14,16,16],"faces":{"north":{"uv":[7.625,5,9.125,5.25],"texture":"#0"},"east":{"uv":[7.5,5,7.625,5.25],"texture":"#0"},"south":{"uv":[9.25,5,10.75,5.25],"texture":"#0"},"west":{"uv":[9.125,5,9.25,5.25],"texture":"#0"},"up":{"uv":[9.125,5,7.625,4.875],"texture":"#0"},"down":{"uv":[10.625,4.875,9.125,5],"texture":"#0"}}},{"from":[0,14,2],"to":[1,16,14],"faces":{"north":{"uv":[1.5,7.25,1.625,7.5],"texture":"#0"},"east":{"uv":[0,7.25,1.5,7.5],"texture":"#0"},"south":{"uv":[3.125,7.25,3.25,7.5],"texture":"#0"},"west":{"uv":[1.625,7.25,3.125,7.5],"texture":"#0"},"up":{"uv":[1.625,7.25,1.5,5.75],"texture":"#0"},"down":{"uv":[1.75,5.75,1.625,7.25],"texture":"#0"}}},{"from":[15,14,2],"to":[16,16,14],"faces":{"north":{"uv":[7.125,5.75,7.25,6],"texture":"#0"},"east":{"uv":[5.625,5.75,7.125,6],"texture":"#0"},"south":{"uv":[8.75,5.75,8.875,6],"texture":"#0"},"west":{"uv":[7.25,5.75,8.75,6],"texture":"#0"},"up":{"uv":[7.25,5.75,7.125,4.25],"texture":"#0"},"down":{"uv":[7.375,4.25,7.25,5.75],"texture":"#0"}}}, - {"from":[4,14,4],"to":[12,16,12],"faces":{"north":{"uv":[6.375,3.75,7.375,4],"texture":"#0"},"east":{"uv":[5.375,3.75,6.375,4],"texture":"#0"},"south":{"uv":[8.375,3.75,9.375,4],"texture":"#0"},"west":{"uv":[7.375,3.75,8.375,4],"texture":"#0"},"up":{"uv":[7.375,3.75,6.375,2.75],"texture":"#0"},"down":{"uv":[8.375,2.75,7.375,3.75],"texture":"#0"}}},{"from":[1,15,1],"to":[2,16,2],"faces":{"north":{"uv":[5.375,6.625,5.5,6.75],"texture":"#0"},"east":{"uv":[5.25,6.625,5.375,6.75],"texture":"#0"},"south":{"uv":[5.625,6.625,5.75,6.75],"texture":"#0"},"west":{"uv":[5.5,6.625,5.625,6.75],"texture":"#0"},"up":{"uv":[5.5,6.625,5.375,6.5],"texture":"#0"},"down":{"uv":[5.625,6.5,5.5,6.625],"texture":"#0"}}},{"from":[1,15,14],"to":[2,16,15],"faces":{"north":{"uv":[4.375,6.625,4.5,6.75],"texture":"#0"},"east":{"uv":[4.25,6.625,4.375,6.75],"texture":"#0"},"south":{"uv":[4.625,6.625,4.75,6.75],"texture":"#0"},"west":{"uv":[4.5,6.625,4.625,6.75],"texture":"#0"},"up":{"uv":[4.5,6.625,4.375,6.5],"texture":"#0"},"down":{"uv":[4.625,6.5,4.5,6.625],"texture":"#0"}}}, - {"from":[14,15,14],"to":[15,16,15],"faces":{"north":{"uv":[0.75,6.625,0.875,6.75],"texture":"#0"},"east":{"uv":[0.625,6.625,0.75,6.75],"texture":"#0"},"south":{"uv":[1,6.625,1.125,6.75],"texture":"#0"},"west":{"uv":[0.875,6.625,1,6.75],"texture":"#0"},"up":{"uv":[0.875,6.625,0.75,6.5],"texture":"#0"},"down":{"uv":[1,6.5,0.875,6.625],"texture":"#0"}}},{"from":[14,15,1],"to":[15,16,2],"faces":{"north":{"uv":[0.125,6.625,0.25,6.75],"texture":"#0"},"east":{"uv":[0,6.625,0.125,6.75],"texture":"#0"},"south":{"uv":[0.375,6.625,0.5,6.75],"texture":"#0"},"west":{"uv":[0.25,6.625,0.375,6.75],"texture":"#0"},"up":{"uv":[0.25,6.625,0.125,6.5],"texture":"#0"},"down":{"uv":[0.375,6.5,0.25,6.625],"texture":"#0"}}},{"from":[11.5,16,7],"to":[15.5,17,9],"faces":{"north":{"uv":[4,7.875,4.5,8],"texture":"#0"},"east":{"uv":[3.75,7.875,4,8],"texture":"#0"},"south":{"uv":[4.75,7.875,5.25,8],"texture":"#0"},"west":{"uv":[4.5,7.875,4.75,8],"texture":"#0"},"up":{"uv":[4.5,7.875,4,7.625],"texture":"#0"},"down":{"uv":[5,7.625,4.5,7.875],"texture":"#0"}}}, - {"from":[0.5,16,7],"to":[4.5,17,9],"faces":{"north":{"uv":[0.25,4.125,0.75,4.25],"texture":"#0"},"east":{"uv":[0,4.125,0.25,4.25],"texture":"#0"},"south":{"uv":[1,4.125,1.5,4.25],"texture":"#0"},"west":{"uv":[0.75,4.125,1,4.25],"texture":"#0"},"up":{"uv":[0.75,4.125,0.25,3.875],"texture":"#0"},"down":{"uv":[1.25,3.875,0.75,4.125],"texture":"#0"}}},{"from":[7,16,0.5],"to":[9,17,4.5],"faces":{"north":{"uv":[3.75,6.25,4,6.375],"texture":"#0"},"east":{"uv":[3.25,6.25,3.75,6.375],"texture":"#0"},"south":{"uv":[4.5,6.25,4.75,6.375],"texture":"#0"},"west":{"uv":[4,6.25,4.5,6.375],"texture":"#0"},"up":{"uv":[4,6.25,3.75,5.75],"texture":"#0"},"down":{"uv":[4.25,5.75,4,6.25],"texture":"#0"}}},{"from":[7,16,11.5],"to":[9,17,15.5],"faces":{"north":{"uv":[0.5,1.625,0.75,1.75],"texture":"#0"},"east":{"uv":[0,1.625,0.5,1.75],"texture":"#0"},"south":{"uv":[1.25,1.625,1.5,1.75],"texture":"#0"},"west":{"uv":[0.75,1.625,1.25,1.75],"texture":"#0"},"up":{"uv":[0.75,1.625,0.5,1.125],"texture":"#0"},"down":{"uv":[1,1.125,0.75,1.625],"texture":"#0"}}}, - {"from":[3,14,3],"to":[13,15,4],"faces":{"north":{"uv":[8.125,0.125,9.375,0.25],"texture":"#0"},"east":{"uv":[8,0.125,8.125,0.25],"texture":"#0"},"south":{"uv":[9.5,0.125,10.75,0.25],"texture":"#0"},"west":{"uv":[9.375,0.125,9.5,0.25],"texture":"#0"},"up":{"uv":[9.375,0.125,8.125,0],"texture":"#0"},"down":{"uv":[10.625,0,9.375,0.125],"texture":"#0"}}},{"from":[3,14,4],"to":[4,15,12],"faces":{"north":{"uv":[5.75,8.875,5.875,9],"texture":"#0"},"east":{"uv":[4.75,8.875,5.75,9],"texture":"#0"},"south":{"uv":[6.875,8.875,7,9],"texture":"#0"},"west":{"uv":[5.875,8.875,6.875,9],"texture":"#0"},"up":{"uv":[5.875,8.875,5.75,7.875],"texture":"#0"},"down":{"uv":[6,7.875,5.875,8.875],"texture":"#0"}}},{"from":[3,14,12],"to":[13,15,13],"faces":{"north":{"uv":[7.625,5.5,8.875,5.625],"texture":"#0"},"east":{"uv":[7.5,5.5,7.625,5.625],"texture":"#0"},"south":{"uv":[9,5.5,10.25,5.625],"texture":"#0"},"west":{"uv":[8.875,5.5,9,5.625],"texture":"#0"},"up":{"uv":[8.875,5.5,7.625,5.375],"texture":"#0"},"down":{"uv":[10.125,5.375,8.875,5.5],"texture":"#0"}}}, - {"from":[12,14,4],"to":[13,15,12],"faces":{"north":{"uv":[2.875,6.75,3,6.875],"texture":"#0"},"east":{"uv":[1.875,6.75,2.875,6.875],"texture":"#0"},"south":{"uv":[4,6.75,4.125,6.875],"texture":"#0"},"west":{"uv":[3,6.75,4,6.875],"texture":"#0"},"up":{"uv":[3,6.75,2.875,5.75],"texture":"#0"},"down":{"uv":[3.125,5.75,3,6.75],"texture":"#0"}}},{"from":[1,14,1],"to":[15,15,2],"faces":{"north":{"uv":[7.625,4.625,9.375,4.75],"texture":"#0"},"east":{"uv":[7.5,4.625,7.625,4.75],"texture":"#0"},"south":{"uv":[9.5,4.625,11.25,4.75],"texture":"#0"},"west":{"uv":[9.375,4.625,9.5,4.75],"texture":"#0"},"up":{"uv":[9.375,4.625,7.625,4.5],"texture":"#0"},"down":{"uv":[11.125,4.5,9.375,4.625],"texture":"#0"}}},{"from":[1,14,2],"to":[2,15,14],"faces":{"north":{"uv":[7.625,1.5,7.75,1.625],"texture":"#0"},"east":{"uv":[6.125,1.5,7.625,1.625],"texture":"#0"},"south":{"uv":[9.25,1.5,9.375,1.625],"texture":"#0"},"west":{"uv":[7.75,1.5,9.25,1.625],"texture":"#0"},"up":{"uv":[7.75,1.5,7.625,0],"texture":"#0"},"down":{"uv":[7.875,0,7.75,1.5],"texture":"#0"}}}, - {"from":[1,14,14],"to":[15,15,15],"faces":{"north":{"uv":[7.625,4.25,9.375,4.375],"texture":"#0"},"east":{"uv":[7.5,4.25,7.625,4.375],"texture":"#0"},"south":{"uv":[9.5,4.25,11.25,4.375],"texture":"#0"},"west":{"uv":[9.375,4.25,9.5,4.375],"texture":"#0"},"up":{"uv":[9.375,4.25,7.625,4.125],"texture":"#0"},"down":{"uv":[11.125,4.125,9.375,4.25],"texture":"#0"}}},{"from":[14,14,2],"to":[15,15,14],"faces":{"north":{"uv":[4.875,7.25,5,7.375],"texture":"#0"},"east":{"uv":[3.375,7.25,4.875,7.375],"texture":"#0"},"south":{"uv":[6.5,7.25,6.625,7.375],"texture":"#0"},"west":{"uv":[5,7.25,6.5,7.375],"texture":"#0"},"up":{"uv":[5,7.25,4.875,5.75],"texture":"#0"},"down":{"uv":[5.125,5.75,5,7.25],"texture":"#0"}}},{"from":[0,5,4],"to":[1,12,12],"faces":{"north":{"uv":[3.375,8.5,3.5,9.375],"texture":"#0"},"east":{"uv":[2.375,8.5,3.375,9.375],"texture":"#0"},"south":{"uv":[4.5,8.5,4.625,9.375],"texture":"#0"},"west":{"uv":[3.5,8.5,4.5,9.375],"texture":"#0"},"up":{"uv":[3.5,8.5,3.375,7.5],"texture":"#0"},"down":{"uv":[3.625,7.5,3.5,8.5],"texture":"#0"}}} + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 5, + 16 + ], + "faces": { + "north": { + "uv": [ + 2, + 2, + 4, + 2.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2, + 2, + 2.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 2, + 8, + 2.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 2, + 6, + 2.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 2, + 2, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 0, + 4, + 2 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 5, + 1 + ], + "to": [ + 15, + 14, + 15 + ], + "faces": { + "north": { + "uv": [ + 1.75, + 4.5, + 3.5, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.5, + 1.75, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 4.5, + 7, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 4.5, + 5.25, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 4.5, + 1.75, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.25, + 2.75, + 3.5, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 0 + ], + "to": [ + 2, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 8.25, + 8.375, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 8.25, + 8.125, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.5, + 8.25, + 8.75, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.375, + 8.25, + 8.5, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.375, + 8.25, + 8.125, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.625, + 8.125, + 8.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 5, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 7.25, + 8.25, + 7.5, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.125, + 8.25, + 7.25, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.625, + 8.25, + 7.875, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 8.25, + 7.625, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 8.25, + 7.25, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.75, + 8.125, + 7.5, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 5, + 15 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 1, + 8.25, + 1.25, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.875, + 8.25, + 1, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.375, + 8.25, + 1.625, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 8.25, + 1.375, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 8.25, + 1, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.5, + 8.125, + 1.25, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 15 + ], + "to": [ + 2, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 8.25, + 0.375, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 8.25, + 0.125, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 8.25, + 0.75, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.375, + 8.25, + 0.5, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.375, + 8.25, + 0.125, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.625, + 8.125, + 0.375, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 14 + ], + "to": [ + 1, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 9, + 8.25, + 9.125, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.875, + 8.25, + 9, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 8.25, + 9.375, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 8.25, + 9.25, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 8.25, + 9, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.25, + 8.125, + 9.125, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 1 + ], + "to": [ + 1, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 8.625, + 1.875, + 8.75, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.5, + 1.875, + 8.625, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.875, + 1.875, + 9, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 1.875, + 8.875, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 1.875, + 8.625, + 1.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.875, + 1.75, + 8.75, + 1.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 5, + 1 + ], + "to": [ + 16, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 1.875, + 8.25, + 2, + 9.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.75, + 8.25, + 1.875, + 9.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.125, + 8.25, + 2.25, + 9.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2, + 8.25, + 2.125, + 9.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2, + 8.25, + 1.875, + 8.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.125, + 8.125, + 2, + 8.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 5, + 14 + ], + "to": [ + 16, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 0.125, + 1.625, + 1.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.375, + 0.125, + 1.5, + 1.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 0.125, + 1.875, + 1.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 0.125, + 1.75, + 1.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 0.125, + 1.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 0, + 1.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6, + 0 + ], + "to": [ + 6, + 7, + 1 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 6.25, + 5.875, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 6.25, + 5.375, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 6.25, + 6.5, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 6.25, + 6, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 6.25, + 5.375, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.375, + 6.125, + 5.875, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 10, + 0 + ], + "to": [ + 6, + 11, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 1.25, + 6.75, + 1.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 1.25, + 6.25, + 1.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 1.25, + 7.375, + 1.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 1.25, + 6.875, + 1.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 1.25, + 6.25, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 1.125, + 6.75, + 1.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 6, + 0 + ], + "to": [ + 14, + 7, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.875, + 6.75, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.875, + 6.25, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.875, + 7.375, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.875, + 6.875, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.875, + 6.25, + 0.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0.75, + 6.75, + 0.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 10, + 0 + ], + "to": [ + 14, + 11, + 1 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.5, + 6.75, + 0.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.5, + 6.25, + 0.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.5, + 7.375, + 0.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.5, + 6.875, + 0.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.5, + 6.25, + 0.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0.375, + 6.75, + 0.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 5, + 0 + ], + "to": [ + 10, + 12, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 2.875, + 0.625, + 3.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 2.875, + 0.125, + 3.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 2.875, + 1.25, + 3.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 2.875, + 0.75, + 3.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 2.875, + 0.125, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 2.75, + 0.625, + 2.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6, + 5, + 15 + ], + "to": [ + 10, + 12, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 0.125, + 0.625, + 1 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0.125, + 0.125, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 0.125, + 1.25, + 1 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 0.125, + 0.75, + 1 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 0.125, + 0.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 0, + 0.625, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 6, + 15 + ], + "to": [ + 6, + 7, + 16 + ], + "faces": { + "north": { + "uv": [ + 6.25, + 0.125, + 6.75, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 0.125, + 6.25, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 0.125, + 7.375, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.75, + 0.125, + 6.875, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.75, + 0.125, + 6.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.25, + 0, + 6.75, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 10, + 15 + ], + "to": [ + 6, + 11, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 6.25, + 0.625, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6.25, + 0.125, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 6.25, + 1.25, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 6.25, + 0.75, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 6.25, + 0.125, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 6.125, + 0.625, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 10, + 15 + ], + "to": [ + 14, + 11, + 16 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 5.875, + 0.625, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 5.875, + 0.125, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 5.875, + 1.25, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.625, + 5.875, + 0.75, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.625, + 5.875, + 0.125, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.125, + 5.75, + 0.625, + 5.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 6, + 15 + ], + "to": [ + 14, + 7, + 16 + ], + "faces": { + "north": { + "uv": [ + 5.5, + 4.25, + 6, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 4.25, + 5.5, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.125, + 4.25, + 6.625, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 4.25, + 6.125, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 4.25, + 5.5, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.5, + 4.125, + 6, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 10, + 2 + ], + "to": [ + 1, + 11, + 4 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 6.5, + 2.25, + 6.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6.5, + 2.125, + 6.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 6.5, + 2.625, + 6.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 6.5, + 2.5, + 6.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6.5, + 2.125, + 6.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 6.25, + 2.25, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 10, + 12 + ], + "to": [ + 1, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 2.125, + 6, + 2.25, + 6.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6, + 2.125, + 6.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.5, + 6, + 2.625, + 6.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 6, + 2.5, + 6.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.25, + 6, + 2.125, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.375, + 5.75, + 2.25, + 6 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6, + 12 + ], + "to": [ + 1, + 7, + 14 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3.5, + 5.75, + 3.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3.5, + 5.625, + 3.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 3.5, + 6.125, + 3.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3.5, + 6, + 3.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3.5, + 5.625, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 3.25, + 5.75, + 3.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 6, + 2 + ], + "to": [ + 1, + 7, + 4 + ], + "faces": { + "north": { + "uv": [ + 5.625, + 3, + 5.75, + 3.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3, + 5.625, + 3.125 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6, + 3, + 6.125, + 3.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.75, + 3, + 6, + 3.125 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 3, + 5.625, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.875, + 2.75, + 5.75, + 3 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 6, + 2 + ], + "to": [ + 16, + 7, + 14 + ], + "faces": { + "north": { + "uv": [ + 8.625, + 7.875, + 8.75, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.125, + 7.875, + 8.625, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.25, + 7.875, + 10.375, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.75, + 7.875, + 10.25, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.75, + 7.875, + 8.625, + 6.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.875, + 6.375, + 8.75, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 10, + 2 + ], + "to": [ + 16, + 11, + 14 + ], + "faces": { + "north": { + "uv": [ + 6.75, + 7.625, + 6.875, + 7.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 7.625, + 6.75, + 7.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 7.625, + 8.5, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6.875, + 7.625, + 8.375, + 7.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6.875, + 7.625, + 6.75, + 6.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7, + 6.125, + 6.875, + 7.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 14, + 0 + ], + "to": [ + 14, + 16, + 1 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 7.75, + 1.625, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.75, + 0.125, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.75, + 7.75, + 3.25, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 7.75, + 1.75, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 7.75, + 0.125, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.125, + 7.625, + 1.625, + 7.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 2, + 14, + 15 + ], + "to": [ + 14, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 5, + 9.125, + 5.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 5, + 7.625, + 5.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 5, + 10.75, + 5.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.125, + 5, + 9.25, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.125, + 5, + 7.625, + 4.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 4.875, + 9.125, + 5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 14, + 2 + ], + "to": [ + 1, + 16, + 14 + ], + "faces": { + "north": { + "uv": [ + 1.5, + 7.25, + 1.625, + 7.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7.25, + 1.5, + 7.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 7.25, + 3.25, + 7.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.625, + 7.25, + 3.125, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.625, + 7.25, + 1.5, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.75, + 5.75, + 1.625, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15, + 14, + 2 + ], + "to": [ + 16, + 16, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.125, + 5.75, + 7.25, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.625, + 5.75, + 7.125, + 6 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.75, + 5.75, + 8.875, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.25, + 5.75, + 8.75, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.25, + 5.75, + 7.125, + 4.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.375, + 4.25, + 7.25, + 5.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 4, + 14, + 4 + ], + "to": [ + 12, + 16, + 12 + ], + "faces": { + "north": { + "uv": [ + 6.375, + 3.75, + 7.375, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.375, + 3.75, + 6.375, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.375, + 3.75, + 9.375, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.375, + 3.75, + 8.375, + 4 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.375, + 3.75, + 6.375, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.375, + 2.75, + 7.375, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 15, + 1 + ], + "to": [ + 2, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 5.375, + 6.625, + 5.5, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 6.625, + 5.375, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.625, + 6.625, + 5.75, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 6.625, + 5.625, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 6.625, + 5.375, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.625, + 6.5, + 5.5, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 15, + 14 + ], + "to": [ + 2, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 4.375, + 6.625, + 4.5, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.25, + 6.625, + 4.375, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.625, + 6.625, + 4.75, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 6.625, + 4.625, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 6.625, + 4.375, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.625, + 6.5, + 4.5, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 15, + 14 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "north": { + "uv": [ + 0.75, + 6.625, + 0.875, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.625, + 6.625, + 0.75, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 6.625, + 1.125, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.875, + 6.625, + 1, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.875, + 6.625, + 0.75, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 6.5, + 0.875, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 15, + 1 + ], + "to": [ + 15, + 16, + 2 + ], + "faces": { + "north": { + "uv": [ + 0.125, + 6.625, + 0.25, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 6.625, + 0.125, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.375, + 6.625, + 0.5, + 6.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.25, + 6.625, + 0.375, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.25, + 6.625, + 0.125, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.375, + 6.5, + 0.25, + 6.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 11.5, + 16, + 7 + ], + "to": [ + 15.5, + 17, + 9 + ], + "faces": { + "north": { + "uv": [ + 4, + 7.875, + 4.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 7.875, + 4, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 7.875, + 5.25, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 7.875, + 4.75, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.5, + 7.875, + 4, + 7.625 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5, + 7.625, + 4.5, + 7.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0.5, + 16, + 7 + ], + "to": [ + 4.5, + 17, + 9 + ], + "faces": { + "north": { + "uv": [ + 0.25, + 4.125, + 0.75, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 4.125, + 0.25, + 4.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1, + 4.125, + 1.5, + 4.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 4.125, + 1, + 4.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.75, + 4.125, + 0.25, + 3.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1.25, + 3.875, + 0.75, + 4.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 16, + 0.5 + ], + "to": [ + 9, + 17, + 4.5 + ], + "faces": { + "north": { + "uv": [ + 3.75, + 6.25, + 4, + 6.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.25, + 6.25, + 3.75, + 6.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 6.25, + 4.75, + 6.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 6.25, + 4.5, + 6.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 6.25, + 3.75, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.25, + 5.75, + 4, + 6.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7, + 16, + 11.5 + ], + "to": [ + 9, + 17, + 15.5 + ], + "faces": { + "north": { + "uv": [ + 0.5, + 1.625, + 0.75, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 1.625, + 0.5, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.25, + 1.625, + 1.5, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 1.625, + 1.25, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.75, + 1.625, + 0.5, + 1.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 1, + 1.125, + 0.75, + 1.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 3 + ], + "to": [ + 13, + 15, + 4 + ], + "faces": { + "north": { + "uv": [ + 8.125, + 0.125, + 9.375, + 0.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.125, + 8.125, + 0.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 0.125, + 10.75, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 0.125, + 9.5, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 0.125, + 8.125, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.625, + 0, + 9.375, + 0.125 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 4 + ], + "to": [ + 4, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 5.75, + 8.875, + 5.875, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 8.875, + 5.75, + 9 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.875, + 8.875, + 7, + 9 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.875, + 8.875, + 6.875, + 9 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.875, + 8.875, + 5.75, + 7.875 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 7.875, + 5.875, + 8.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 3, + 14, + 12 + ], + "to": [ + 13, + 15, + 13 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 5.5, + 8.875, + 5.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 5.5, + 7.625, + 5.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 5.5, + 10.25, + 5.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.875, + 5.5, + 9, + 5.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.875, + 5.5, + 7.625, + 5.375 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.125, + 5.375, + 8.875, + 5.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 12, + 14, + 4 + ], + "to": [ + 13, + 15, + 12 + ], + "faces": { + "north": { + "uv": [ + 2.875, + 6.75, + 3, + 6.875 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.875, + 6.75, + 2.875, + 6.875 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 6.75, + 4.125, + 6.875 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 6.75, + 4, + 6.875 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 6.75, + 2.875, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.125, + 5.75, + 3, + 6.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 1 + ], + "to": [ + 15, + 15, + 2 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 4.625, + 9.375, + 4.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 4.625, + 7.625, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 4.625, + 11.25, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 4.625, + 9.5, + 4.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 4.625, + 7.625, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 4.5, + 9.375, + 4.625 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 2 + ], + "to": [ + 2, + 15, + 14 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 1.5, + 7.75, + 1.625 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.125, + 1.5, + 7.625, + 1.625 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 1.5, + 9.375, + 1.625 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.75, + 1.5, + 9.25, + 1.625 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.75, + 1.5, + 7.625, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.875, + 0, + 7.75, + 1.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 1, + 14, + 14 + ], + "to": [ + 15, + 15, + 15 + ], + "faces": { + "north": { + "uv": [ + 7.625, + 4.25, + 9.375, + 4.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.5, + 4.25, + 7.625, + 4.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 4.25, + 11.25, + 4.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 4.25, + 9.5, + 4.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.375, + 4.25, + 7.625, + 4.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11.125, + 4.125, + 9.375, + 4.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 14, + 14, + 2 + ], + "to": [ + 15, + 15, + 14 + ], + "faces": { + "north": { + "uv": [ + 4.875, + 7.25, + 5, + 7.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.375, + 7.25, + 4.875, + 7.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.5, + 7.25, + 6.625, + 7.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5, + 7.25, + 6.5, + 7.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5, + 7.25, + 4.875, + 5.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.125, + 5.75, + 5, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + 5, + 4 + ], + "to": [ + 1, + 12, + 12 + ], + "faces": { + "north": { + "uv": [ + 3.375, + 8.5, + 3.5, + 9.375 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 2.375, + 8.5, + 3.375, + 9.375 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.5, + 8.5, + 4.625, + 9.375 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 8.5, + 4.5, + 9.375 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 8.5, + 3.375, + 7.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.625, + 7.5, + 3.5, + 8.5 + ], + "texture": "#0" + } + } + } ], - "groups":[ + "groups": [ { - "name":"radioactiveprocessor", - "origin":[0,0,0], - "color":0, - "children":[ + "name": "radioactiveprocessor", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + { + "name": "frame", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ] + }, + { + "name": "fluidinput", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "name": "wires", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + }, { - "name":"frame", - "origin":[0,0,0], - "color":0, - "children":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29] - },{ - "name":"fluidinput", - "origin":[0,0,0], - "color":0, - "children":[30,31,32,33,34,35,36,37,38] - },{ - "name":"wires", - "origin":[0,0,0], - "color":0, - "children":[39,40,41,42,43,44,45,46] - },{ - "name":"power", - "origin":[0,0,0], - "color":0,"children":[47] + "name": "power", + "origin": [ + 0, + 0, + 0 + ], + "color": 0, + "children": [ + 47 + ] } ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/radioisotopegenerator.json b/src/main/resources/assets/nuclearscience/models/block/radioisotopegenerator.json index 70ccad44..3cf44e66 100644 --- a/src/main/resources/assets/nuclearscience/models/block/radioisotopegenerator.json +++ b/src/main/resources/assets/nuclearscience/models/block/radioisotopegenerator.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/radioisotopegenerator", - "particle": "nuclearscience:model/radioisotopegenerator" + "0": "nuclearscience:block/model/radioisotopegenerator", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/reactorcore.json b/src/main/resources/assets/nuclearscience/models/block/reactorcore.json index a3ccd783..7e2749b0 100644 --- a/src/main/resources/assets/nuclearscience/models/block/reactorcore.json +++ b/src/main/resources/assets/nuclearscience/models/block/reactorcore.json @@ -1,36 +1,98 @@ { "credit": "aurilisdev", "parent": "block/cube_all", - "texture_size": [64, 64], + "texture_size": [ + 64, + 64 + ], "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/reactorcore", - "particle": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore", + "particle": "electrodynamics:block/steelcasing" }, "groups": [ { "name": "translucent", - "origin": [10, 10, 9], - "children": [0] + "origin": [ + 10, + 10, + 9 + ], + "children": [ + 0 + ] }, { "name": "solid", - "origin": [10, 21, -2], - "children": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34] + "origin": [ + 10, + 21, + -2 + ], + "children": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] }, { "name": "reactorcore", - "origin": [8, 8, 8], + "origin": [ + 8, + 8, + 8 + ], "children": [ { "name": "Solid", - "origin": [1.5, 9, 15.5], - "children": [] + "origin": [ + 1.5, + 9, + 15.5 + ], + "children": [ + ] }, { "name": "Transparent", - "origin": [8, 9, 22], - "children": [] + "origin": [ + 8, + 9, + 22 + ], + "children": [ + ] } ] } @@ -38,423 +100,2249 @@ "loader": "forge:multi-layer", "layers": { "solid": { + "render_type": "minecraft:solid", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore" }, "elements": [ { - "from": [4, 1.0504, 2], - "to": [12, 1.8382, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 9.4536, -2]}, + "from": [ + 4, + 1.0504, + 2 + ], + "to": [ + 12, + 1.8382, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 9.4536, + -2 + ] + }, "faces": { - "north": {"uv": [9.5, 6.75, 11.5, 7], "texture": "#0"}, - "east": {"uv": [11, 0.25, 11.25, 0.5], "texture": "#0"}, - "west": {"uv": [11, 0.5, 11.25, 0.75], "texture": "#0"}, - "up": {"uv": [11.5, 7.25, 9.5, 7], "texture": "#0"} + "north": { + "uv": [ + 9.5, + 6.75, + 11.5, + 7 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11, + 0.25, + 11.25, + 0.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 0.5, + 11.25, + 0.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 7.25, + 9.5, + 7 + ], + "texture": "#0" + } } }, { - "from": [13.5, 12.6048, 4], - "to": [14.5, 13.3926, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9.5, 21.008, 9]}, + "from": [ + 13.5, + 12.6048, + 4 + ], + "to": [ + 14.5, + 13.3926, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 9.5, + 21.008, + 9 + ] + }, "faces": { - "north": {"uv": [2.75, 10.75, 3, 11], "texture": "#0"}, - "east": {"uv": [9.5, 2.75, 11.5, 3], "texture": "#0"}, - "south": {"uv": [2.75, 11, 3, 11.25], "texture": "#0"}, - "up": {"uv": [9.75, 6.75, 9.5, 4.75], "texture": "#0"} + "north": { + "uv": [ + 2.75, + 10.75, + 3, + 11 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.5, + 2.75, + 11.5, + 3 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 11, + 3, + 11.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.75, + 6.75, + 9.5, + 4.75 + ], + "texture": "#0" + } } }, { - "from": [13, 1.0504, 4], - "to": [14, 1.8382, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 9.4536, 9]}, + "from": [ + 13, + 1.0504, + 4 + ], + "to": [ + 14, + 1.8382, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 9, + 9.4536, + 9 + ] + }, "faces": { - "north": {"uv": [11, 10.25, 11.25, 10.5], "texture": "#0"}, - "east": {"uv": [9.5, 8, 11.5, 8.25], "texture": "#0"}, - "south": {"uv": [11, 10.5, 11.25, 10.75], "texture": "#0"}, - "up": {"uv": [10, 11.75, 9.75, 9.75], "texture": "#0"} + "north": { + "uv": [ + 11, + 10.25, + 11.25, + 10.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.5, + 8, + 11.5, + 8.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 10.5, + 11.25, + 10.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10, + 11.75, + 9.75, + 9.75 + ], + "texture": "#0" + } } }, { - "from": [1, 11.5544, 2], - "to": [2, 12.6048, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 19.9576, 9]}, + "from": [ + 1, + 11.5544, + 2 + ], + "to": [ + 2, + 12.6048, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2, + 19.9576, + 9 + ] + }, "faces": { - "north": {"uv": [8, 1.25, 8.25, 1.5], "texture": "#0"}, - "south": {"uv": [8, 1.5, 8.25, 1.75], "texture": "#0"}, - "west": {"uv": [3, 2.5, 6, 2.75], "texture": "#0"}, - "up": {"uv": [5.75, 9.5, 5.5, 6.5], "texture": "#0"}, - "down": {"uv": [6, 6.5, 5.75, 9.5], "texture": "#0"} + "north": { + "uv": [ + 8, + 1.25, + 8.25, + 1.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 1.5, + 8.25, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 2.5, + 6, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.75, + 9.5, + 5.5, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 6.5, + 5.75, + 9.5 + ], + "texture": "#0" + } } }, { - "from": [3, 1.0504, 14], - "to": [4, 11.5544, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8.4032, 20]}, + "from": [ + 3, + 1.0504, + 14 + ], + "to": [ + 4, + 11.5544, + 15 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 8.4032, + 20 + ] + }, "faces": { - "north": {"uv": [2, 9.5, 2.25, 12.25], "texture": "#0"}, - "east": {"uv": [5.5, 9.5, 5.75, 12.25], "texture": "#0"}, - "south": {"uv": [5.75, 9.5, 6, 12.25], "texture": "#0"}, - "west": {"uv": [6, 9.5, 6.25, 12.25], "texture": "#0"} + "north": { + "uv": [ + 2, + 9.5, + 2.25, + 12.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.5, + 9.5, + 5.75, + 12.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.75, + 9.5, + 6, + 12.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 9.5, + 6.25, + 12.25 + ], + "texture": "#0" + } } }, { - "from": [3, 1.0504, 1], - "to": [4, 11.5544, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8.4032, 7]}, + "from": [ + 3, + 1.0504, + 1 + ], + "to": [ + 4, + 11.5544, + 2 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + 8.4032, + 7 + ] + }, "faces": { - "north": {"uv": [5, 9, 5.25, 11.75], "texture": "#0"}, - "east": {"uv": [5.25, 9, 5.5, 11.75], "texture": "#0"}, - "south": {"uv": [9, 9, 9.25, 11.75], "texture": "#0"}, - "west": {"uv": [9, 1.25, 9.25, 4], "texture": "#0"} + "north": { + "uv": [ + 5, + 9, + 5.25, + 11.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5.25, + 9, + 5.5, + 11.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9, + 9, + 9.25, + 11.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9, + 1.25, + 9.25, + 4 + ], + "texture": "#0" + } } }, { - "from": [4, 1.0504, 4], - "to": [5, 11.5544, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [1, 8.4032, 10]}, + "from": [ + 4, + 1.0504, + 4 + ], + "to": [ + 5, + 11.5544, + 5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 1, + 8.4032, + 10 + ] + }, "faces": { - "north": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "east": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "south": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "west": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"} + "north": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + } } }, { - "from": [4, 1.0504, 11], - "to": [5, 11.5544, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [1, 8.4032, 17]}, + "from": [ + 4, + 1.0504, + 11 + ], + "to": [ + 5, + 11.5544, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 1, + 8.4032, + 17 + ] + }, "faces": { - "north": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "east": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "south": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "west": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"} + "north": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + } } }, { - "from": [11, 1.0504, 4], - "to": [12, 11.5544, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.4032, 10]}, + "from": [ + 11, + 1.0504, + 4 + ], + "to": [ + 12, + 11.5544, + 5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8.4032, + 10 + ] + }, "faces": { - "north": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "east": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "south": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "west": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"} + "north": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + } } }, { - "from": [11, 1.0504, 11], - "to": [12, 11.5544, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.4032, 17]}, + "from": [ + 11, + 1.0504, + 11 + ], + "to": [ + 12, + 11.5544, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8.4032, + 17 + ] + }, "faces": { - "north": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "east": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "south": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"}, - "west": {"uv": [0, 12.75, 0.25, 15.5], "texture": "#0"} + "north": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 12.75, + 0.25, + 15.5 + ], + "texture": "#0" + } } }, { - "from": [12, 1.0504, 14], - "to": [13, 11.5544, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8.4032, 20]}, + "from": [ + 12, + 1.0504, + 14 + ], + "to": [ + 13, + 11.5544, + 15 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 9, + 8.4032, + 20 + ] + }, "faces": { - "north": {"uv": [6.25, 9.5, 6.5, 12.25], "texture": "#0"}, - "east": {"uv": [6.5, 9.5, 6.75, 12.25], "texture": "#0"}, - "south": {"uv": [6.75, 9.5, 7, 12.25], "texture": "#0"}, - "west": {"uv": [7, 9.5, 7.25, 12.25], "texture": "#0"} + "north": { + "uv": [ + 6.25, + 9.5, + 6.5, + 12.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6.5, + 9.5, + 6.75, + 12.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 6.75, + 9.5, + 7, + 12.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7, + 9.5, + 7.25, + 12.25 + ], + "texture": "#0" + } } }, { - "from": [12, 1.0504, 1], - "to": [13, 11.5544, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8.4032, 7]}, + "from": [ + 12, + 1.0504, + 1 + ], + "to": [ + 13, + 11.5544, + 2 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 9, + 8.4032, + 7 + ] + }, "faces": { - "north": {"uv": [8.25, 1.25, 8.5, 4], "texture": "#0"}, - "east": {"uv": [8.5, 1.25, 8.75, 4], "texture": "#0"}, - "south": {"uv": [8.75, 1.25, 9, 4], "texture": "#0"}, - "west": {"uv": [4.75, 9, 5, 11.75], "texture": "#0"} + "north": { + "uv": [ + 8.25, + 1.25, + 8.5, + 4 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.5, + 1.25, + 8.75, + 4 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.75, + 1.25, + 9, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 9, + 5, + 11.75 + ], + "texture": "#0" + } } }, { - "from": [1, 1.0504, 12], - "to": [2, 11.5544, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 8.4032, 18]}, + "from": [ + 1, + 1.0504, + 12 + ], + "to": [ + 2, + 11.5544, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2, + 8.4032, + 18 + ] + }, "faces": { - "north": {"uv": [0, 9.5, 0.25, 12.25], "texture": "#0"}, - "east": {"uv": [0.25, 9.5, 0.5, 12.25], "texture": "#0"}, - "south": {"uv": [0.5, 9.5, 0.75, 12.25], "texture": "#0"}, - "west": {"uv": [0.75, 9.5, 1, 12.25], "texture": "#0"} + "north": { + "uv": [ + 0, + 9.5, + 0.25, + 12.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.25, + 9.5, + 0.5, + 12.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.5, + 9.5, + 0.75, + 12.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.75, + 9.5, + 1, + 12.25 + ], + "texture": "#0" + } } }, { - "from": [1, 1.0504, 3], - "to": [2, 11.5544, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 8.4032, 9]}, + "from": [ + 1, + 1.0504, + 3 + ], + "to": [ + 2, + 11.5544, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2, + 8.4032, + 9 + ] + }, "faces": { - "north": {"uv": [9, 5.75, 9.25, 8.5], "texture": "#0"}, - "east": {"uv": [9.25, 9.25, 9.5, 12], "texture": "#0"}, - "south": {"uv": [9.25, 1.25, 9.5, 4], "texture": "#0"}, - "west": {"uv": [9.25, 5.75, 9.5, 8.5], "texture": "#0"} + "north": { + "uv": [ + 9, + 5.75, + 9.25, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.25, + 9.25, + 9.5, + 12 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 1.25, + 9.5, + 4 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.25, + 5.75, + 9.5, + 8.5 + ], + "texture": "#0" + } } }, { - "from": [14, 1.0504, 12], - "to": [15, 11.5544, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 8.4032, 18]}, + "from": [ + 14, + 1.0504, + 12 + ], + "to": [ + 15, + 11.5544, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11, + 8.4032, + 18 + ] + }, "faces": { - "north": {"uv": [1, 9.5, 1.25, 12.25], "texture": "#0"}, - "east": {"uv": [1.25, 9.5, 1.5, 12.25], "texture": "#0"}, - "south": {"uv": [1.5, 9.5, 1.75, 12.25], "texture": "#0"}, - "west": {"uv": [1.75, 9.5, 2, 12.25], "texture": "#0"} + "north": { + "uv": [ + 1, + 9.5, + 1.25, + 12.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1.25, + 9.5, + 1.5, + 12.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.5, + 9.5, + 1.75, + 12.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.75, + 9.5, + 2, + 12.25 + ], + "texture": "#0" + } } }, { - "from": [14, 1.0504, 3], - "to": [15, 11.5544, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 8.4032, 9]}, + "from": [ + 14, + 1.0504, + 3 + ], + "to": [ + 15, + 11.5544, + 4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11, + 8.4032, + 9 + ] + }, "faces": { - "north": {"uv": [3.75, 8.25, 4, 11], "texture": "#0"}, - "east": {"uv": [4, 8.25, 4.25, 11], "texture": "#0"}, - "south": {"uv": [4.25, 8.25, 4.5, 11], "texture": "#0"}, - "west": {"uv": [4.5, 8.25, 4.75, 11], "texture": "#0"} + "north": { + "uv": [ + 3.75, + 8.25, + 4, + 11 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4, + 8.25, + 4.25, + 11 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.25, + 8.25, + 4.5, + 11 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.5, + 8.25, + 4.75, + 11 + ], + "texture": "#0" + } } }, { - "from": [1, 0, 2], - "to": [2, 1.0504, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 8.4032, 9]}, + "from": [ + 1, + 0, + 2 + ], + "to": [ + 2, + 1.0504, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2, + 8.4032, + 9 + ] + }, "faces": { - "north": {"uv": [8, 1.75, 8.25, 2], "texture": "#0"}, - "south": {"uv": [8, 2, 8.25, 2.25], "texture": "#0"}, - "west": {"uv": [3, 2.75, 6, 3], "texture": "#0"}, - "up": {"uv": [2.5, 10, 2.25, 7], "texture": "#0"}, - "down": {"uv": [2.75, 7, 2.5, 10], "texture": "#0"} + "north": { + "uv": [ + 8, + 1.75, + 8.25, + 2 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 2, + 8.25, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3, + 2.75, + 6, + 3 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 2.5, + 10, + 2.25, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 2.75, + 7, + 2.5, + 10 + ], + "texture": "#0" + } } }, { - "from": [1.5, 12.6048, 4], - "to": [2.5, 13.3926, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [-2.5, 21.008, 9]}, + "from": [ + 1.5, + 12.6048, + 4 + ], + "to": [ + 2.5, + 13.3926, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2.5, + 21.008, + 9 + ] + }, "faces": { - "north": {"uv": [10.25, 9.75, 10.5, 10], "texture": "#0"}, - "south": {"uv": [2.75, 10.5, 3, 10.75], "texture": "#0"}, - "west": {"uv": [9.5, 2.5, 11.5, 2.75], "texture": "#0"}, - "up": {"uv": [9, 11.5, 8.75, 9.5], "texture": "#0"} + "north": { + "uv": [ + 10.25, + 9.75, + 10.5, + 10 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 10.5, + 3, + 10.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 2.5, + 11.5, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9, + 11.5, + 8.75, + 9.5 + ], + "texture": "#0" + } } }, { - "from": [2, 1.0504, 4], - "to": [3, 1.8382, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 9.4536, 9]}, + "from": [ + 2, + 1.0504, + 4 + ], + "to": [ + 3, + 1.8382, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + -2, + 9.4536, + 9 + ] + }, "faces": { - "north": {"uv": [11, 0.75, 11.25, 1], "texture": "#0"}, - "south": {"uv": [11, 1, 11.25, 1.25], "texture": "#0"}, - "west": {"uv": [9.5, 7.25, 11.5, 7.5], "texture": "#0"}, - "up": {"uv": [9.75, 11.75, 9.5, 9.75], "texture": "#0"} + "north": { + "uv": [ + 11, + 0.75, + 11.25, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 1, + 11.25, + 1.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 7.25, + 11.5, + 7.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.75, + 11.75, + 9.5, + 9.75 + ], + "texture": "#0" + } } }, { - "from": [14, 0, 2], - "to": [15, 1.0504, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 8.4032, 9]}, + "from": [ + 14, + 0, + 2 + ], + "to": [ + 15, + 1.0504, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11, + 8.4032, + 9 + ] + }, "faces": { - "north": {"uv": [10, 9.75, 10.25, 10], "texture": "#0"}, - "east": {"uv": [8, 1, 11, 1.25], "texture": "#0"}, - "south": {"uv": [2.75, 10.25, 3, 10.5], "texture": "#0"}, - "up": {"uv": [3.5, 11.25, 3.25, 8.25], "texture": "#0"}, - "down": {"uv": [3.75, 8.25, 3.5, 11.25], "texture": "#0"} + "north": { + "uv": [ + 10, + 9.75, + 10.25, + 10 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 1, + 11, + 1.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 10.25, + 3, + 10.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 11.25, + 3.25, + 8.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.75, + 8.25, + 3.5, + 11.25 + ], + "texture": "#0" + } } }, { - "from": [2, 0, 1], - "to": [14, 1.0504, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8.4032, 9]}, + "from": [ + 2, + 0, + 1 + ], + "to": [ + 14, + 1.0504, + 15 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 8.4032, + 9 + ] + }, "faces": { - "north": {"uv": [6, 5.75, 9, 6], "texture": "#0"}, - "east": {"uv": [6, 4.75, 9.5, 5], "texture": "#0"}, - "south": {"uv": [8, 0, 11, 0.25], "texture": "#0"}, - "west": {"uv": [6, 5, 9.5, 5.25], "texture": "#0"}, - "up": {"uv": [3, 3.5, 0, 0], "texture": "#0"}, - "down": {"uv": [6, 3, 3, 6.5], "texture": "#0"} + "north": { + "uv": [ + 6, + 5.75, + 9, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 4.75, + 9.5, + 5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 0, + 11, + 0.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 5, + 9.5, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 3.5, + 0, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 3, + 3, + 6.5 + ], + "texture": "#0" + } } }, { - "from": [2, 11.5544, 1], - "to": [14, 12.6048, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 19.9576, 9]}, + "from": [ + 2, + 11.5544, + 1 + ], + "to": [ + 14, + 12.6048, + 15 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 19.9576, + 9 + ] + }, "faces": { - "north": {"uv": [8, 0.25, 11, 0.5], "texture": "#0"}, - "east": {"uv": [6, 5.25, 9.5, 5.5], "texture": "#0"}, - "south": {"uv": [8, 0.5, 11, 0.75], "texture": "#0"}, - "west": {"uv": [6, 5.5, 9.5, 5.75], "texture": "#0"}, - "up": {"uv": [3, 7, 0, 3.5], "texture": "#0"}, - "down": {"uv": [9, 6, 6, 9.5], "texture": "#0"} + "north": { + "uv": [ + 8, + 0.25, + 11, + 0.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 5.25, + 9.5, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 0.5, + 11, + 0.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 5.5, + 9.5, + 5.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 7, + 0, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9, + 6, + 6, + 9.5 + ], + "texture": "#0" + } } }, { - "from": [2.5, 12.6048, 2.5], - "to": [13.5, 13.3926, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 21.008, 9]}, + "from": [ + 2.5, + 12.6048, + 2.5 + ], + "to": [ + 13.5, + 13.3926, + 13.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 21.008, + 9 + ] + }, "faces": { - "north": {"uv": [8.25, 4, 10.75, 4.25], "texture": "#0"}, - "east": {"uv": [8.25, 4.25, 10.75, 4.5], "texture": "#0"}, - "south": {"uv": [8.25, 4.5, 10.75, 4.75], "texture": "#0"}, - "west": {"uv": [9, 8.5, 11.5, 8.75], "texture": "#0"}, - "up": {"uv": [5.5, 2.5, 3, 0], "texture": "#0"} + "north": { + "uv": [ + 8.25, + 4, + 10.75, + 4.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.25, + 4.25, + 10.75, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 4.5, + 10.75, + 4.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9, + 8.5, + 11.5, + 8.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 2.5, + 3, + 0 + ], + "texture": "#0" + } } }, { - "from": [3, 1.0504, 3], - "to": [13, 1.8382, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 9.4536, 9]}, + "from": [ + 3, + 1.0504, + 3 + ], + "to": [ + 13, + 1.8382, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 9.4536, + 9 + ] + }, "faces": { - "north": {"uv": [9, 8.75, 11.5, 9], "texture": "#0"}, - "east": {"uv": [9.25, 9, 11.75, 9.25], "texture": "#0"}, - "south": {"uv": [9.5, 9.5, 12, 9.75], "texture": "#0"}, - "west": {"uv": [9.5, 1.25, 12, 1.5], "texture": "#0"}, - "up": {"uv": [8, 2.5, 5.5, 0], "texture": "#0"} + "north": { + "uv": [ + 9, + 8.75, + 11.5, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.25, + 9, + 11.75, + 9.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 9.5, + 12, + 9.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 1.25, + 12, + 1.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 2.5, + 5.5, + 0 + ], + "texture": "#0" + } } }, { - "from": [3, 13.3926, 3], - "to": [13, 14.1804, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 21.7958, 9]}, + "from": [ + 3, + 13.3926, + 3 + ], + "to": [ + 13, + 14.1804, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 21.7958, + 9 + ] + }, "faces": { - "north": {"uv": [9.5, 1.5, 11.75, 1.75], "texture": "#0"}, - "east": {"uv": [9.5, 1.75, 11.75, 2], "texture": "#0"}, - "south": {"uv": [9.5, 2, 11.75, 2.25], "texture": "#0"}, - "west": {"uv": [9.5, 2.25, 11.75, 2.5], "texture": "#0"}, - "up": {"uv": [8.25, 4.75, 6, 2.5], "texture": "#0"} + "north": { + "uv": [ + 9.5, + 1.5, + 11.75, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.5, + 1.75, + 11.75, + 2 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 2, + 11.75, + 2.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 2.25, + 11.75, + 2.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 4.75, + 6, + 2.5 + ], + "texture": "#0" + } } }, { - "from": [4, 14.1804, 4], - "to": [12, 14.9682, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 22.5836, 9]}, + "from": [ + 4, + 14.1804, + 4 + ], + "to": [ + 12, + 14.9682, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 22.5836, + 9 + ] + }, "faces": { - "north": {"uv": [9.5, 8.25, 11.25, 8.5], "texture": "#0"}, - "east": {"uv": [9.5, 9.25, 11.25, 9.5], "texture": "#0"}, - "south": {"uv": [9.75, 4.75, 11.5, 5], "texture": "#0"}, - "west": {"uv": [9.75, 5, 11.5, 5.25], "texture": "#0"}, - "up": {"uv": [4.75, 8.25, 3, 6.5], "texture": "#0"} + "north": { + "uv": [ + 9.5, + 8.25, + 11.25, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.5, + 9.25, + 11.25, + 9.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.75, + 4.75, + 11.5, + 5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.75, + 5, + 11.5, + 5.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 8.25, + 3, + 6.5 + ], + "texture": "#0" + } } }, { - "from": [9.25, 13.13, 2.5], - "to": [10.75, 16.0186, 4], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14.5743, 3.25]}, + "from": [ + 9.25, + 13.13, + 2.5 + ], + "to": [ + 10.75, + 16.0186, + 4 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14.5743, + 3.25 + ] + }, "faces": { - "north": {"uv": [9.75, 5.25, 10.25, 6], "texture": "#0"}, - "east": {"uv": [9.75, 6, 10.25, 6.75], "texture": "#0"}, - "south": {"uv": [2.25, 10, 2.75, 10.75], "texture": "#0"}, - "west": {"uv": [10, 10, 10.5, 10.75], "texture": "#0"}, - "up": {"uv": [4.25, 11.5, 3.75, 11], "texture": "#0"} + "north": { + "uv": [ + 9.75, + 5.25, + 10.25, + 6 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.75, + 6, + 10.25, + 6.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.25, + 10, + 2.75, + 10.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 10, + 10.5, + 10.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.25, + 11.5, + 3.75, + 11 + ], + "texture": "#0" + } } }, { - "from": [9.25, 13.13, 12], - "to": [10.75, 16.0186, 13.5], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 14.5743, 12.75]}, + "from": [ + 9.25, + 13.13, + 12 + ], + "to": [ + 10.75, + 16.0186, + 13.5 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14.5743, + 12.75 + ] + }, "faces": { - "north": {"uv": [10.25, 6, 10.75, 6.75], "texture": "#0"}, - "east": {"uv": [10.5, 10.5, 11, 11.25], "texture": "#0"}, - "south": {"uv": [10.5, 9.75, 11, 10.5], "texture": "#0"}, - "west": {"uv": [2.25, 10.75, 2.75, 11.5], "texture": "#0"}, - "up": {"uv": [7.75, 11.5, 7.25, 11], "texture": "#0"} + "north": { + "uv": [ + 10.25, + 6, + 10.75, + 6.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.5, + 10.5, + 11, + 11.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 9.75, + 11, + 10.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 2.25, + 10.75, + 2.75, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.75, + 11.5, + 7.25, + 11 + ], + "texture": "#0" + } } }, { - "from": [5.25, 13.13, 2.5], - "to": [6.75, 16.0186, 4], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14.5743, 3.25]}, + "from": [ + 5.25, + 13.13, + 2.5 + ], + "to": [ + 6.75, + 16.0186, + 4 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14.5743, + 3.25 + ] + }, "faces": { - "north": {"uv": [7.25, 10.25, 7.75, 11], "texture": "#0"}, - "east": {"uv": [7.75, 10.25, 8.25, 11], "texture": "#0"}, - "south": {"uv": [8.25, 10.25, 8.75, 11], "texture": "#0"}, - "west": {"uv": [10.25, 5.25, 10.75, 6], "texture": "#0"}, - "up": {"uv": [4.75, 11.5, 4.25, 11], "texture": "#0"} + "north": { + "uv": [ + 7.25, + 10.25, + 7.75, + 11 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 10.25, + 8.25, + 11 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8.25, + 10.25, + 8.75, + 11 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 5.25, + 10.75, + 6 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4.75, + 11.5, + 4.25, + 11 + ], + "texture": "#0" + } } }, { - "from": [5.25, 13.13, 12], - "to": [6.75, 16.0186, 13.5], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 14.5743, 12.75]}, + "from": [ + 5.25, + 13.13, + 12 + ], + "to": [ + 6.75, + 16.0186, + 13.5 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14.5743, + 12.75 + ] + }, "faces": { - "north": {"uv": [10, 10.75, 10.5, 11.5], "texture": "#0"}, - "east": {"uv": [10.75, 4, 11.25, 4.75], "texture": "#0"}, - "south": {"uv": [10.75, 5.25, 11.25, 6], "texture": "#0"}, - "west": {"uv": [10.75, 6, 11.25, 6.75], "texture": "#0"}, - "up": {"uv": [8.25, 11.5, 7.75, 11], "texture": "#0"} + "north": { + "uv": [ + 10, + 10.75, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 4, + 11.25, + 4.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.75, + 5.25, + 11.25, + 6 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.75, + 6, + 11.25, + 6.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8.25, + 11.5, + 7.75, + 11 + ], + "texture": "#0" + } } }, { - "from": [4, 12.6048, 13.5], - "to": [12, 13.3926, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 21.008, 9.5]}, + "from": [ + 4, + 12.6048, + 13.5 + ], + "to": [ + 12, + 13.3926, + 14.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 21.008, + 9.5 + ] + }, "faces": { - "east": {"uv": [8.25, 11, 8.5, 11.25], "texture": "#0"}, - "south": {"uv": [9.5, 3, 11.5, 3.25], "texture": "#0"}, - "west": {"uv": [8.5, 11, 8.75, 11.25], "texture": "#0"}, - "up": {"uv": [11.5, 3.5, 9.5, 3.25], "texture": "#0"} + "east": { + "uv": [ + 8.25, + 11, + 8.5, + 11.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 3, + 11.5, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8.5, + 11, + 8.75, + 11.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 3.5, + 9.5, + 3.25 + ], + "texture": "#0" + } } }, { - "from": [4, 1.0504, 13], - "to": [12, 1.8382, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 9.4536, 9]}, + "from": [ + 4, + 1.0504, + 13 + ], + "to": [ + 12, + 1.8382, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 9.4536, + 9 + ] + }, "faces": { - "east": {"uv": [11, 9.75, 11.25, 10], "texture": "#0"}, - "south": {"uv": [9.5, 7.5, 11.5, 7.75], "texture": "#0"}, - "west": {"uv": [11, 10, 11.25, 10.25], "texture": "#0"}, - "up": {"uv": [11.5, 8, 9.5, 7.75], "texture": "#0"} + "east": { + "uv": [ + 11, + 9.75, + 11.25, + 10 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 7.5, + 11.5, + 7.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 10, + 11.25, + 10.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 8, + 9.5, + 7.75 + ], + "texture": "#0" + } } }, { - "from": [14, 11.5544, 2], - "to": [15, 12.6048, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 19.9576, 9]}, + "from": [ + 14, + 11.5544, + 2 + ], + "to": [ + 15, + 12.6048, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11, + 19.9576, + 9 + ] + }, "faces": { - "north": {"uv": [8, 2.25, 8.25, 2.5], "texture": "#0"}, - "east": {"uv": [8, 0.75, 11, 1], "texture": "#0"}, - "south": {"uv": [2.75, 10, 3, 10.25], "texture": "#0"}, - "up": {"uv": [3, 10, 2.75, 7], "texture": "#0"}, - "down": {"uv": [3.25, 8.25, 3, 11.25], "texture": "#0"} + "north": { + "uv": [ + 8, + 2.25, + 8.25, + 2.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8, + 0.75, + 11, + 1 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2.75, + 10, + 3, + 10.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 10, + 2.75, + 7 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.25, + 8.25, + 3, + 11.25 + ], + "texture": "#0" + } } }, { - "from": [4, 12.6048, 1.5], - "to": [12, 13.3926, 2.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 21.008, -2.5]}, + "from": [ + 4, + 12.6048, + 1.5 + ], + "to": [ + 12, + 13.3926, + 2.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 21.008, + -2.5 + ] + }, "faces": { - "north": {"uv": [9.5, 3.5, 11.5, 3.75], "texture": "#0"}, - "east": {"uv": [11, 11, 11.25, 11.25], "texture": "#0"}, - "west": {"uv": [11, 0, 11.25, 0.25], "texture": "#0"}, - "up": {"uv": [11.5, 4, 9.5, 3.75], "texture": "#0"} + "north": { + "uv": [ + 9.5, + 3.5, + 11.5, + 3.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11, + 11, + 11.25, + 11.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11, + 0, + 11.25, + 0.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11.5, + 4, + 9.5, + 3.75 + ], + "texture": "#0" + } } } ] }, "translucent": { + "render_type": "minecraft:translucent", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore" }, "elements": [ { - "from": [6.5, 1.8508, 6.5], - "to": [9.5, 11.3422, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 9.754, 9]}, + "from": [ + 6.5, + 1.8508, + 6.5 + ], + "to": [ + 9.5, + 11.3422, + 9.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 10, + 9.754, + 9 + ] + }, "faces": { - "north": {"uv": [4.75, 6.5, 5.5, 9], "texture": "#0"}, - "east": {"uv": [0, 7, 0.75, 9.5], "texture": "#0"}, - "south": {"uv": [0.75, 7, 1.5, 9.5], "texture": "#0"}, - "west": {"uv": [1.5, 7, 2.25, 9.5], "texture": "#0"}, - "up": {"uv": [8, 10.25, 7.25, 9.5], "texture": "#0"}, - "down": {"uv": [8.75, 9.5, 8, 10.25], "texture": "#0"} + "north": { + "uv": [ + 4.75, + 6.5, + 5.5, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 7, + 0.75, + 9.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 7, + 1.5, + 9.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 7, + 2.25, + 9.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 10.25, + 7.25, + 9.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.75, + 9.5, + 8, + 10.25 + ], + "texture": "#0" + } } } ] } } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearscience/models/block/reactorcoresource.json b/src/main/resources/assets/nuclearscience/models/block/reactorcoresource.json index b5edd273..9e1b405f 100644 --- a/src/main/resources/assets/nuclearscience/models/block/reactorcoresource.json +++ b/src/main/resources/assets/nuclearscience/models/block/reactorcoresource.json @@ -3,7 +3,8 @@ "parent": "block/cube_all", "texture_size": [64, 64], "textures": { - "0": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore", + "particle" : "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/reactordeuterium.json b/src/main/resources/assets/nuclearscience/models/block/reactordeuterium.json index d0214def..885b7eb3 100644 --- a/src/main/resources/assets/nuclearscience/models/block/reactordeuterium.json +++ b/src/main/resources/assets/nuclearscience/models/block/reactordeuterium.json @@ -4,8 +4,8 @@ "texture_size": [64, 64], "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/reactorcore", - "particle": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore", + "particle": "nuclearscience:block/model/reactorcore" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/reactorfuelrod.json b/src/main/resources/assets/nuclearscience/models/block/reactorfuelrod.json index 5d4d6de4..e62c54f1 100644 --- a/src/main/resources/assets/nuclearscience/models/block/reactorfuelrod.json +++ b/src/main/resources/assets/nuclearscience/models/block/reactorfuelrod.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/reactorcore", - "particle": "nuclearscience:model/reactorcore" + "0": "nuclearscience:block/model/reactorcore", + "particle": "nuclearscience:block/model/reactorcore" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/teleporter.json b/src/main/resources/assets/nuclearscience/models/block/teleporter.json index 0f07e557..bc3ef576 100644 --- a/src/main/resources/assets/nuclearscience/models/block/teleporter.json +++ b/src/main/resources/assets/nuclearscience/models/block/teleporter.json @@ -3,8 +3,8 @@ "texture_size": [64, 64], "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/teleporter", - "particle": "nuclearscience:model/teleporter" + "0": "nuclearscience:block/model/teleporter", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/teleporteron.json b/src/main/resources/assets/nuclearscience/models/block/teleporteron.json index 887745ae..ef0df953 100644 --- a/src/main/resources/assets/nuclearscience/models/block/teleporteron.json +++ b/src/main/resources/assets/nuclearscience/models/block/teleporteron.json @@ -3,8 +3,8 @@ "texture_size": [64, 64], "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/teleporteron", - "particle": "nuclearscience:model/teleporteron" + "0": "nuclearscience:block/model/teleporteron", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/turbine.json b/src/main/resources/assets/nuclearscience/models/block/turbine.json index 3881744e..41f97c42 100644 --- a/src/main/resources/assets/nuclearscience/models/block/turbine.json +++ b/src/main/resources/assets/nuclearscience/models/block/turbine.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/turbine", - "particle": "nuclearscience:model/turbine" + "0": "nuclearscience:block/model/turbine", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/turbinecasing.json b/src/main/resources/assets/nuclearscience/models/block/turbinecasing.json index 77e2122f..f5bed046 100644 --- a/src/main/resources/assets/nuclearscience/models/block/turbinecasing.json +++ b/src/main/resources/assets/nuclearscience/models/block/turbinecasing.json @@ -3,8 +3,8 @@ "parent": "block/cube_all", "ambientocclusion": "false", "textures": { - "0": "nuclearscience:model/turbine", - "particle": "nuclearscience:model/turbine" + "0": "nuclearscience:block/model/turbine", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/block/turbinerotorlayer.json b/src/main/resources/assets/nuclearscience/models/block/turbinerotorlayer.json index 3b0555c7..4541824a 100644 --- a/src/main/resources/assets/nuclearscience/models/block/turbinerotorlayer.json +++ b/src/main/resources/assets/nuclearscience/models/block/turbinerotorlayer.json @@ -2,8 +2,8 @@ "credit": "aurilisdev", "parent": "block/cube_all", "textures": { - "0": "nuclearscience:model/turbine", - "particle": "nuclearscience:model/turbine" + "0": "nuclearscience:block/model/turbine", + "particle": "electrodynamics:block/steelcasing" }, "elements": [ { diff --git a/src/main/resources/assets/nuclearscience/models/item/antidote.json b/src/main/resources/assets/nuclearscience/models/item/antidote.json deleted file mode 100644 index 62bdbacf..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/antidote.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/antidote" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/canisterlead.json b/src/main/resources/assets/nuclearscience/models/item/canisterlead.json deleted file mode 100644 index 280dc49e..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/canisterlead.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/canisterlead" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/cellantimatterlarge.json b/src/main/resources/assets/nuclearscience/models/item/cellantimatterlarge.json deleted file mode 100644 index e281886c..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellantimatterlarge.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellantimatterlarge" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/cellantimattersmall.json b/src/main/resources/assets/nuclearscience/models/item/cellantimattersmall.json deleted file mode 100644 index 74fcbc95..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellantimattersmall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellantimattersmall" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json b/src/main/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json deleted file mode 100644 index d6eaffc2..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellantimatterverylarge.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellantimatterverylarge" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/celldarkmatter.json b/src/main/resources/assets/nuclearscience/models/item/celldarkmatter.json deleted file mode 100644 index f3557538..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/celldarkmatter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/celldarkmatter" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/celldeuterium.json b/src/main/resources/assets/nuclearscience/models/item/celldeuterium.json deleted file mode 100644 index 488af235..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/celldeuterium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/celldeuterium" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/cellelectromagnetic.json b/src/main/resources/assets/nuclearscience/models/item/cellelectromagnetic.json deleted file mode 100644 index df5e1400..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellelectromagnetic.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellelectromagnetic" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/cellempty.json b/src/main/resources/assets/nuclearscience/models/item/cellempty.json deleted file mode 100644 index 16eff410..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellempty.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellempty" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/cellheavywater.json b/src/main/resources/assets/nuclearscience/models/item/cellheavywater.json deleted file mode 100644 index 6bc7421a..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/cellheavywater.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/cellheavywater" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/celltritium.json b/src/main/resources/assets/nuclearscience/models/item/celltritium.json deleted file mode 100644 index 509e3f4e..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/celltritium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/celltritium" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/controlrodassembly.json b/src/main/resources/assets/nuclearscience/models/item/controlrodassembly.json deleted file mode 100644 index c039a823..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/controlrodassembly.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "nuclearscience:block/controlrodassembly", - "display": { - "gui": { - "rotation": [ - 30, - 225, - 0 - ], - "translation": [ - 0.0, - -0.9, - 0 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - } - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/electromagneticswitch.json b/src/main/resources/assets/nuclearscience/models/item/electromagneticswitch.json deleted file mode 100644 index 1437a35d..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/electromagneticswitch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/electromagneticswitch" -} diff --git a/src/main/resources/assets/nuclearscience/models/item/fissiledust.json b/src/main/resources/assets/nuclearscience/models/item/fissiledust.json deleted file mode 100644 index 3168230e..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fissiledust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/fissiledust" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/flinak.json b/src/main/resources/assets/nuclearscience/models/item/flinak.json deleted file mode 100644 index 28d06943..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/flinak.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/flinak" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/frequencycard.json b/src/main/resources/assets/nuclearscience/models/item/frequencycard.json deleted file mode 100644 index 5089da62..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/frequencycard.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/frequencycard" - }, - "display": { - "gui": { - "scale": [ - 0.75, - 0.75, - 0.75 - ] - } - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/fuelheuo2.json b/src/main/resources/assets/nuclearscience/models/item/fuelheuo2.json deleted file mode 100644 index eb81d66d..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fuelheuo2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/fuelheuo2" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/fuelleuo2.json b/src/main/resources/assets/nuclearscience/models/item/fuelleuo2.json deleted file mode 100644 index f4168f8c..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fuelleuo2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/fuelleuo2" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/fuelplutonium.json b/src/main/resources/assets/nuclearscience/models/item/fuelplutonium.json deleted file mode 100644 index c181a26a..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fuelplutonium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/fuelplutonium" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/fuelreprocessor.json b/src/main/resources/assets/nuclearscience/models/item/fuelreprocessor.json deleted file mode 100644 index 734f2a4d..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fuelreprocessor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/fuelreprocessoritem" -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/fuelspent.json b/src/main/resources/assets/nuclearscience/models/item/fuelspent.json deleted file mode 100644 index 43164f2c..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/fuelspent.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/fuelspent" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/geigercounter.json b/src/main/resources/assets/nuclearscience/models/item/geigercounter.json deleted file mode 100644 index 339a439e..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/geigercounter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/geigercounter" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/hazmatboots.json b/src/main/resources/assets/nuclearscience/models/item/hazmatboots.json deleted file mode 100644 index 83b91857..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/hazmatboots.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/hazmatboots" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/hazmathelmet.json b/src/main/resources/assets/nuclearscience/models/item/hazmathelmet.json deleted file mode 100644 index 3951afea..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/hazmathelmet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/hazmathelmet" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/hazmatlegs.json b/src/main/resources/assets/nuclearscience/models/item/hazmatlegs.json deleted file mode 100644 index 871ae5e5..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/hazmatlegs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/hazmatlegs" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/hazmatplate.json b/src/main/resources/assets/nuclearscience/models/item/hazmatplate.json deleted file mode 100644 index aba0f3bb..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/hazmatplate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/hazmatplate" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/lifthf4uf4.json b/src/main/resources/assets/nuclearscience/models/item/lifthf4uf4.json deleted file mode 100644 index 5d726fd8..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/lifthf4uf4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/lifthf4uf4" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json b/src/main/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json deleted file mode 100644 index 9b6ddeb9..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/moltensaltpipevanadiumsteelceramic.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/moltensaltpipevanadiumsteelceramic" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/moltensaltsupplier.json b/src/main/resources/assets/nuclearscience/models/item/moltensaltsupplier.json deleted file mode 100644 index 46e4e497..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/moltensaltsupplier.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/moltensaltsupplieritem" -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/particleinjector.json b/src/main/resources/assets/nuclearscience/models/item/particleinjector.json deleted file mode 100644 index 1aec12ae..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/particleinjector.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "nuclearscience:block/particleinjector", - "display": { - "gui": { - "rotation": [ - 45, - 45, - 0 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ], - "translation": [ - 0, - -1, - 0 - ] - } - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/plutonium239.json b/src/main/resources/assets/nuclearscience/models/item/plutonium239.json deleted file mode 100644 index de644fae..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/plutonium239.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/plutonium239" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/plutoniumoxide.json b/src/main/resources/assets/nuclearscience/models/item/plutoniumoxide.json deleted file mode 100644 index f1c0d20d..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/plutoniumoxide.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/plutoniumoxide" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/polonium210.json b/src/main/resources/assets/nuclearscience/models/item/polonium210.json deleted file mode 100644 index 8d080e15..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/polonium210.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/polonium210" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/polonium210chunk.json b/src/main/resources/assets/nuclearscience/models/item/polonium210chunk.json deleted file mode 100644 index 6929e3ac..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/polonium210chunk.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/polonium210chunk" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/quantumcapacitor.json b/src/main/resources/assets/nuclearscience/models/item/quantumcapacitor.json deleted file mode 100644 index 3c8d1a26..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/quantumcapacitor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/quantumcapacitor" -} diff --git a/src/main/resources/assets/nuclearscience/models/item/radioactiveprocessor.json b/src/main/resources/assets/nuclearscience/models/item/radioactiveprocessor.json deleted file mode 100644 index 44f151a9..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/radioactiveprocessor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/radioactiveprocessoritem" -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json b/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json deleted file mode 100644 index 67f53668..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatboots.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/reinforcedhazmatboots" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json b/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json deleted file mode 100644 index b3621012..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmathelmet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/reinforcedhazmathelmet" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json b/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json deleted file mode 100644 index 24cd47ad..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatlegs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/reinforcedhazmatlegs" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json b/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json deleted file mode 100644 index 1007f6ec..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/reinforcedhazmatplate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/reinforcedhazmatplate" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/teleporter.json b/src/main/resources/assets/nuclearscience/models/item/teleporter.json deleted file mode 100644 index d38c6831..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/teleporter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nuclearscience:block/teleporter" -} diff --git a/src/main/resources/assets/nuclearscience/models/item/thorianitedust.json b/src/main/resources/assets/nuclearscience/models/item/thorianitedust.json deleted file mode 100644 index 779635b1..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/thorianitedust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/thorianitedust" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/nuclearscience/models/item/uranium235.json b/src/main/resources/assets/nuclearscience/models/item/uranium235.json deleted file mode 100644 index 3a11e489..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/uranium235.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/uranium235" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/uranium238.json b/src/main/resources/assets/nuclearscience/models/item/uranium238.json deleted file mode 100644 index 08e653eb..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/uranium238.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/uranium238" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/item/yellowcake.json b/src/main/resources/assets/nuclearscience/models/item/yellowcake.json deleted file mode 100644 index be99ebb6..00000000 --- a/src/main/resources/assets/nuclearscience/models/item/yellowcake.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "nuclearscience:item/yellowcake" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_none.json b/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_none.json deleted file mode 100644 index 6c196474..00000000 --- a/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_none.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "nuclearscience:parent/pipe_none", - "textures": { - "particle": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_base", - "texture": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_base" - } -} diff --git a/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_side.json b/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_side.json deleted file mode 100644 index 949c9103..00000000 --- a/src/main/resources/assets/nuclearscience/models/pipe/moltensaltpipevanadiumsteelceramic_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "nuclearscience:parent/pipe_side", - "textures": { - "particle": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_base", - "texture": "nuclearscience:block/pipe/moltensaltpipevanadiumsteelceramic_base" - } -} diff --git a/src/main/resources/assets/nuclearscience/sounds.json b/src/main/resources/assets/nuclearscience/sounds.json deleted file mode 100644 index ae029744..00000000 --- a/src/main/resources/assets/nuclearscience/sounds.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "gascentrifuge": { - "category": "blocks", - "subtitle": "subtitles.nuclearscience.gascentrifuge", - "sounds": [ - "nuclearscience:gascentrifuge" - ] - }, - "nuclearboiler": { - "category": "blocks", - "subtitle": "subtitles.nuclearscience.nuclearboiler", - "sounds": [ - "nuclearscience:nuclearboiler" - ] - }, - "turbine": { - "category": "blocks", - "subtitle": "subtitles.nuclearscience.turbine", - "sounds": [ - "nuclearscience:turbine" - ] - }, - "siren": { - "category": "blocks", - "subtitle": "subtitles.nuclearscience.siren", - "sounds": [ - "nuclearscience:siren" - ] - }, - "geiger": { - "category": "blocks", - "subtitle": "subtitles.nuclearscience.geiger", - "sounds": [ - "nuclearscience:geiger" - ] - } -} diff --git a/src/main/resources/assets/nuclearscience/textures/model/atomicassembler.png b/src/main/resources/assets/nuclearscience/textures/block/model/atomicassembler.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/atomicassembler.png rename to src/main/resources/assets/nuclearscience/textures/block/model/atomicassembler.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/chemicalextractor.png b/src/main/resources/assets/nuclearscience/textures/block/model/chemicalextractor.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/chemicalextractor.png rename to src/main/resources/assets/nuclearscience/textures/block/model/chemicalextractor.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/controlrods.png b/src/main/resources/assets/nuclearscience/textures/block/model/controlrods.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/controlrods.png rename to src/main/resources/assets/nuclearscience/textures/block/model/controlrods.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/freezeplug.png b/src/main/resources/assets/nuclearscience/textures/block/model/freezeplug.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/freezeplug.png rename to src/main/resources/assets/nuclearscience/textures/block/model/freezeplug.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/fuelreprocessor.png b/src/main/resources/assets/nuclearscience/textures/block/model/fuelreprocessor.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/fuelreprocessor.png rename to src/main/resources/assets/nuclearscience/textures/block/model/fuelreprocessor.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/fuelreprocessoron.png b/src/main/resources/assets/nuclearscience/textures/block/model/fuelreprocessoron.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/fuelreprocessoron.png rename to src/main/resources/assets/nuclearscience/textures/block/model/fuelreprocessoron.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/fusionreactorcore.png b/src/main/resources/assets/nuclearscience/textures/block/model/fusionreactorcore.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/fusionreactorcore.png rename to src/main/resources/assets/nuclearscience/textures/block/model/fusionreactorcore.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/gascentrifuge.png b/src/main/resources/assets/nuclearscience/textures/block/model/gascentrifuge.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/gascentrifuge.png rename to src/main/resources/assets/nuclearscience/textures/block/model/gascentrifuge.png diff --git a/src/main/resources/assets/nuclearscience/textures/block/model/hazmatarmor.png b/src/main/resources/assets/nuclearscience/textures/block/model/hazmatarmor.png new file mode 100644 index 00000000..d6579dcd Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/block/model/hazmatarmor.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/model/heatexchanger.png b/src/main/resources/assets/nuclearscience/textures/block/model/heatexchanger.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/heatexchanger.png rename to src/main/resources/assets/nuclearscience/textures/block/model/heatexchanger.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/meltedreactor.png b/src/main/resources/assets/nuclearscience/textures/block/model/meltedreactor.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/meltedreactor.png rename to src/main/resources/assets/nuclearscience/textures/block/model/meltedreactor.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/moltensaltsupplier.png b/src/main/resources/assets/nuclearscience/textures/block/model/moltensaltsupplier.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/moltensaltsupplier.png rename to src/main/resources/assets/nuclearscience/textures/block/model/moltensaltsupplier.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/moltensaltsupplieron.png b/src/main/resources/assets/nuclearscience/textures/block/model/moltensaltsupplieron.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/moltensaltsupplieron.png rename to src/main/resources/assets/nuclearscience/textures/block/model/moltensaltsupplieron.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/msrreactorcore.png b/src/main/resources/assets/nuclearscience/textures/block/model/msreactorcore.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/msrreactorcore.png rename to src/main/resources/assets/nuclearscience/textures/block/model/msreactorcore.png diff --git a/src/main/resources/assets/nuclearscience/textures/block/model/msrfuelpreprocessor.png b/src/main/resources/assets/nuclearscience/textures/block/model/msrfuelpreprocessor.png new file mode 100644 index 00000000..274b1344 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/block/model/msrfuelpreprocessor.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/model/nuclearboiler.png b/src/main/resources/assets/nuclearscience/textures/block/model/nuclearboiler.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/nuclearboiler.png rename to src/main/resources/assets/nuclearscience/textures/block/model/nuclearboiler.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/particleinjector.png b/src/main/resources/assets/nuclearscience/textures/block/model/particleinjector.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/particleinjector.png rename to src/main/resources/assets/nuclearscience/textures/block/model/particleinjector.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/quantumcapacitor.png b/src/main/resources/assets/nuclearscience/textures/block/model/quantumcapacitor.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/quantumcapacitor.png rename to src/main/resources/assets/nuclearscience/textures/block/model/quantumcapacitor.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/radioactiveprocessor.png b/src/main/resources/assets/nuclearscience/textures/block/model/radioactiveprocessor.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/radioactiveprocessor.png rename to src/main/resources/assets/nuclearscience/textures/block/model/radioactiveprocessor.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/radioactiveprocessoron.png b/src/main/resources/assets/nuclearscience/textures/block/model/radioactiveprocessoron.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/radioactiveprocessoron.png rename to src/main/resources/assets/nuclearscience/textures/block/model/radioactiveprocessoron.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/radioisotopegenerator.png b/src/main/resources/assets/nuclearscience/textures/block/model/radioisotopegenerator.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/radioisotopegenerator.png rename to src/main/resources/assets/nuclearscience/textures/block/model/radioisotopegenerator.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/reactorcore.png b/src/main/resources/assets/nuclearscience/textures/block/model/reactorcore.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/reactorcore.png rename to src/main/resources/assets/nuclearscience/textures/block/model/reactorcore.png diff --git a/src/main/resources/assets/nuclearscience/textures/block/model/reinforcedhazmatarmor.png b/src/main/resources/assets/nuclearscience/textures/block/model/reinforcedhazmatarmor.png new file mode 100644 index 00000000..726ad39a Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/block/model/reinforcedhazmatarmor.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/model/teleporter.png b/src/main/resources/assets/nuclearscience/textures/block/model/teleporter.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/teleporter.png rename to src/main/resources/assets/nuclearscience/textures/block/model/teleporter.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/teleporteron.png b/src/main/resources/assets/nuclearscience/textures/block/model/teleporteron.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/teleporteron.png rename to src/main/resources/assets/nuclearscience/textures/block/model/teleporteron.png diff --git a/src/main/resources/assets/nuclearscience/textures/model/turbine.png b/src/main/resources/assets/nuclearscience/textures/block/model/turbine.png similarity index 100% rename from src/main/resources/assets/nuclearscience/textures/model/turbine.png rename to src/main/resources/assets/nuclearscience/textures/block/model/turbine.png diff --git a/src/main/resources/assets/nuclearscience/textures/block/pipe/moltensaltpipevanadiumsteelceramic.png b/src/main/resources/assets/nuclearscience/textures/block/pipe/moltensaltpipevanadiumsteelceramic.png new file mode 100644 index 00000000..34542324 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/block/pipe/moltensaltpipevanadiumsteelceramic.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/custom/particleaccelerator_dmblackhole.png b/src/main/resources/assets/nuclearscience/textures/custom/particleaccelerator_dmblackhole.png new file mode 100644 index 00000000..d8b16045 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/custom/particleaccelerator_dmblackhole.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/item/actinium225.png b/src/main/resources/assets/nuclearscience/textures/item/actinium225.png new file mode 100644 index 00000000..25ddb317 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/item/actinium225.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/item/actiniumoxide.png b/src/main/resources/assets/nuclearscience/textures/item/actiniumoxide.png new file mode 100644 index 00000000..56298766 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/item/actiniumoxide.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/item/fissilesalt.png b/src/main/resources/assets/nuclearscience/textures/item/fissilesalt.png new file mode 100644 index 00000000..405c46fa Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/item/fissilesalt.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/item/pipe/moltensaltpipevanadiumsteelceramic.png b/src/main/resources/assets/nuclearscience/textures/item/pipe/moltensaltpipevanadiumsteelceramic.png new file mode 100644 index 00000000..378c9408 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/item/pipe/moltensaltpipevanadiumsteelceramic.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/model/msrfuelpreprocessor.png b/src/main/resources/assets/nuclearscience/textures/model/msrfuelpreprocessor.png deleted file mode 100644 index 5fab4307..00000000 Binary files a/src/main/resources/assets/nuclearscience/textures/model/msrfuelpreprocessor.png and /dev/null differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_down.png b/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_down.png new file mode 100644 index 00000000..bd45e950 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_down.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_lr.png b/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_lr.png new file mode 100644 index 00000000..74e1869b Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/component/fissionreactorarrow_lr.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/component/particleinjectorarrows.png b/src/main/resources/assets/nuclearscience/textures/screen/component/particleinjectorarrows.png new file mode 100644 index 00000000..b9891363 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/component/particleinjectorarrows.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fissionreactor7.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fissionreactor7.png index 0e0a67da..192fba6e 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fissionreactor7.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fissionreactor7.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor1.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor1.png index d5e43538..a8abf53d 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor1.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor1.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor10.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor10.png index fc73d99e..a717cb1b 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor10.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor10.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor11.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor11.png index b1553bb9..950cfd2f 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor11.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor11.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor12.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor12.png new file mode 100644 index 00000000..758a9152 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor12.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor13.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor13.png new file mode 100644 index 00000000..29f6d1a0 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor13.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor14.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor14.png new file mode 100644 index 00000000..16063b1c Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor14.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor2.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor2.png index db4d8a71..ebc59f7b 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor2.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor2.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor3.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor3.png index a7d7f597..d927c93a 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor3.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor3.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor4.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor4.png index 2f731a63..9874e09a 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor4.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor4.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor5.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor5.png index 2d09e495..423d27aa 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor5.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor5.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor6.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor6.png index e110f1ea..9ab3a8c5 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor6.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor6.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor7.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor7.png index ea7d38a4..c4e5da86 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor7.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor7.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor8.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor8.png index 0bd3e17c..5cf3b847 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor8.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor8.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor9.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor9.png index 586d5d3e..54043f74 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor9.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/fusionreactor9.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor11.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor11.png index 2dc67e15..c64955b1 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor11.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor11.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-1.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-1.png new file mode 100644 index 00000000..31677500 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-1.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-2.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-2.png new file mode 100644 index 00000000..2fb960fd Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4-2.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4.png deleted file mode 100644 index bc9fad19..00000000 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor4.png and /dev/null differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-1.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-1.png new file mode 100644 index 00000000..72e65300 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-1.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-2.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-2.png new file mode 100644 index 00000000..679f5629 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5-2.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5.png deleted file mode 100644 index 135997a0..00000000 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/msreactor5.png and /dev/null differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator10.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator10.png index b4afb3fc..4f63431d 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator10.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator10.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator11.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator11.png new file mode 100644 index 00000000..302d79e4 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator11.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator7.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator7.png index c0bc7029..535e3d9d 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator7.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator7.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator8.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator8.png index 22a972d2..641e18a2 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator8.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator8.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator9.png b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator9.png index d6b0a61b..fc6f7b15 100644 Binary files a/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator9.png and b/src/main/resources/assets/nuclearscience/textures/screen/guidebook/particleaccelerator9.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifuge.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifuge.png new file mode 100644 index 00000000..4f8d1dfd Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifuge.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowoff.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowoff.png new file mode 100644 index 00000000..10c89a4b Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowoff.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowon.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowon.png new file mode 100644 index 00000000..dedabdd1 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowon.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowstatic.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowstatic.png new file mode 100644 index 00000000..a080e7c0 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/gascentrifugearrowstatic.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_antimatter_gui.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_antimatter_gui.png new file mode 100644 index 00000000..5745850f Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_antimatter_gui.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_dark_matter_gui.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_dark_matter_gui.png new file mode 100644 index 00000000..407650b2 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particle_accelerator_dark_matter_gui.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowoff.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowoff.png new file mode 100644 index 00000000..489710a9 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowoff.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowon.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowon.png new file mode 100644 index 00000000..5b37dc3b Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_amarrowon.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_left.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_left.png new file mode 100644 index 00000000..e447be76 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_left.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_right.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_right.png new file mode 100644 index 00000000..73eaaaf3 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowoff_right.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_left.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_left.png new file mode 100644 index 00000000..17241e8f Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_left.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_right.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_right.png new file mode 100644 index 00000000..7af6b059 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmarrowon_right.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmatom.png b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmatom.png new file mode 100644 index 00000000..4b112670 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/jei/particleaccelerator_dmatom.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/particleinjector.png b/src/main/resources/assets/nuclearscience/textures/screen/particleinjector.png new file mode 100644 index 00000000..72b16d31 Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/particleinjector.png differ diff --git a/src/main/resources/assets/nuclearscience/textures/screen/reactorcore.png b/src/main/resources/assets/nuclearscience/textures/screen/reactorcore.png new file mode 100644 index 00000000..0cd622be Binary files /dev/null and b/src/main/resources/assets/nuclearscience/textures/screen/reactorcore.png differ diff --git a/src/main/resources/data/forge/tags/fluids/ammonia.json b/src/main/resources/data/forge/tags/fluids/ammonia.json deleted file mode 100644 index 800f0bbc..00000000 --- a/src/main/resources/data/forge/tags/fluids/ammonia.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:fluidammonia" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/fluids/uranium_hexafluoride.json b/src/main/resources/data/forge/tags/fluids/uranium_hexafluoride.json deleted file mode 100644 index ce683a31..00000000 --- a/src/main/resources/data/forge/tags/fluids/uranium_hexafluoride.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:fluiduraniumhexafluoride" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/cells/antimatterlarge.json b/src/main/resources/data/forge/tags/items/cells/antimatterlarge.json deleted file mode 100644 index 77b59d70..00000000 --- a/src/main/resources/data/forge/tags/items/cells/antimatterlarge.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:cellantimatterlarge" - ] -} diff --git a/src/main/resources/data/forge/tags/items/cells/antimattersmall.json b/src/main/resources/data/forge/tags/items/cells/antimattersmall.json deleted file mode 100644 index 257fccb7..00000000 --- a/src/main/resources/data/forge/tags/items/cells/antimattersmall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:cellantimattersmall" - ] -} diff --git a/src/main/resources/data/forge/tags/items/cells/antimatterverylarge.json b/src/main/resources/data/forge/tags/items/cells/antimatterverylarge.json deleted file mode 100644 index 30657eb1..00000000 --- a/src/main/resources/data/forge/tags/items/cells/antimatterverylarge.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:cellantimatterverylarge" - ] -} diff --git a/src/main/resources/data/forge/tags/items/cells/darkmatter.json b/src/main/resources/data/forge/tags/items/cells/darkmatter.json deleted file mode 100644 index ecd08637..00000000 --- a/src/main/resources/data/forge/tags/items/cells/darkmatter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:celldarkmatter" - ] -} diff --git a/src/main/resources/data/forge/tags/items/dusts/thorium.json b/src/main/resources/data/forge/tags/items/dusts/thorium.json deleted file mode 100644 index 80fd383f..00000000 --- a/src/main/resources/data/forge/tags/items/dusts/thorium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:thorianitedust" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/fuels/heuo2.json b/src/main/resources/data/forge/tags/items/fuels/heuo2.json deleted file mode 100644 index 7ba1e9fe..00000000 --- a/src/main/resources/data/forge/tags/items/fuels/heuo2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:fuelheuo2" - ] -} diff --git a/src/main/resources/data/forge/tags/items/fuels/leuo2.json b/src/main/resources/data/forge/tags/items/fuels/leuo2.json deleted file mode 100644 index c3a199ba..00000000 --- a/src/main/resources/data/forge/tags/items/fuels/leuo2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:fuelleuo2" - ] -} diff --git a/src/main/resources/data/forge/tags/items/pellets/msrsalthg.json b/src/main/resources/data/forge/tags/items/pellets/msrsalthg.json deleted file mode 100644 index 6b9756c8..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/msrsalthg.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:flinak" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/pellets/msrsaltlg.json b/src/main/resources/data/forge/tags/items/pellets/msrsaltlg.json deleted file mode 100644 index b649049d..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/msrsaltlg.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:lifthf4uf4" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/pellets/plutonium.json b/src/main/resources/data/forge/tags/items/pellets/plutonium.json deleted file mode 100644 index a7653aba..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/plutonium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:plutonium239" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/pellets/polonium.json b/src/main/resources/data/forge/tags/items/pellets/polonium.json deleted file mode 100644 index 4cb8196f..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/polonium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:polonium210" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/pellets/uranium235.json b/src/main/resources/data/forge/tags/items/pellets/uranium235.json deleted file mode 100644 index 87a31154..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/uranium235.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:uranium235" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/pellets/uranium238.json b/src/main/resources/data/forge/tags/items/pellets/uranium238.json deleted file mode 100644 index 98070aa0..00000000 --- a/src/main/resources/data/forge/tags/items/pellets/uranium238.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:uranium238" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/yellow_cake_uranium.json b/src/main/resources/data/forge/tags/items/yellow_cake_uranium.json deleted file mode 100644 index d3ff59ec..00000000 --- a/src/main/resources/data/forge/tags/items/yellow_cake_uranium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace" : false, - "values" : [ - "nuclearscience:yellowcake" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/blocknames.txt b/src/main/resources/data/minecraft/tags/blocks/mineable/blocknames.txt deleted file mode 100644 index f07ff4e3..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/mineable/blocknames.txt +++ /dev/null @@ -1,27 +0,0 @@ -"nuclearscience:blocklead", -"nuclearscience:chemicalextractor", -"nuclearscience:controlrodassembly", -"nuclearscience:electromagnet", -"nuclearscience:electromagneticbooster", -"nuclearscience:electromagneticglass", -"nuclearscience:electromagneticswitch", -"nuclearscience:freezeplug", -"nuclearscience:fuelreprocessor", -"nuclearscience:fusionreactorcore", -"nuclearscience:gascentrifuge", -"nuclearscience:heatexchanger", -"nuclearscience:meltedreactor", -"nuclearscience:moltensaltpipevanadiumsteelceramic", -"nuclearscience:moltensaltsupplier", -"nuclearscience:msrfuelpreprocessor", -"nuclearscience:msrreactorcore", -"nuclearscience:nuclearboiler", -"nuclearscience:particleinjector", -"nuclearscience:plasma", -"nuclearscience:quantumcapacitor", -"nuclearscience:radioactiveprocessor", -"nuclearscience:radioactivesoil", -"nuclearscience:radioisotopegenerator", -"nuclearscience:reactorcore", -"nuclearscience:teleporter", -"nuclearscience:turbine" diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json deleted file mode 100644 index b1f712f2..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "replace":false, - "values": [ - "nuclearscience:blocklead", - "nuclearscience:chemicalextractor", - "nuclearscience:controlrodassembly", - "nuclearscience:electromagnet", - "nuclearscience:electromagneticbooster", - "nuclearscience:electromagneticglass", - "nuclearscience:electromagneticswitch", - "nuclearscience:freezeplug", - "nuclearscience:fuelreprocessor", - "nuclearscience:fusionreactorcore", - "nuclearscience:gascentrifuge", - "nuclearscience:heatexchanger", - "nuclearscience:meltedreactor", - "nuclearscience:moltensaltpipevanadiumsteelceramic", - "nuclearscience:moltensaltsupplier", - "nuclearscience:msrfuelpreprocessor", - "nuclearscience:msrreactorcore", - "nuclearscience:nuclearboiler", - "nuclearscience:particleinjector", - "nuclearscience:quantumcapacitor", - "nuclearscience:atomicassembler", - "nuclearscience:radioactiveprocessor", - "nuclearscience:radioisotopegenerator", - "nuclearscience:reactorcore", - "nuclearscience:teleporter", - "nuclearscience:turbine" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json b/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json deleted file mode 100644 index 41b5459d..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace":false, - "values": [ - "nuclearscience:radioactivesoil" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json deleted file mode 100644 index 149b7941..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_gold_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_gold_tool.json deleted file mode 100644 index 149b7941..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_gold_tool.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json deleted file mode 100644 index 149b7941..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_netherite_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_netherite_tool.json deleted file mode 100644 index 149b7941..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_netherite_tool.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json deleted file mode 100644 index 7c617220..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "replace": false, - "values": [ - "nuclearscience:blocklead", - "nuclearscience:chemicalextractor", - "nuclearscience:controlrodassembly", - "nuclearscience:electromagnet", - "nuclearscience:electromagneticbooster", - "nuclearscience:electromagneticglass", - "nuclearscience:electromagneticswitch", - "nuclearscience:freezeplug", - "nuclearscience:fuelreprocessor", - "nuclearscience:fusionreactorcore", - "nuclearscience:gascentrifuge", - "nuclearscience:heatexchanger", - "nuclearscience:meltedreactor", - "nuclearscience:moltensaltpipevanadiumsteelceramic", - "nuclearscience:moltensaltsupplier", - "nuclearscience:msrfuelpreprocessor", - "nuclearscience:msrreactorcore", - "nuclearscience:nuclearboiler", - "nuclearscience:particleinjector", - "nuclearscience:quantumcapacitor", - "nuclearscience:radioactiveprocessor", - "nuclearscience:radioisotopegenerator", - "nuclearscience:reactorcore", - "nuclearscience:teleporter", - "nuclearscience:turbine", - "nuclearscience:radioactivesoil", - "nuclearscience:atomicassembler" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_wooden_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_wooden_tool.json deleted file mode 100644 index 149b7941..00000000 --- a/src/main/resources/data/minecraft/tags/blocks/needs_wooden_tool.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - - ] -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/antidote.json b/src/main/resources/data/nuclearscience/recipes/antidote.json deleted file mode 100644 index b8bc09df..00000000 --- a/src/main/resources/data/nuclearscience/recipes/antidote.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "minecraft:glass_bottle" - }, - { - "item": "minecraft:glass_bottle" - }, - { - "item": "minecraft:glass_bottle" - }, - { - "tag": "minecraft:fishes" - } - ], - "result": { - "item": "nuclearscience:antidote", - "count": 3 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/atomicassembler.json b/src/main/resources/data/nuclearscience/recipes/atomicassembler.json deleted file mode 100644 index 3488709f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/atomicassembler.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type" : "minecraft:crafting_shaped", - "pattern" : [ "ccc", "sgs", "sss" ], - "key" : { - "g" : { - "item" : "nuclearscience:gascentrifuge" - }, - "c" : { - "tag" : "forge:circuits/elite" - }, - "s" : { - "tag" : "forge:plates/steel" - } - }, - "result" : { - "item" : "nuclearscience:atomicassembler", - "count" : 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/blocklead.json b/src/main/resources/data/nuclearscience/recipes/blocklead.json deleted file mode 100644 index 551761a8..00000000 --- a/src/main/resources/data/nuclearscience/recipes/blocklead.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "GGG", - "###" - ], - "key": { - "#": { - "tag": "forge:plates/lead" - }, - "G": { - "item": "electrodynamics:ceramicplate" - } - }, - "result": { - "item": "nuclearscience:blocklead", - "count": 2 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/canisterlead.json b/src/main/resources/data/nuclearscience/recipes/canisterlead.json deleted file mode 100644 index 260cf441..00000000 --- a/src/main/resources/data/nuclearscience/recipes/canisterlead.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "VLV", - "LCL", - "VLV" - ], - "key": { - "L": { - "tag": "forge:plates/lead" - }, - "C": { - "item": "electrodynamics:canisterreinforced" - }, - "V": { - "tag": "forge:plates/vanadiumsteel" - } - }, - "result": { - "item": "nuclearscience:canisterlead", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/cellantimatterlarge.json b/src/main/resources/data/nuclearscience/recipes/cellantimatterlarge.json deleted file mode 100644 index 95b2c3c3..00000000 --- a/src/main/resources/data/nuclearscience/recipes/cellantimatterlarge.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - }, - { - "tag": "forge:cells/antimattersmall" - } - ], - "result": { - "item": "nuclearscience:cellantimatterlarge", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/cellantimatterverylarge.json b/src/main/resources/data/nuclearscience/recipes/cellantimatterverylarge.json deleted file mode 100644 index dd395c82..00000000 --- a/src/main/resources/data/nuclearscience/recipes/cellantimatterverylarge.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:cells/antimatterlarge" - }, - { - "tag": "forge:cells/antimatterlarge" - }, - { - "tag": "forge:cells/antimatterlarge" - } - ], - "result": { - "item": "nuclearscience:cellantimatterverylarge", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/cellelectromagnetic.json b/src/main/resources/data/nuclearscience/recipes/cellelectromagnetic.json deleted file mode 100644 index 85fc295c..00000000 --- a/src/main/resources/data/nuclearscience/recipes/cellelectromagnetic.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " c ", - "csc", - " c " - ], - "key": { - "c": { - "item": "electrodynamics:coil" - }, - "s": { - "item": "nuclearscience:cellempty" - } - }, - "result": { - "item": "nuclearscience:cellelectromagnetic", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/cellempty1.json b/src/main/resources/data/nuclearscience/recipes/cellempty1.json deleted file mode 100644 index 97732e9a..00000000 --- a/src/main/resources/data/nuclearscience/recipes/cellempty1.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "gtg", - "t t", - "gtg" - ], - "key": { - "t": { - "tag": "forge:ingots/tin" - }, - "g": { - "item": "minecraft:glass" - } - }, - "result": { - "item": "nuclearscience:cellempty", - "count": 4 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/cellempty2.json b/src/main/resources/data/nuclearscience/recipes/cellempty2.json deleted file mode 100644 index ad616a43..00000000 --- a/src/main/resources/data/nuclearscience/recipes/cellempty2.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "gtg", - "t t", - "gtg" - ], - "key": { - "t": { - "tag": "forge:ingots/tin" - }, - "g": { - "item": "electrodynamics:glassclear" - } - }, - "result": { - "item": "nuclearscience:cellempty", - "count": 6 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/chemicalextractor.json b/src/main/resources/data/nuclearscience/recipes/chemicalextractor.json deleted file mode 100644 index 3bca55e4..00000000 --- a/src/main/resources/data/nuclearscience/recipes/chemicalextractor.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "sps", - "mam", - "sps" - ], - "key": { - "p": { - "tag": "forge:plates/steel" - }, - "s": { - "tag": "forge:ingots/steel" - }, - "a": { - "tag": "forge:circuits/advanced" - }, - "m": { - "item": "electrodynamics:motor" - } - }, - "result": { - "item": "nuclearscience:chemicalextractor", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/controlrodassembly.json b/src/main/resources/data/nuclearscience/recipes/controlrodassembly.json deleted file mode 100644 index b1b7cb29..00000000 --- a/src/main/resources/data/nuclearscience/recipes/controlrodassembly.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SsS", - " P ", - "SAS" - ], - "key": { - "S": { - "tag": "forge:plates/steel" - }, - "s": { - "tag": "forge:ingots/silver" - }, - "P": { - "item": "minecraft:piston" - }, - "A": { - "tag": "forge:circuits/advanced" - } - }, - "result": { - "item": "nuclearscience:controlrodassembly", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/electromagnet1.json b/src/main/resources/data/nuclearscience/recipes/electromagnet1.json deleted file mode 100644 index 1e409e2c..00000000 --- a/src/main/resources/data/nuclearscience/recipes/electromagnet1.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "bsb", - "sms", - "bsb" - ], - "key": { - "b": { - "tag": "forge:plates/bronze" - }, - "s": { - "tag": "forge:plates/steel" - }, - "m": { - "item": "electrodynamics:motor" - } - }, - "result": { - "item": "nuclearscience:electromagnet", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/electromagnet2.json b/src/main/resources/data/nuclearscience/recipes/electromagnet2.json deleted file mode 100644 index 6005e120..00000000 --- a/src/main/resources/data/nuclearscience/recipes/electromagnet2.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "THT", - "HmH", - "THT" - ], - "key": { - "T": { - "tag": "forge:plates/titanium" - }, - "H": { - "tag": "forge:plates/hslasteel" - }, - "m": { - "item": "electrodynamics:motor" - } - }, - "result": { - "item": "nuclearscience:electromagnet", - "count": 6 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/electromagneticbooster.json b/src/main/resources/data/nuclearscience/recipes/electromagneticbooster.json deleted file mode 100644 index 24a6c713..00000000 --- a/src/main/resources/data/nuclearscience/recipes/electromagneticbooster.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "nuclearscience:electromagneticglass" - }, - { - "item": "nuclearscience:electromagneticglass" - }, - { - "item": "nuclearscience:electromagnet" - } - ], - "result": { - "item": "nuclearscience:electromagneticbooster", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/electromagneticglass.json b/src/main/resources/data/nuclearscience/recipes/electromagneticglass.json deleted file mode 100644 index ca6d17b8..00000000 --- a/src/main/resources/data/nuclearscience/recipes/electromagneticglass.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "minecraft:glass" - }, - { - "item": "nuclearscience:electromagnet" - } - ], - "result": { - "item": "nuclearscience:electromagneticglass", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/electromagneticswitch.json b/src/main/resources/data/nuclearscience/recipes/electromagneticswitch.json deleted file mode 100644 index e075def8..00000000 --- a/src/main/resources/data/nuclearscience/recipes/electromagneticswitch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "nuclearscience:electromagneticbooster" - }, - { - "item": "minecraft:dispenser" - } - ], - "result": { - "item": "nuclearscience:electromagneticswitch", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ammonia.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ammonia.json deleted file mode 100644 index 6dad57d5..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ammonia.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "electrodynamics:chemical_mixer_recipe", - "iteminputs": { - "count" : 1, - "0" : { - "tag": "forge:dusts/saltpeter", - "count": 1 - } - }, - "fluidinputs": { - "count" : 1, - "0" : { - "fluid": "minecraft:water", - "amount": 1000 - } - }, - "output": { - "fluid": "nuclearscience:fluidammonia", - "amount": 1000 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ironsulfate.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ironsulfate.json deleted file mode 100644 index c3fe4f9e..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/chemicalmixer/ironsulfate.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "electrodynamics:chemical_mixer_recipe", - "iteminputs": { - "count" : 1, - "0" : { - "tag": "forge:storage_blocks/iron", - "count": 1 - } - }, - "fluidinputs": { - "count" : 1, - "0" : { - "tag":"forge:sulfuric_acid", - "amount": 1000 - } - }, - "output": { - "fluid": "electrodynamics:fluidsulfateiron", - "amount": 1000 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_upellet.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_upellet.json deleted file mode 100644 index cf08bafc..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_upellet.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "nuclearscience:nuclear_boiler_recipe", - "iteminputs": { - "count" : 1, - "0" : { - "tag": "forge:pellets/uranium238", - "count": 1 - } - }, - "fluidinputs": { - "count" : 1, - "0" : { - "tag":"forge:hydrofluoric_acid", - "amount": 1600 - } - }, - "output": { - "fluid": "nuclearscience:fluiduraniumhexafluoride", - "amount": 2000 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_yellowcake.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_yellowcake.json deleted file mode 100644 index 193c15a3..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2fluid/nuclearboiler/uhex_from_yellowcake.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "nuclearscience:nuclear_boiler_recipe", - "iteminputs": { - "count" : 1, - "0" : { - "tag": "forge:yellow_cake_uranium", - "count": 1 - } - }, - "fluidinputs": { - "count" : 1, - "0" : { - "tag":"forge:hydrofluoric_acid", - "amount": 800 - } - }, - "output": { - "fluid": "nuclearscience:fluiduraniumhexafluoride", - "amount": 2500 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/deuterium_cell.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/deuterium_cell.json deleted file mode 100644 index d1d7f51f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/deuterium_cell.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type" : "nuclearscience:chemical_extractor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:cellheavywater", - "count":1 - } - }, - "fluidinputs":{ - "count" : 1, - "0" : { - "fluid":"minecraft:water", - "amount": 4800 - } - }, - "output":{ - "item":"nuclearscience:celldeuterium", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/heavy_water_cell.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/heavy_water_cell.json deleted file mode 100644 index c79d24b1..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/heavy_water_cell.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type" : "nuclearscience:chemical_extractor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:cellempty", - "count":1 - } - }, - "fluidinputs":{ - "count" : 1, - "0": { - "fluid":"minecraft:water", - "amount": 4800 - } - }, - "output":{ - "item":"nuclearscience:cellheavywater", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/yellowcake.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/yellowcake.json deleted file mode 100644 index d9f2a1b2..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/chemicalextractor/yellowcake.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type" : "nuclearscience:chemical_extractor_recipe", - - "iteminputs":{ - "count" : 1, - "0":{ - "tag":"forge:raw_materials/uranium", - "count":1 - } - }, - "fluidinputs":{ - "count" : 1, - "0" : { - "fluid":"minecraft:water", - "amount": 1600 - } - }, - "output":{ - "item":"nuclearscience:yellowcake", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/flinak.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/flinak.json deleted file mode 100644 index 4a676ebd..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/flinak.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "nuclearscience:msrfuel_preprocessor_recipe", - "iteminputs": { - "count" : 3, - "0" : { - "tag": "forge:dusts/salt", - "count": 1 - }, - "1": { - "tag": "forge:dusts/lithium", - "count": 1 - }, - "2": { - "item": "electrodynamics:crystalpotassiumchloride", - "count": 1 - } - }, - "fluidinputs": { - "count" : 1, - "0" : { - "tag":"forge:hydrofluoric_acid", - "amount": 1500 - } - }, - "output": { - "item": "nuclearscience:flinak", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/lifthf4uf4.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/lifthf4uf4.json deleted file mode 100644 index d9eed12e..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/msrfuelprocessor/lifthf4uf4.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "nuclearscience:msrfuel_preprocessor_recipe", - "iteminputs": { - "count" : 3, - "0" : { - "tag": "forge:dusts/lithium", - "count": 1 - }, - "1": { - "tag": "forge:dusts/thorium", - "count": 2 - }, - "2": { - "tag": "forge:yellow_cake_uranium", - "count": 2 - } - }, - "fluidinputs": { - "count" : 1, - "0": { - "tag":"forge:hydrofluoric_acid", - "amount": 2500 - } - }, - "output": { - "item": "nuclearscience:lifthf4uf4", - "count": 5 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/plutoniumoxide.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/plutoniumoxide.json deleted file mode 100644 index 314a45cf..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/plutoniumoxide.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type" : "nuclearscience:radioactive_processor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:fissiledust", - "count":2 - } - }, - "fluidinputs":{ - "count" : 1, - "0" : { - "tag":"forge:iron_sulfate", - "amount": 3000 - } - }, - "output":{ - "item":"nuclearscience:plutoniumoxide", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/thorianitedust.json b/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/thorianitedust.json deleted file mode 100644 index 51c61fb3..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fluiditem2item/radioactiveprocessor/thorianitedust.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type" : "nuclearscience:radioactive_processor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "tag":"forge:raw_materials/thorium", - "count":1 - } - }, - "fluidinputs":{ - "count" : 1, - "0" : { - "tag":"forge:sulfuric_acid", - "amount": 1000 - } - }, - "output":{ - "item": "nuclearscience:thorianitedust", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/freezeplug.json b/src/main/resources/data/nuclearscience/recipes/freezeplug.json deleted file mode 100644 index c61b0a27..00000000 --- a/src/main/resources/data/nuclearscience/recipes/freezeplug.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SCS", - "SCS", - "SBS" - ], - "key": { - "S": { - "tag": "forge:plates/stainlesssteel" - }, - "C": { - "tag": "forge:storage_blocks/copper" - }, - "B": { - "tag": "forge:storage_blocks/stainlesssteel" - } - }, - "result": { - "item": "nuclearscience:freezeplug", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/frequencycard.json b/src/main/resources/data/nuclearscience/recipes/frequencycard.json deleted file mode 100644 index 2b66e2e8..00000000 --- a/src/main/resources/data/nuclearscience/recipes/frequencycard.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "MTM", - " # " - ], - "key": { - "#": { - "tag": "forge:plates/iron" - }, - "M": { - "item": "electrodynamics:wirecopper" - }, - "T": { - "tag": "forge:circuits/basic" - } - }, - "result": { - "item": "nuclearscience:frequencycard", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/frequencycardclear.json b/src/main/resources/data/nuclearscience/recipes/frequencycardclear.json deleted file mode 100644 index 31037acd..00000000 --- a/src/main/resources/data/nuclearscience/recipes/frequencycardclear.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "nuclearscience:frequencycard" - } - ], - "result": { - "item": "nuclearscience:frequencycard", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fuelheuo2.json b/src/main/resources/data/nuclearscience/recipes/fuelheuo2.json deleted file mode 100644 index 4433917c..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fuelheuo2.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "gyg", - "gug", - "gyg" - ], - "key": { - "g": { - "item": "minecraft:glass" - }, - "u": { - "tag": "forge:pellets/uranium235" - }, - "y": { - "tag": "forge:pellets/uranium238" - } - }, - "result": { - "item": "nuclearscience:fuelheuo2", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fuelleuo2.json b/src/main/resources/data/nuclearscience/recipes/fuelleuo2.json deleted file mode 100644 index c70ddb7a..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fuelleuo2.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "gug", - "gug", - "gug" - ], - "key": { - "g": { - "item": "minecraft:glass" - }, - "u": { - "tag": "forge:pellets/uranium238" - } - }, - "result": { - "item": "nuclearscience:fuelleuo2", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fuelplutonium.json b/src/main/resources/data/nuclearscience/recipes/fuelplutonium.json deleted file mode 100644 index 0afeaa6a..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fuelplutonium.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "gpg", - "gpg", - "gpg" - ], - "key": { - "g": { - "item": "minecraft:glass" - }, - "p": { - "tag": "forge:pellets/plutonium" - } - }, - "result": { - "item": "nuclearscience:fuelplutonium", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/fuelreprocessor.json b/src/main/resources/data/nuclearscience/recipes/fuelreprocessor.json deleted file mode 100644 index e60ff838..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fuelreprocessor.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "vsv", - "sts", - "vsv" - ], - "key": { - "v": { - "tag": "forge:plates/vanadiumsteel" - }, - "s": { - "tag": "forge:plates/stainlesssteel" - }, - "t": { - "item": "electrodynamics:titaniumheatcoil" - } - }, - "result": { - "item": "nuclearscience:fuelreprocessor", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/fusionreactorcore.json b/src/main/resources/data/nuclearscience/recipes/fusionreactorcore.json deleted file mode 100644 index 333b7dc5..00000000 --- a/src/main/resources/data/nuclearscience/recipes/fusionreactorcore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "sus", - "uru", - "sus" - ], - "key": { - "s": { - "item": "nuclearscience:electromagnet" - }, - "u": { - "tag": "forge:circuits/ultimate" - }, - "r": { - "item": "nuclearscience:msrreactorcore" - } - }, - "result": { - "item": "nuclearscience:fusionreactorcore", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/gascentrifuge.json b/src/main/resources/data/nuclearscience/recipes/gascentrifuge.json deleted file mode 100644 index 608d9b33..00000000 --- a/src/main/resources/data/nuclearscience/recipes/gascentrifuge.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "ses", - "cgc", - "pmp" - ], - "key": { - "s": { - "tag": "forge:plates/steel" - }, - "p": { - "tag": "forge:plates/bronze" - }, - "e": { - "tag": "forge:circuits/elite" - }, - "m": { - "item": "electrodynamics:motor" - }, - "c": { - "item": "nuclearscience:cellempty" - }, - "g": { - "tag": "forge:gears/steel" - } - }, - "result": { - "item": "nuclearscience:gascentrifuge", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/geigercounter.json b/src/main/resources/data/nuclearscience/recipes/geigercounter.json deleted file mode 100644 index 73bd25bd..00000000 --- a/src/main/resources/data/nuclearscience/recipes/geigercounter.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "sss", - "scs", - "sbs" - ], - "key": { - "s": { - "tag": "forge:plates/steel" - }, - "b": { - "tag": "forge:circuits/basic" - }, - "c": { - "item": "electrodynamics:coil" - } - }, - "result": { - "item": "nuclearscience:geigercounter", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/hazmatboots.json b/src/main/resources/data/nuclearscience/recipes/hazmatboots.json deleted file mode 100644 index d81c3c47..00000000 --- a/src/main/resources/data/nuclearscience/recipes/hazmatboots.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "www", - "sis", - "wcw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "c": { - "tag": "forge:circuits/basic" - }, - "i": { - "item": "minecraft:leather_boots" - } - }, - "result": { - "item": "nuclearscience:hazmatboots", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/hazmathelmet.json b/src/main/resources/data/nuclearscience/recipes/hazmathelmet.json deleted file mode 100644 index f101a77b..00000000 --- a/src/main/resources/data/nuclearscience/recipes/hazmathelmet.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "www", - "sis", - "wcw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "c": { - "tag": "forge:circuits/basic" - }, - "i": { - "item": "minecraft:leather_helmet" - } - }, - "result": { - "item": "nuclearscience:hazmathelmet", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/hazmatlegs.json b/src/main/resources/data/nuclearscience/recipes/hazmatlegs.json deleted file mode 100644 index 0ea24507..00000000 --- a/src/main/resources/data/nuclearscience/recipes/hazmatlegs.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "www", - "sis", - "wcw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "c": { - "tag": "forge:circuits/basic" - }, - "i": { - "item": "minecraft:leather_leggings" - } - }, - "result": { - "item": "nuclearscience:hazmatlegs", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/hazmatplate.json b/src/main/resources/data/nuclearscience/recipes/hazmatplate.json deleted file mode 100644 index 19fd2b01..00000000 --- a/src/main/resources/data/nuclearscience/recipes/hazmatplate.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "www", - "sis", - "wcw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "c": { - "tag": "forge:circuits/basic" - }, - "i": { - "item": "minecraft:leather_chestplate" - } - }, - "result": { - "item": "nuclearscience:hazmatplate", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/heatexchanger.json b/src/main/resources/data/nuclearscience/recipes/heatexchanger.json deleted file mode 100644 index dd83c4a1..00000000 --- a/src/main/resources/data/nuclearscience/recipes/heatexchanger.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "sss", - "sss", - "SCS" - ], - "key": { - "S": { - "tag": "forge:plates/stainlesssteel" - }, - "s": { - "tag": "forge:ingots/silver" - }, - "C": { - "tag": "forge:storage_blocks/copper" - } - }, - "result": { - "item": "nuclearscience:heatexchanger", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/item2item/fissionreactor/tritium_cell.json b/src/main/resources/data/nuclearscience/recipes/item2item/fissionreactor/tritium_cell.json deleted file mode 100644 index 9adb931c..00000000 --- a/src/main/resources/data/nuclearscience/recipes/item2item/fissionreactor/tritium_cell.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type" : "nuclearscience:fission_reactor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:celldeuterium", - "count":1 - } - }, - "output":{ - "item":"nuclearscience:celltritium", - "count":1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/fissiledust.json b/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/fissiledust.json deleted file mode 100644 index d472470d..00000000 --- a/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/fissiledust.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type" : "nuclearscience:fuel_reprocessor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:fuelspent", - "count":1 - } - }, - "output":{ - "item":"nuclearscience:fissiledust", - "count":1 - }, - "itembi" : { - "count" : 1, - "0" : { - "item" : "nuclearscience:polonium210chunk", - "count" : 1, - "chance" : 0.5 - } - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/plutonium239.json b/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/plutonium239.json deleted file mode 100644 index b99c1899..00000000 --- a/src/main/resources/data/nuclearscience/recipes/item2item/fuelreprocessor/plutonium239.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type" : "nuclearscience:fuel_reprocessor_recipe", - - "iteminputs":{ - "count" : 1, - "0" : { - "item":"nuclearscience:plutoniumoxide", - "count":1 - } - }, - "output":{ - "item":"nuclearscience:plutonium239", - "count":1 - }, - "itembi" : { - "count" : 1, - "0" : { - "item" : "nuclearscience:polonium210chunk", - "count" : 3, - "chance" : 1 - } - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/moltensaltpipe.json b/src/main/resources/data/nuclearscience/recipes/moltensaltpipe.json deleted file mode 100644 index c44e094f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/moltensaltpipe.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "CCC", - "VVV", - "CCC" - ], - "key": { - "C": { - "item": "electrodynamics:ceramicplate" - }, - "V": { - "tag": "forge:plates/vanadiumsteel" - } - }, - "result": { - "item": "nuclearscience:moltensaltpipevanadiumsteelceramic", - "count": 2 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/moltensaltsupplier.json b/src/main/resources/data/nuclearscience/recipes/moltensaltsupplier.json deleted file mode 100644 index 83506eb9..00000000 --- a/src/main/resources/data/nuclearscience/recipes/moltensaltsupplier.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SVS", - "TTT", - "SVS" - ], - "key": { - "S": { - "tag": "forge:plates/stainlesssteel" - }, - "V": { - "tag": "forge:plates/vanadiumsteel" - }, - "T": { - "item": "electrodynamics:titaniumheatcoil" - } - }, - "result": { - "item": "nuclearscience:moltensaltsupplier", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json b/src/main/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json deleted file mode 100644 index 73479127..00000000 --- a/src/main/resources/data/nuclearscience/recipes/msrfuelpreprocessor.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "VLV", - "LCL", - "VEV" - ], - "key": { - "L": { - "tag": "forge:plates/lead" - }, - "C": { - "item": "electrodynamics:chemicalmixer" - }, - "V": { - "tag": "forge:plates/vanadiumsteel" - }, - "E": { - "tag": "forge:circuits/elite" - } - }, - "result": { - "item": "nuclearscience:msrfuelpreprocessor", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/msrreactorcore.json b/src/main/resources/data/nuclearscience/recipes/msrreactorcore.json deleted file mode 100644 index 5b574f6c..00000000 --- a/src/main/resources/data/nuclearscience/recipes/msrreactorcore.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SVS", - "VRV", - "SPS" - ], - "key": { - "S": { - "tag": "forge:plates/stainlesssteel" - }, - "R": { - "item": "nuclearscience:reactorcore" - }, - "V": { - "tag": "forge:plates/vanadiumsteel" - }, - "P": { - "tag": "forge:pellets/plutonium" - } - }, - "result": { - "item": "nuclearscience:msrreactorcore", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/nuclearboiler.json b/src/main/resources/data/nuclearscience/recipes/nuclearboiler.json deleted file mode 100644 index d166d387..00000000 --- a/src/main/resources/data/nuclearscience/recipes/nuclearboiler.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "pap", - "efe", - "pmp" - ], - "key": { - "p": { - "tag": "forge:plates/steel" - }, - "a": { - "tag": "forge:circuits/advanced" - }, - "m": { - "item": "electrodynamics:motor" - }, - "e": { - "item": "nuclearscience:cellempty" - }, - "f": { - "item": "electrodynamics:electricfurnace" - } - }, - "result": { - "item": "nuclearscience:nuclearboiler", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/particleinjector.json b/src/main/resources/data/nuclearscience/recipes/particleinjector.json deleted file mode 100644 index dbb727c4..00000000 --- a/src/main/resources/data/nuclearscience/recipes/particleinjector.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "ete", - "udu", - "ete" - ], - "key": { - "e": { - "item": "nuclearscience:electromagnet" - }, - "u": { - "tag": "forge:circuits/ultimate" - }, - "d": { - "item": "minecraft:dispenser" - }, - "t": { - "item": "electrodynamics:upgradetransformer" - } - }, - "result": { - "item": "nuclearscience:particleinjector", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/polonium210.json b/src/main/resources/data/nuclearscience/recipes/polonium210.json deleted file mode 100644 index a34bc6a0..00000000 --- a/src/main/resources/data/nuclearscience/recipes/polonium210.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "pp", - "pp" - ], - "key": { - "p": { - "item": "nuclearscience:polonium210chunk" - } - }, - "result": { - "item": "nuclearscience:polonium210", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/quantumcapacitor.json b/src/main/resources/data/nuclearscience/recipes/quantumcapacitor.json deleted file mode 100644 index 5571ea5e..00000000 --- a/src/main/resources/data/nuclearscience/recipes/quantumcapacitor.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "dcd", - "fdf", - "dcd" - ], - "key": { - "d": { - "tag": "forge:cells/darkmatter" - }, - "c": { - "tag": "forge:circuits/ultimate" - }, - "f": { - "item": "nuclearscience:fusionreactorcore" - } - }, - "result": { - "item": "nuclearscience:quantumcapacitor", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/radioactiveprocessor.json b/src/main/resources/data/nuclearscience/recipes/radioactiveprocessor.json deleted file mode 100644 index 5463b734..00000000 --- a/src/main/resources/data/nuclearscience/recipes/radioactiveprocessor.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "vtv", - "vmv", - "vcv" - ], - "key": { - "v": { - "tag": "forge:plates/vanadiumsteel" - }, - "c": { - "tag": "forge:circuits/ultimate" - }, - "m": { - "item": "electrodynamics:chemicalmixer" - }, - "t": { - "item": "electrodynamics:titaniumheatcoil" - } - }, - "result": { - "item": "nuclearscience:radioactiveprocessor", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/radioisotopegenerator.json b/src/main/resources/data/nuclearscience/recipes/radioisotopegenerator.json deleted file mode 100644 index 1d8a0462..00000000 --- a/src/main/resources/data/nuclearscience/recipes/radioisotopegenerator.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "vav", - "lcl", - "vav" - ], - "key": { - "v": { - "tag": "forge:plates/vanadiumsteel" - }, - "l": { - "tag": "forge:plates/lead" - }, - "a": { - "tag": "forge:circuits/advanced" - }, - "c": { - "item": "nuclearscience:cellempty" - } - }, - "result": { - "item": "nuclearscience:radioisotopegenerator", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/reactorcore.json b/src/main/resources/data/nuclearscience/recipes/reactorcore.json deleted file mode 100644 index 7bc34699..00000000 --- a/src/main/resources/data/nuclearscience/recipes/reactorcore.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "sus", - "mcm", - "ses" - ], - "key": { - "s": { - "tag": "forge:plates/steel" - }, - "e": { - "tag": "forge:circuits/elite" - }, - "u": { - "tag": "forge:circuits/ultimate" - }, - "c": { - "item": "nuclearscience:cellempty" - }, - "m": { - "item": "electrodynamics:motor" - } - }, - "result": { - "item": "nuclearscience:reactorcore", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json b/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json deleted file mode 100644 index 13e413ff..00000000 --- a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatboots.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "wsw", - "sis", - "wsw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "i": { - "item": "nuclearscience:hazmatboots" - } - }, - "result": { - "item": "nuclearscience:reinforcedhazmatboots", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json b/src/main/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json deleted file mode 100644 index 81584295..00000000 --- a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmathelmet.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "wsw", - "sis", - "wsw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "i": { - "item": "nuclearscience:hazmathelmet" - } - }, - "result": { - "item": "nuclearscience:reinforcedhazmathelmet", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatlegs.json b/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatlegs.json deleted file mode 100644 index 96cedbc6..00000000 --- a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatlegs.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "wsw", - "sis", - "wsw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "i": { - "item": "nuclearscience:hazmatlegs" - } - }, - "result": { - "item": "nuclearscience:reinforcedhazmatlegs", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatplate.json b/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatplate.json deleted file mode 100644 index 9ed3814f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/reinforcedhazmatplate.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "wsw", - "sis", - "wsw" - ], - "key": { - "s": { - "tag": "forge:plates/lead" - }, - "w": { - "tag": "minecraft:wool" - }, - "i": { - "item": "nuclearscience:hazmatplate" - } - }, - "result": { - "item": "nuclearscience:reinforcedhazmatplate", - "count": 1 - } -} diff --git a/src/main/resources/data/nuclearscience/recipes/siren.json b/src/main/resources/data/nuclearscience/recipes/siren.json deleted file mode 100644 index 08525f5f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/siren.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "NPN" - ], - "key": { - "N": { - "item": "minecraft:note_block" - }, - "P": { - "tag": "forge:plates/bronze" - } - }, - "result": { - "item": "nuclearscience:siren", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/teleporter.json b/src/main/resources/data/nuclearscience/recipes/teleporter.json deleted file mode 100644 index 3ec1e730..00000000 --- a/src/main/resources/data/nuclearscience/recipes/teleporter.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "_D_", - "#B#", - "SRS" - ], - "key": { - "_": { - "tag": "forge:plates/titaniumcarbide" - }, - "D": { - "item": "electrodynamics:ceramicfuse" - }, - "#": { - "tag": "forge:plates/hslasteel" - }, - "B": { - "tag": "forge:circuits/elite" - }, - "S": { - "item": "minecraft:ender_pearl" - }, - "R": { - "item": "nuclearscience:celldarkmatter" - } - }, - "result": { - "item": "nuclearscience:teleporter", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/nuclearscience/recipes/turbine.json b/src/main/resources/data/nuclearscience/recipes/turbine.json deleted file mode 100644 index cd09e81f..00000000 --- a/src/main/resources/data/nuclearscience/recipes/turbine.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " s ", - "pmp", - " p " - ], - "key": { - "p": { - "tag": "forge:plates/steel" - }, - "m": { - "item": "electrodynamics:motor" - }, - "s": { - "item": "electrodynamics:wiregold" - } - }, - "result": { - "item": "nuclearscience:turbine", - "count": 1 - } -}