mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-27 17:28:34 +01:00
Compare commits
14 commits
659779b110
...
1207a27dbc
Author | SHA1 | Date | |
---|---|---|---|
|
1207a27dbc | ||
|
90a923bd08 | ||
|
ac4d53bde4 | ||
|
cad57217d4 | ||
|
44202f9c46 | ||
|
f0184f4d1a | ||
|
99ea93ebad | ||
|
911356adbc | ||
|
da7de46cdc | ||
|
e0a8eed365 | ||
|
d2d0afa6d7 | ||
|
8385c5aea6 | ||
|
e4e9108099 | ||
|
cf80d1746e |
47 changed files with 825 additions and 67 deletions
|
@ -37,6 +37,14 @@ runs {
|
|||
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
||||
}
|
||||
client2 {
|
||||
configure ("client")
|
||||
|
||||
programArguments.addAll '--username', 'Dev2'
|
||||
|
||||
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
||||
}
|
||||
|
||||
server {
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', "actuallyadditions"
|
||||
|
|
|
@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3G
|
|||
org.gradle.daemon=false
|
||||
# Actually Additions
|
||||
|
||||
mod_version=1.2.6
|
||||
mod_version=1.2.7
|
||||
|
||||
# Forge
|
||||
game_version=1.20.4
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.20.4 2024-03-13T16:31:58.3504382 Item Recipes
|
||||
// 1.20.4 2024-03-13T16:30:00.2078814 Item Recipes
|
||||
d374edde9294d1a224b4b5610b50117a11328c00 data/actuallyadditions/recipes/advanced_coil.json
|
||||
f67629e45d152c96f3467a90a67520f78ecf9f07 data/actuallyadditions/recipes/advanced_leaf_blower.json
|
||||
d65e5a70232fa2f0e74d2a67c1cd4b0e87124242 data/actuallyadditions/recipes/basic_coil.json
|
||||
|
@ -49,6 +49,22 @@ dd65310cce05d96449b6641f0c29982bd670d623 data/actuallyadditions/recipes/decompre
|
|||
823c7188829eb50975d857f61e33bc5c2780bb12 data/actuallyadditions/recipes/decompress/void_crystal_shard.json
|
||||
c3592647a1b6de17893a80eeb9ed214f719cc4eb data/actuallyadditions/recipes/diamond_aiot.json
|
||||
035937b870792a57c0db0b512b41f965af4c8195 data/actuallyadditions/recipes/double_battery.json
|
||||
ed2c70ef554ccdc2b64ec07966d42668a319d32b data/actuallyadditions/recipes/drill_coloring/dye_drill_black.json
|
||||
881cee08ef4c9cae7ff0549c896bc9c030a8b0f7 data/actuallyadditions/recipes/drill_coloring/dye_drill_blue.json
|
||||
cd5471712f938e4b494809e91dd5947cdbd15a6e data/actuallyadditions/recipes/drill_coloring/dye_drill_brown.json
|
||||
60a3f8cd14f2eb24787929e063abfba3c20fb01d data/actuallyadditions/recipes/drill_coloring/dye_drill_cyan.json
|
||||
618b10d9093db3ad2b33ccf53a56c89dee8a62d4 data/actuallyadditions/recipes/drill_coloring/dye_drill_gray.json
|
||||
5de54c56552fd3f448d453133adcae5456b31587 data/actuallyadditions/recipes/drill_coloring/dye_drill_green.json
|
||||
14ec8cc195f2f741464cb9f110f9eb287a546232 data/actuallyadditions/recipes/drill_coloring/dye_drill_light_blue.json
|
||||
07b386e726536b8a7e48f1332497adb76e16885e data/actuallyadditions/recipes/drill_coloring/dye_drill_light_gray.json
|
||||
80e71aca4867f58fb74f090fc37838dd114e124f data/actuallyadditions/recipes/drill_coloring/dye_drill_lime.json
|
||||
83a7d3a234441da079f014cbbf64a8cd1fcb7ec6 data/actuallyadditions/recipes/drill_coloring/dye_drill_magenta.json
|
||||
75b0919b05bae59afb8c0c852842dfd17c1d3a92 data/actuallyadditions/recipes/drill_coloring/dye_drill_orange.json
|
||||
6000e5221d29e456658861e7b35f102606a77ce0 data/actuallyadditions/recipes/drill_coloring/dye_drill_pink.json
|
||||
f24b883db19649b69dc45faf38621a91fd125f08 data/actuallyadditions/recipes/drill_coloring/dye_drill_purple.json
|
||||
36312062f28665b65da73f3e735a48cabc0d186e data/actuallyadditions/recipes/drill_coloring/dye_drill_red.json
|
||||
72a714b78e80f028771b887c6bc865c5850f2fe9 data/actuallyadditions/recipes/drill_coloring/dye_drill_white.json
|
||||
afbd032dbb1278f1edf020af0e4d5d558f58ad77 data/actuallyadditions/recipes/drill_coloring/dye_drill_yellow.json
|
||||
ac1da42089dad9779f7f8b4d143c35e910a43610 data/actuallyadditions/recipes/drill_core.json
|
||||
33dc398564081b1ea8b619650b6e292231ef957d data/actuallyadditions/recipes/drill_light_blue.json
|
||||
201358d5c3c6b02e02de6c35d0a6e62c6fe565eb data/actuallyadditions/recipes/drill_pattern.json
|
||||
|
@ -86,6 +102,7 @@ bbda1becc270cf13e6b1d8e6d873aafa0951552d data/actuallyadditions/recipes/lens_of_
|
|||
80a2e4f402acab5da96bdf3acd459fce0f930c08 data/actuallyadditions/recipes/quintuple_battery.json
|
||||
c6ff81ba878c02651a9353e490b3a8f9897a5410 data/actuallyadditions/recipes/rice_dough.json
|
||||
bc69015bae99ad4bb1a613a7367469d4401f83ae data/actuallyadditions/recipes/rice_dough_smelting.json
|
||||
36eb3f29269e14cac10af27e6cd070209446a7b8 data/actuallyadditions/recipes/rice_paper.json
|
||||
5958ff2fb37430660fb22012212336320ee83dd8 data/actuallyadditions/recipes/rice_seeds.json
|
||||
f6c73cb2e41a8a21e2fda888b28bf52672b33d2e data/actuallyadditions/recipes/rice_slime.json
|
||||
319b2d0423b79497837f5a3f940011b3bccf09f3 data/actuallyadditions/recipes/rice_slime_potion.json
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 1.20.4 2024-03-12T17:59:34.1573737 Recipes
|
||||
// 1.20.4 2024-03-13T18:06:15.6143021 Recipes
|
||||
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
|
||||
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
|
||||
dba5d4a1a79489d5766fad32f912ab1a64618854 data/actuallyadditions/recipes/bio_reactor.json
|
||||
|
@ -61,6 +61,7 @@ c7b65084e855bd7f083819ed9339320577510c6f data/actuallyadditions/recipes/phantom_
|
|||
6d3aa070e0fccbb126c80323423c9482259dd6de data/actuallyadditions/recipes/phantom_liquiface.json
|
||||
253e31ad471e2a8e20bfbe077826a8fac35fcc84 data/actuallyadditions/recipes/phantom_redstoneface.json
|
||||
8c78ebb9351b98ffe368391a391b90385c0b8b7f data/actuallyadditions/recipes/placer.json
|
||||
981e7e91216504b421d069f72920499df052e64f data/actuallyadditions/recipes/player_interface.json
|
||||
184acfb5fd3799b3fbe35150c67b6530581f8bf1 data/actuallyadditions/recipes/powered_furnace.json
|
||||
b81a706a5f635d8a63ffd3034c80838dc10699c9 data/actuallyadditions/recipes/ranged_collector.json
|
||||
532a454741e8068941f1f3c44f3be257530db8c3 data/actuallyadditions/recipes/shock_suppressor.json
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
// 1.20.4 2024-03-06T00:00:49.130919 Patchouli Book Provider
|
||||
// 1.20.4 2024-03-14T01:53:18.5540232 Patchouli Book Provider
|
||||
25f9d206f1f0397918f65634d57f658516f3c952 assets/actuallyadditions/patchouli_books/booklet/en_us/categories/getting_started.json
|
||||
7023c70c30600d465a96b315b2b7954eedad337d assets/actuallyadditions/patchouli_books/booklet/en_us/entries/crystals.json
|
||||
cb103625b78fcc79697bdc00459a21cacf0c940a assets/actuallyadditions/patchouli_books/booklet/en_us/entries/engineer_house.json
|
||||
88df6be8c958d5e89673e9eefcf73315d50bda9f assets/actuallyadditions/patchouli_books/booklet/en_us/entries/guide.json
|
||||
49e2d21f416f97f2e952ceb8e003e8497e926e03 assets/actuallyadditions/patchouli_books/booklet/en_us/entries/intro.json
|
||||
2709d2e5c13efa327c5ee6c18fe10e377d49abe3 assets/actuallyadditions/patchouli_books/booklet/en_us/entries/intro.json
|
||||
78d1f1a0d393feaf903c84d11ac2749d17779217 assets/actuallyadditions/patchouli_books/booklet/en_us/entries/tutorial.json
|
||||
10146f4dd5bab35ef00a724fab1f3762e5f7c2b9 data/actuallyadditions/patchouli_books/booklet/book.json
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"category": "actuallyadditions:getting_started",
|
||||
"icon": "actuallyadditions:booklet",
|
||||
"name": "booklet.actuallyadditions.chapter.crystals",
|
||||
"pages": [
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.crystals.text.1"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.crystals.text.2"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.crystals.text.3"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:image",
|
||||
"border": false,
|
||||
"images": [
|
||||
"actuallyadditions:textures/gui/booklet/page_atomic_reconstructor.png"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.crystals.text.5"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:atomic_reconstructor",
|
||||
"text": "booklet.actuallyadditions.chapter.crystals.text.6"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_restonia_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_restonia_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_palis_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_palis_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_diamatine_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_diamatine_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_void_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_void_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_emeradic_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_emeradic_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "actuallyadditions:reconstructor",
|
||||
"recipe": "actuallyadditions:laser/crystalize_enori_crystal_block",
|
||||
"recipe2": "actuallyadditions:laser/crystalize_enori_crystal",
|
||||
"text": "booklet.actuallyadditions.reconstructor_recipe"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/restonia_crystal",
|
||||
"recipe2": "actuallyadditions:compress/restonia_crystal_block"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/palis_crystal",
|
||||
"recipe2": "actuallyadditions:compress/palis_crystal_block"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/diamatine_crystal",
|
||||
"recipe2": "actuallyadditions:compress/diamatine_crystal_block"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/void_crystal",
|
||||
"recipe2": "actuallyadditions:compress/void_crystal_block"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/emeradic_crystal",
|
||||
"recipe2": "actuallyadditions:compress/emeradic_crystal_block"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:crafting",
|
||||
"recipe": "actuallyadditions:decompress/enori_crystal",
|
||||
"recipe2": "actuallyadditions:compress/enori_crystal_block"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"category": "actuallyadditions:getting_started",
|
||||
"icon": "actuallyadditions:booklet",
|
||||
"name": "booklet.actuallyadditions.chapter.engineer_house",
|
||||
"pages": [
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.engineer_house.text.1"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:image",
|
||||
"images": [
|
||||
"actuallyadditions:textures/gui/booklet/page_engineer_house.png"
|
||||
],
|
||||
"text": "booklet.actuallyadditions.chapter.engineer_house.text.2"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -14,6 +14,10 @@
|
|||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.intro.text.3"
|
||||
},
|
||||
{
|
||||
"type": "patchouli:text",
|
||||
"text": "booklet.actuallyadditions.chapter.intro.text.4"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/black"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_black"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/blue"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_blue"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/brown"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_brown"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/cyan"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_cyan"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/gray"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_gray"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/green"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_green"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/light_blue"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_light_blue"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/light_gray"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_light_gray"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/lime"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_lime"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/magenta"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_magenta"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/orange"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_orange"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/pink"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_pink"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/purple"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_purple"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/red"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_red"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/white"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_white"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "actuallyadditions:copy_nbt_shapeless",
|
||||
"value": {
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
{
|
||||
"type": "actuallyadditions:target_nbt",
|
||||
"value": {
|
||||
"tag": "actuallyadditions:drills"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "forge:dyes/yellow"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:drill_yellow"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"key": {
|
||||
"A": {
|
||||
"item": "actuallyadditions:advanced_coil"
|
||||
},
|
||||
"C": {
|
||||
"item": "actuallyadditions:ender_casing"
|
||||
},
|
||||
"E": {
|
||||
"item": "actuallyadditions:empowered_diamatine_crystal"
|
||||
},
|
||||
"W": {
|
||||
"item": "minecraft:wither_skeleton_skull"
|
||||
}
|
||||
},
|
||||
"pattern": [
|
||||
"CWC",
|
||||
"ECE",
|
||||
"CAC"
|
||||
],
|
||||
"result": {
|
||||
"item": "actuallyadditions:player_interface"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"key": {
|
||||
"R": {
|
||||
"item": "actuallyadditions:rice"
|
||||
}
|
||||
},
|
||||
"pattern": [
|
||||
"R ",
|
||||
" R ",
|
||||
" R"
|
||||
],
|
||||
"result": {
|
||||
"count": 3,
|
||||
"item": "minecraft:paper"
|
||||
}
|
||||
}
|
|
@ -89,6 +89,15 @@ public class BlockRecipeGenerator extends RecipeProvider {
|
|||
.define('D', ActuallyTags.Items.DRILLS)
|
||||
.save(recipeOutput);
|
||||
|
||||
// Player Interface
|
||||
Recipe.shaped(ActuallyBlocks.PLAYER_INTERFACE.getItem())
|
||||
.pattern("CWC", "ECE", "CAC")
|
||||
.define('C', ActuallyBlocks.ENDER_CASING.getItem())
|
||||
.define('W', Items.WITHER_SKELETON_SKULL)
|
||||
.define('E', ActuallyItems.EMPOWERED_DIAMATINE_CRYSTAL)
|
||||
.define('A', ActuallyItems.ADVANCED_COIL)
|
||||
.save(recipeOutput);
|
||||
|
||||
//Black Quartz Wall
|
||||
Recipe.wall(ActuallyBlocks.BLACK_QUARTZ_WALL.getItem(), ActuallyBlocks.BLACK_QUARTZ_PILLAR.get(), recipeOutput);
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package de.ellpeck.actuallyadditions.data;
|
||||
|
||||
import de.ellpeck.actuallyadditions.api.ActuallyTags;
|
||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
||||
import de.ellpeck.actuallyadditions.mod.config.conditions.BoolConfigCondition;
|
||||
import de.ellpeck.actuallyadditions.mod.crafting.RecipeKeepDataShaped;
|
||||
import de.ellpeck.actuallyadditions.mod.crafting.RecipeKeepDataShapeless;
|
||||
import de.ellpeck.actuallyadditions.mod.crafting.TargetNBTIngredient;
|
||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
||||
import de.ellpeck.actuallyadditions.mod.util.NoAdvRecipeOutput;
|
||||
|
@ -18,11 +20,13 @@ import net.minecraft.data.recipes.ShapelessRecipeBuilder;
|
|||
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.item.crafting.ShapedRecipe;
|
||||
import net.minecraft.world.item.crafting.ShapelessRecipe;
|
||||
import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.neoforged.neoforge.common.Tags;
|
||||
|
@ -185,12 +189,12 @@ public class ItemRecipeGenerator extends RecipeProvider {
|
|||
.define('S', ActuallyItems.ENORI_CRYSTAL.get()).save(recipeOutput);
|
||||
|
||||
|
||||
/* //Rice Recipes
|
||||
//Rice Recipes
|
||||
Recipe.shaped(Items.PAPER, 3)
|
||||
.pattern("R ")
|
||||
.pattern(" R ")
|
||||
.pattern(" R")
|
||||
.define('R', TheFoods.RICE).save(consumer); //TODO foods need worked on still.*/
|
||||
.define('R', ActuallyItems.RICE).save(recipeOutput, new ResourceLocation(ActuallyAdditions.MODID, "rice_paper"));
|
||||
|
||||
Recipe.shaped(ActuallyItems.RICE_SLIMEBALL.get())
|
||||
.requiresBook()
|
||||
|
@ -238,6 +242,25 @@ public class ItemRecipeGenerator extends RecipeProvider {
|
|||
.define('R', ActuallyItems.DRILL_CORE.get())
|
||||
.define('I', ActuallyItems.ENORI_CRYSTAL.get()).save(recipeOutput);
|
||||
|
||||
// Drill Colors
|
||||
dyeDrill(ActuallyItems.DRILL_BLACK, Tags.Items.DYES_BLACK, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_RED, Tags.Items.DYES_RED, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_GREEN, Tags.Items.DYES_GREEN, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_BROWN, Tags.Items.DYES_BROWN, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_BLUE, Tags.Items.DYES_BLUE, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_PURPLE, Tags.Items.DYES_PURPLE, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_CYAN, Tags.Items.DYES_CYAN, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_LIGHT_GRAY, Tags.Items.DYES_LIGHT_GRAY, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_GRAY, Tags.Items.DYES_GRAY, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_PINK, Tags.Items.DYES_PINK, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_LIME, Tags.Items.DYES_LIME, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_YELLOW, Tags.Items.DYES_YELLOW, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_MAIN, Tags.Items.DYES_LIGHT_BLUE, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_ORANGE, Tags.Items.DYES_ORANGE, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_WHITE, Tags.Items.DYES_WHITE, recipeOutput);
|
||||
dyeDrill(ActuallyItems.DRILL_MAGENTA, Tags.Items.DYES_MAGENTA, recipeOutput);
|
||||
|
||||
|
||||
//Drill Core
|
||||
Recipe.shaped(ActuallyItems.DRILL_CORE.get())
|
||||
.pattern("ICI")
|
||||
|
@ -583,7 +606,14 @@ public class ItemRecipeGenerator extends RecipeProvider {
|
|||
addPaxel(consumer, ActuallyItems.GOLD_AIOT, Items.GOLDEN_AXE, Items.GOLDEN_PICKAXE, Items.GOLDEN_SWORD, Items.GOLDEN_SHOVEL, Items.GOLDEN_HOE);
|
||||
addPaxel(consumer, ActuallyItems.DIAMOND_AIOT, Items.DIAMOND_AXE, Items.DIAMOND_PICKAXE, Items.DIAMOND_SWORD, Items.DIAMOND_SHOVEL, Items.DIAMOND_HOE);
|
||||
addPaxel(consumer, ActuallyItems.NETHERITE_AIOT, Items.NETHERITE_AXE, Items.NETHERITE_PICKAXE, Items.NETHERITE_SWORD, Items.NETHERITE_SHOVEL, Items.NETHERITE_HOE);
|
||||
}
|
||||
}
|
||||
|
||||
private static void dyeDrill(DeferredItem<? extends Item> result, TagKey<Item> dyeItem, RecipeOutput recipeOutput) {
|
||||
Recipe.shapeless(result.get())
|
||||
.requires(TargetNBTIngredient.of(ActuallyTags.Items.DRILLS))
|
||||
.requires(dyeItem)
|
||||
.save(new RecipeInjector<ShapelessRecipe>(recipeOutput, RecipeKeepDataShapeless::new), new ResourceLocation(ActuallyAdditions.MODID, "drill_coloring/dye_" + BuiltInRegistries.ITEM.getKey(result.get()).getPath()));
|
||||
}
|
||||
|
||||
public static void addPaxel(RecipeOutput consumer, DeferredItem<? extends Item> output, Item axe, Item pickaxe, Item sword, Item shovel, Item hoe) {
|
||||
Recipe.shapeless(output.get())
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package de.ellpeck.actuallyadditions.data.patchouli;
|
||||
|
||||
import de.ellpeck.actuallyadditions.data.patchouli.builder.ReconstructorPageBuilder;
|
||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
||||
import net.minecraft.data.PackOutput;
|
||||
|
@ -7,6 +8,7 @@ import net.minecraft.resources.ResourceLocation;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.BookBuilder;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.CategoryBuilder;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.EntryBuilder;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.PatchouliBookProvider;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
@ -48,8 +50,9 @@ public class PachouliGenerator extends PatchouliBookProvider {
|
|||
.addTextPage(prefix("chapter.book_tutorial.text.1")).build()
|
||||
.addTextPage(prefix("chapter.book_tutorial.text.2")).build()
|
||||
.addTextPage(prefix("chapter.book_tutorial.text.3")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "booklet"))
|
||||
.setTitle("").setText("booklet.actuallyadditions.shapeless_recipe").build();
|
||||
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "booklet")).setTitle("").setText("booklet.actuallyadditions.shapeless_recipe").build();
|
||||
gettingStarted.addEntry("guide", prefix("chapter.video_guide"), "actuallyadditions:textures/item/youtube.png")
|
||||
.addLinkPage("https://www.youtube.com/watch?v=fhjz0Ew56pM", prefix("chapter.video_guide.booty.button"))
|
||||
.setText(prefix("chapter.video_guide.booty.text.1")).build()
|
||||
|
@ -61,7 +64,53 @@ public class PachouliGenerator extends PatchouliBookProvider {
|
|||
gettingStarted.addEntry("intro", prefix("chapter.intro"), bookStack)
|
||||
.addTextPage(prefix("chapter.intro.text.1")).build()
|
||||
.addTextPage(prefix("chapter.intro.text.2")).build()
|
||||
.addTextPage(prefix("chapter.intro.text.3")).build();
|
||||
.addTextPage(prefix("chapter.intro.text.3")).build()
|
||||
.addTextPage(prefix("chapter.intro.text.4")).build();
|
||||
|
||||
gettingStarted.addEntry("engineer_house", prefix("chapter.engineer_house"), bookStack)
|
||||
.addTextPage(prefix("chapter.engineer_house.text.1")).build()
|
||||
.addImagePage(new ResourceLocation(ActuallyAdditions.MODID, "textures/gui/booklet/page_engineer_house.png"))
|
||||
.setText("booklet.actuallyadditions.chapter.engineer_house.text.2").build();
|
||||
|
||||
EntryBuilder crystalsBuilder = gettingStarted.addEntry("crystals", prefix("chapter.crystals"), bookStack)
|
||||
.addTextPage(prefix("chapter.crystals.text.1")).build()
|
||||
.addTextPage(prefix("chapter.crystals.text.2")).build()
|
||||
.addTextPage(prefix("chapter.crystals.text.3")).build()
|
||||
.addImagePage(new ResourceLocation(ActuallyAdditions.MODID, "textures/gui/booklet/page_atomic_reconstructor.png")).setBorder(false).build()
|
||||
.addTextPage(prefix("chapter.crystals.text.5")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "atomic_reconstructor"))
|
||||
.setText(prefix("chapter.crystals.text.6")).build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_restonia_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_restonia_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_palis_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_palis_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_diamatine_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_diamatine_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_void_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_void_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_emeradic_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_emeradic_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addPage(new ReconstructorPageBuilder(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_enori_crystal_block"), crystalsBuilder))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "laser/crystalize_enori_crystal"))
|
||||
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
|
||||
crystalsBuilder.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/restonia_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/restonia_crystal_block")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/palis_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/palis_crystal_block")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/diamatine_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/diamatine_crystal_block")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/void_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/void_crystal_block")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/emeradic_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/emeradic_crystal_block")).build()
|
||||
.addCraftingPage(new ResourceLocation(ActuallyAdditions.MODID, "decompress/enori_crystal"))
|
||||
.setRecipe2(new ResourceLocation(ActuallyAdditions.MODID, "compress/enori_crystal_block")).build();
|
||||
crystalsBuilder.build();
|
||||
|
||||
//End of Getting Started
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package de.ellpeck.actuallyadditions.data.patchouli.builder;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.EntryBuilder;
|
||||
import xyz.brassgoggledcoders.patchouliprovider.page.RecipePageBuilder;
|
||||
|
||||
public class ReconstructorPageBuilder extends RecipePageBuilder<ReconstructorPageBuilder> {
|
||||
public ReconstructorPageBuilder(ResourceLocation recipe, EntryBuilder entryBuilder) {
|
||||
super("actuallyadditions:reconstructor", recipe, entryBuilder);
|
||||
}
|
||||
}
|
|
@ -68,8 +68,8 @@ import net.neoforged.neoforge.event.server.ServerStoppedEvent;
|
|||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
import net.neoforged.neoforge.registries.NeoForgeRegistries;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
@ -86,7 +86,7 @@ public class ActuallyAdditions {
|
|||
public static final String GUIFACTORY = "de.ellpeck.actuallyadditions.mod.config.GuiFactory";
|
||||
public static final String DEPS = "required:forge@[14.23.5.2836,);before:craftingtweaks;after:fastbench@[1.3.2,)";
|
||||
|
||||
public static final Logger LOGGER = LogManager.getLogger(NAME);
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MODID);
|
||||
|
||||
private static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(BuiltInRegistries.ENTITY_TYPE, MODID);
|
||||
public static final Supplier<EntityType<EntityWorm>> ENTITY_WORM = ENTITIES.register("worm", () -> EntityType.Builder.of(EntityWorm::new, MobCategory.MISC).build(MODID + ":worm"));
|
||||
|
@ -163,10 +163,8 @@ public class ActuallyAdditions {
|
|||
|
||||
new UpdateChecker();
|
||||
InitEntities.init(); // todo: [port] replace
|
||||
//AAWorldGen gen = new AAWorldGen();
|
||||
ItemCoffee.initIngredients();
|
||||
CrusherCrafting.init();
|
||||
//LensMining.init();
|
||||
}
|
||||
|
||||
private void onConfigReload(ModConfigEvent event) {
|
||||
|
|
|
@ -50,6 +50,7 @@ import de.ellpeck.actuallyadditions.mod.misc.special.SpecialRenderInit;
|
|||
import de.ellpeck.actuallyadditions.mod.particle.ActuallyParticles;
|
||||
import de.ellpeck.actuallyadditions.mod.particle.ParticleBeam;
|
||||
import de.ellpeck.actuallyadditions.mod.particle.ParticleLaserItem;
|
||||
import de.ellpeck.actuallyadditions.mod.patchouli.PatchouliPages;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.screens.MenuScreens;
|
||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||
|
@ -102,6 +103,8 @@ public class ActuallyAdditionsClient {
|
|||
(stack, level, entity, tintIndex) -> "snail mail".equalsIgnoreCase(stack.getHoverName().getString()) ? 1F : 0F));
|
||||
|
||||
setupRenderLayers();
|
||||
|
||||
PatchouliPages.init();
|
||||
}
|
||||
|
||||
private static void setupRenderLayers() {
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.stream.Collectors;
|
|||
public class ActuallyTabs {
|
||||
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ActuallyAdditions.MODID);
|
||||
|
||||
public static final Supplier<CreativeModeTab> GROUP = CREATIVE_MODE_TABS.register("tab", () -> CreativeModeTab.builder()
|
||||
public static final Supplier<CreativeModeTab> GROUP = CREATIVE_MODE_TABS.register("tab", () -> CreativeModeTab.builder() // TODO coherently order them :P
|
||||
.icon(() -> ActuallyItems.ITEM_BOOKLET.get().getDefaultInstance())
|
||||
.withTabsBefore(CreativeModeTabs.SPAWN_EGGS)
|
||||
.title(Component.translatable("itemGroup.actuallyadditions"))
|
||||
|
@ -34,6 +34,7 @@ public class ActuallyTabs {
|
|||
CustomEnergyStorage storage = new CustomEnergyStorage(itemEnergy.maxPower, itemEnergy.transfer, itemEnergy.transfer);
|
||||
storage.setEnergyStored(itemEnergy.maxPower);
|
||||
stack.setData(ActuallyAttachments.ENERGY_STORAGE.get(), storage);
|
||||
stack.getOrCreateTag().putBoolean("Charged", true);
|
||||
}
|
||||
});
|
||||
stacks.addAll(charged);
|
||||
|
|
|
@ -21,6 +21,7 @@ public class ActuallyRecipes {
|
|||
}
|
||||
|
||||
public static final Supplier<RecipeSerializer<?>> KEEP_DATA_SHAPED_RECIPE = SERIALIZERS.register(RecipeKeepDataShaped.NAME, RecipeKeepDataShaped.Serializer::new);
|
||||
public static final Supplier<RecipeSerializer<?>> KEEP_DATA_SHAPELESS_RECIPE = SERIALIZERS.register(RecipeKeepDataShapeless.NAME, RecipeKeepDataShapeless.Serializer::new);
|
||||
public static final Supplier<RecipeSerializer<?>> LASER_RECIPE = SERIALIZERS.register(LaserRecipe.NAME, LaserRecipe.Serializer::new);
|
||||
public static final Supplier<RecipeSerializer<?>> EMPOWERING_RECIPE = SERIALIZERS.register(EmpowererRecipe.NAME, EmpowererRecipe.Serializer::new);
|
||||
public static final Supplier<RecipeSerializer<?>> CRUSHING_RECIPE = SERIALIZERS.register(CrushingRecipe.NAME, CrushingRecipe.Serializer::new);
|
||||
|
|
|
@ -3,6 +3,7 @@ package de.ellpeck.actuallyadditions.mod.crafting;
|
|||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
|
||||
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.Container;
|
||||
|
@ -47,6 +48,11 @@ public class LaserRecipe implements Recipe<Container> {
|
|||
return itemIngredient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getToastSymbol() {
|
||||
return new ItemStack(ActuallyBlocks.ATOMIC_RECONSTRUCTOR.get());
|
||||
}
|
||||
|
||||
//nah
|
||||
@Override
|
||||
public boolean matches(Container pInv, Level pLevel) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||
import net.minecraft.world.item.crafting.ShapedRecipe;
|
||||
import net.neoforged.neoforge.attachment.AttachmentInternals;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
@ -44,6 +45,9 @@ public class RecipeKeepDataShaped extends ShapedRecipe {
|
|||
if (!datasource.isEmpty() && datasource.hasTag())
|
||||
craftingResult.setTag(datasource.getTag().copy());
|
||||
|
||||
if (!datasource.isEmpty())
|
||||
AttachmentInternals.copyStackAttachments(datasource, craftingResult);
|
||||
|
||||
return craftingResult;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,31 +10,91 @@
|
|||
|
||||
package de.ellpeck.actuallyadditions.mod.crafting;
|
||||
|
||||
// TODO: [port] MOVE TO DATA_GENERATOR
|
||||
@Deprecated
|
||||
public class RecipeKeepDataShapeless {// extends ShapelessOreRecipe {
|
||||
//
|
||||
// private final ItemStack nbtCopyStack;
|
||||
//
|
||||
// public RecipeKeepDataShapeless(ResourceLocation group, ItemStack result, ItemStack nbtCopyStack, Object... recipe) {
|
||||
// super(group, result, recipe);
|
||||
// this.nbtCopyStack = nbtCopyStack;
|
||||
//
|
||||
// RecipeHelper.addRecipe(group.getPath(), this);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public ItemStack getCraftingResult(InventoryCrafting inventory) {
|
||||
// ItemStack stack = super.getCraftingResult(inventory);
|
||||
// if (StackUtil.isValid(stack)) {
|
||||
// for (int i = 0; i < inventory.getSizeInventory(); i++) {
|
||||
// ItemStack input = inventory.getStackInSlot(i);
|
||||
// if (ItemUtil.areItemsEqual(this.nbtCopyStack, input, true)) {
|
||||
// stack.setTagCompound(input.getTagCompound());
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return stack;
|
||||
// }
|
||||
import com.mojang.serialization.Codec;
|
||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.inventory.CraftingContainer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.CraftingBookCategory;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||
import net.minecraft.world.item.crafting.ShapelessRecipe;
|
||||
import net.neoforged.neoforge.attachment.AttachmentInternals;
|
||||
|
||||
public class RecipeKeepDataShapeless extends ShapelessRecipe {
|
||||
public static String NAME = "copy_nbt_shapeless";
|
||||
public RecipeKeepDataShapeless(String pGroup, CraftingBookCategory pCategory, ItemStack pResult, NonNullList<Ingredient> pIngredients) {
|
||||
super(pGroup, pCategory, pResult, pIngredients);
|
||||
}
|
||||
public RecipeKeepDataShapeless(ShapelessRecipe recipe) {
|
||||
super(recipe.getGroup(), recipe.category(), recipe.getResultItem(RegistryAccess.EMPTY), recipe.getIngredients());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecipeSerializer<?> getSerializer() {
|
||||
return ActuallyRecipes.KEEP_DATA_SHAPELESS_RECIPE.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack assemble(CraftingContainer pContainer, RegistryAccess pRegistryAccess) {
|
||||
ItemStack result = super.assemble(pContainer, pRegistryAccess);
|
||||
|
||||
TargetNBTIngredient donorIngredient = null;
|
||||
ItemStack datasource = ItemStack.EMPTY;
|
||||
NonNullList<Ingredient> ingredients = getIngredients();
|
||||
for (Ingredient ingredient : ingredients) {
|
||||
if (ingredient instanceof TargetNBTIngredient) {
|
||||
donorIngredient = (TargetNBTIngredient) ingredient;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (donorIngredient != null && !pContainer.isEmpty()) {
|
||||
for (int i = 0; i < pContainer.getContainerSize(); i++) {
|
||||
final ItemStack item = pContainer.getItem(i);
|
||||
if (!item.isEmpty() && donorIngredient.test(item)) {
|
||||
datasource = item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!datasource.isEmpty() && datasource.hasTag())
|
||||
result.setTag(datasource.getTag().copy());
|
||||
else {
|
||||
ActuallyAdditions.LOGGER.info("AA.KeepDataShapeless missing TargetNBTIngredient");
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
if (!datasource.isEmpty())
|
||||
AttachmentInternals.copyStackAttachments(datasource, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static class Serializer implements RecipeSerializer<RecipeKeepDataShapeless> {
|
||||
public static final Codec<RecipeKeepDataShapeless> CODEC = ShapelessRecipe.Serializer.CODEC.xmap(RecipeKeepDataShapeless::new, $ -> $);
|
||||
@Override
|
||||
public Codec<RecipeKeepDataShapeless> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecipeKeepDataShapeless fromNetwork(FriendlyByteBuf pBuffer) {
|
||||
return new RecipeKeepDataShapeless(RecipeSerializer.SHAPELESS_RECIPE.fromNetwork(pBuffer));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toNetwork(net.minecraft.network.FriendlyByteBuf pBuffer, RecipeKeepDataShapeless pRecipe) {
|
||||
try {
|
||||
RecipeSerializer.SHAPELESS_RECIPE.toNetwork(pBuffer, pRecipe);
|
||||
}
|
||||
catch (Exception e) {
|
||||
ActuallyAdditions.LOGGER.info("Failed to serialize " + NAME + " Recipe to packet: " + e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,13 @@ package de.ellpeck.actuallyadditions.mod.crafting;
|
|||
|
||||
import com.mojang.serialization.Codec;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -34,7 +36,7 @@ public class TargetNBTIngredient extends Ingredient {
|
|||
public static TargetNBTIngredient of(ItemStack itemStack) {
|
||||
return new TargetNBTIngredient(Stream.of(new ItemValue(itemStack)));
|
||||
}
|
||||
public static TargetNBTIngredient of(TagKey tag) {
|
||||
public static TargetNBTIngredient of(@Nonnull TagKey<Item> tag) {
|
||||
return new TargetNBTIngredient(Stream.of(new TagValue(tag)));
|
||||
}
|
||||
}
|
|
@ -43,7 +43,7 @@ public class ItemGrowthRing extends ItemEnergy {
|
|||
ItemStack equipped = player.getMainHandItem();
|
||||
|
||||
int energyUse = 300;
|
||||
if (StackUtil.isValid(equipped) && equipped == stack && this.getEnergyStored(stack) >= energyUse) {
|
||||
if (!equipped.isEmpty() && equipped == stack && this.getEnergyStored(stack) >= energyUse) {
|
||||
List<BlockPos> blocks = new ArrayList<>();
|
||||
|
||||
//Adding all possible Blocks
|
||||
|
|
|
@ -44,18 +44,18 @@ public class ItemPlayerProbe extends ItemBase {
|
|||
public void inventoryTick(ItemStack stack, Level world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
if (!world.isClientSide) {
|
||||
CompoundTag compound = stack.getOrCreateTag();
|
||||
if (compound.contains("UUIDMost")) {
|
||||
if (compound.contains("UUID")) {
|
||||
UUID id = compound.getUUID("UUID");
|
||||
Player player = world.getPlayerByUUID(id);
|
||||
if (player != null) {
|
||||
if (player.isShiftKeyDown()) {
|
||||
ItemPhantomConnector.clearStorage(stack, "UUIDLeast", "UUIDMost", "Name");
|
||||
ItemPhantomConnector.clearStorage(stack, "UUID", "Name");
|
||||
((Player) entity).displayClientMessage(Component.translatable("tooltip." + ActuallyAdditions.MODID + ".playerProbe.disconnect.1"), false);
|
||||
player.displayClientMessage(Component.translatable("tooltip." + ActuallyAdditions.MODID + ".playerProbe.notice"), false);
|
||||
//TheAchievements.GET_UNPROBED.get(player);
|
||||
}
|
||||
} else {
|
||||
ItemPhantomConnector.clearStorage(stack, "UUIDLeast", "UUIDMost", "Name");
|
||||
ItemPhantomConnector.clearStorage(stack, "UUID", "Name");
|
||||
((Player) entity).displayClientMessage(Component.translatable("tooltip." + ActuallyAdditions.MODID + ".playerProbe.disconnect.2"), false);
|
||||
}
|
||||
}
|
||||
|
@ -71,17 +71,16 @@ public class ItemPlayerProbe extends ItemBase {
|
|||
|
||||
ItemStack stack = player.getItemInHand(context.getHand());
|
||||
BlockEntity tile = context.getLevel().getBlockEntity(context.getClickedPos());
|
||||
if (tile instanceof TileEntityPlayerInterface) {
|
||||
if (tile instanceof TileEntityPlayerInterface face) {
|
||||
CompoundTag compound = stack.getOrCreateTag();
|
||||
if (compound.contains("UUIDMost")) {
|
||||
if (compound.contains("UUID")) {
|
||||
if (!context.getLevel().isClientSide) {
|
||||
TileEntityPlayerInterface face = (TileEntityPlayerInterface) tile;
|
||||
face.connectedPlayer = compound.getUUID("UUID");
|
||||
face.playerName = compound.getString("Name");
|
||||
face.setChanged();
|
||||
face.sendUpdate();
|
||||
|
||||
ItemPhantomConnector.clearStorage(stack, "UUIDLeast", "UUIDMost", "Name");
|
||||
ItemPhantomConnector.clearStorage(stack, "UUID", "Name");
|
||||
}
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.gui.CrusherScreen;
|
|||
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine;
|
||||
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble;
|
||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
|
||||
import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineCategory;
|
||||
import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherCategory;
|
||||
import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeCategory;
|
||||
|
@ -29,16 +30,15 @@ import mezz.jei.api.JeiPlugin;
|
|||
import mezz.jei.api.constants.RecipeTypes;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.recipe.RecipeType;
|
||||
import mezz.jei.api.registration.IGuiHandlerRegistration;
|
||||
import mezz.jei.api.registration.IRecipeCatalystRegistration;
|
||||
import mezz.jei.api.registration.IRecipeCategoryRegistration;
|
||||
import mezz.jei.api.registration.IRecipeRegistration;
|
||||
import mezz.jei.api.registration.*;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeHolder;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
@JeiPlugin
|
||||
public class JEIActuallyAdditionsPlugin implements IModPlugin {
|
||||
public static final ResourceLocation ID = new ResourceLocation(ActuallyAdditions.MODID, "jei_plugin");
|
||||
|
@ -55,6 +55,14 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
|
|||
public static final RecipeType<CrushingRecipe> CRUSHING = RecipeType.create(ActuallyAdditions.MODID, "crushing", CrushingRecipe.class);
|
||||
public static final RecipeType<MiningLensRecipe> MINING_LENS = RecipeType.create(ActuallyAdditions.MODID, "mining_lens", MiningLensRecipe.class);
|
||||
|
||||
@Override
|
||||
public void registerItemSubtypes(@Nonnull ISubtypeRegistration reg) {
|
||||
ActuallyItems.ITEMS.getEntries().forEach(entry -> {
|
||||
if (entry.get() instanceof ItemEnergy)
|
||||
reg.useNbtForSubtypes(entry.get());
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registry) {
|
||||
IJeiHelpers helpers = registry.getJeiHelpers();
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package de.ellpeck.actuallyadditions.mod.patchouli;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import de.ellpeck.actuallyadditions.mod.crafting.ActuallyRecipes;
|
||||
import de.ellpeck.actuallyadditions.mod.crafting.LaserRecipe;
|
||||
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.world.level.Level;
|
||||
import vazkii.patchouli.client.book.gui.GuiBook;
|
||||
import vazkii.patchouli.client.book.page.abstr.PageSimpleProcessingRecipe;
|
||||
|
||||
public class PageReconstructor extends PageSimpleProcessingRecipe<LaserRecipe> {
|
||||
|
||||
public PageReconstructor() {
|
||||
super(ActuallyRecipes.Types.LASER.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawRecipe(GuiGraphics graphics, LaserRecipe recipe, int recipeX, int recipeY, int mouseX, int mouseY, boolean second) {
|
||||
Level level = Minecraft.getInstance().level;
|
||||
if (level == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderSystem.enableBlend();
|
||||
graphics.blit(AssetUtil.getBookletGuiLocation("gui_booklet_gadgets"), recipeX + 10, recipeY + 2, 80, 146, 68, 48, 256, 256);
|
||||
parent.drawCenteredStringNoShadow(graphics, getTitle(second).getVisualOrderText(), GuiBook.PAGE_WIDTH / 2, recipeY - 10, book.headerColor);
|
||||
|
||||
parent.renderIngredient(graphics, recipeX + 11, recipeY + 15, mouseX, mouseY, recipe.getInput());
|
||||
parent.renderItemStack(graphics, recipeX + 33, recipeY + 15, mouseX, mouseY, recipe.getToastSymbol());
|
||||
parent.renderItemStack(graphics, recipeX + 57, recipeY + 15, mouseX, mouseY, recipe.getResultItem(level.registryAccess()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTextHeight() {
|
||||
return 60;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRenderText() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getRecipeHeight() {
|
||||
return 90;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package de.ellpeck.actuallyadditions.mod.patchouli;
|
||||
|
||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import vazkii.patchouli.client.book.ClientBookRegistry;
|
||||
|
||||
public class PatchouliPages {
|
||||
public static void init() {
|
||||
ClientBookRegistry.INSTANCE.pageTypes.put(new ResourceLocation(ActuallyAdditions.MODID, "reconstructor"), PageReconstructor.class);
|
||||
}
|
||||
}
|
|
@ -131,7 +131,7 @@ public class TileEntityPlayerInterface extends TileEntityBase implements IEnergy
|
|||
super.readSyncableNBT(compound, type);
|
||||
|
||||
this.storage.readFromNBT(compound);
|
||||
if (compound.contains("PlayerLeast") && type != NBTType.SAVE_BLOCK) {
|
||||
if (compound.contains("Player") && type != NBTType.SAVE_BLOCK) {
|
||||
this.connectedPlayer = compound.getUUID("Player");
|
||||
this.playerName = compound.getString("PlayerName");
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ public net.minecraft.world.damagesource.DamageSources damageTypes
|
|||
public-f net.minecraft.data.recipes.RecipeProvider getName()Ljava/lang/String;
|
||||
public-f net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList list
|
||||
public net.minecraft.world.item.crafting.ShapedRecipe pattern
|
||||
public net.minecraft.world.item.crafting.ShapelessRecipe$Serializer CODEC # Codec
|
||||
public net.minecraft.world.inventory.InventoryMenu TEXTURE_EMPTY_SLOTS
|
||||
public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool templates
|
||||
public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool rawTemplates
|
||||
|
|
|
@ -714,9 +714,10 @@
|
|||
"booklet.actuallyadditions.trials.empowererAutomation.text.1": "The <item>Empowerer<r> requires a lot of resources to <imp>convert crystals<r>. There should be a pretty easy way to create a system that does this <imp>automatically<r>. Using some <item>Item Laser Relays<r> should provide an easy way to make the right items go onto the right display stands.",
|
||||
"_comment": "Booklet Chapters",
|
||||
"booklet.actuallyadditions.chapter.intro": "A story about ActAdd",
|
||||
"booklet.actuallyadditions.chapter.intro.text.1": "<i>For too long have the people of Minecraftia toiled under a relentless whip. A whip more hurtful and more injurious than that of any slave-master: inconvenience. Aye, the thousand million inconveniences that make up the grind, that force players to waste hours- nay, days!- chopping wood and farming wheat and other such mundane tasks, just to momentarily escape the remorseless tedium and experience the true joys of Minecraftia, building, caving and adventuring into the beautiful uncharted abundance",
|
||||
"booklet.actuallyadditions.chapter.intro.text.2": "<i>of the world. Yet no sooner has one immersed oneself in this creative enterprise than the inconveniences return, like millions of furious bees pestering, stinging, swarming all over you until the game ceases to be enjoyable, and you are driven away from it forever. To that end, a certain Ellpeck has created this Actual Addition to the world of Minecraft, that will allow the player to better engage with the core experiences of the game- building and adventuring- by automating and streamlining the monotony that",
|
||||
"booklet.actuallyadditions.chapter.intro.text.3": "<i>is grinding in Minecraft. Therefore, Ellpeck humbly presents to you this Actually Additions Manual, that shall teach you the ways of this modification and, ultimately, allow you to transcend inconvenience and attain enlightenment. <r><n><n> ~by <imp>Tulkas<r>",
|
||||
"booklet.actuallyadditions.chapter.intro.text.1": "<i>For too long have the people of Minecraftia toiled under a relentless whip. A whip more hurtful and more injurious than that of any slave-master: inconvenience. Aye, the thousand million inconveniences that make up the grind, that force players to waste hours- nay, days!- chopping wood and farming wheat and other such mundane tasks,",
|
||||
"booklet.actuallyadditions.chapter.intro.text.2": "<i>just to momentarily escape the remorseless tedium and experience the true joys of Minecraftia, building, caving and adventuring into the beautiful uncharted abundance of the world. Yet no sooner has one immersed oneself in this creative enterprise than the inconveniences return, like millions of furious bees pestering, stinging, swarming all over you until the game ceases to be enjoyable, and you are driven away from it forever.",
|
||||
"booklet.actuallyadditions.chapter.intro.text.3": "<i>To that end, a certain Ellpeck has created this Actual Addition to the world of Minecraft, that will allow the player to better engage with the core experiences of the game- building and adventuring- by automating and streamlining the monotony that is grinding in Minecraft. Therefore, Ellpeck humbly presents to you this Actually Additions Manual, that shall teach you the ways of this modification and, ultimately,",
|
||||
"booklet.actuallyadditions.chapter.intro.text.4": "<i>allow you to transcend inconvenience and attain enlightenment. <r><n><n> ~by <imp>Tulkas<r>",
|
||||
"booklet.actuallyadditions.chapter.craftingIngs": "Crafting Ingredients",
|
||||
"booklet.actuallyadditions.chapter.craftingIngs.text.1": "<imp>Actually Additions<r> has lots of items that use certain <imp>basic crafting items<r> to be crafted. This chapter has all of these basic items <imp>grouped up<r> so that you can see all of them at once.",
|
||||
"booklet.actuallyadditions.chapter.quartz": "Black Quartz",
|
||||
|
@ -846,9 +847,9 @@
|
|||
"booklet.actuallyadditions.chapter.blackLotus.text.1": "Think of this: <n>You need to craft <imp>black wool<r>, <imp>black clay<r> or anything else that <imp>needs black dye<r> but you are just guilty about killing so many <imp>innocent squids<r>? <n>Well, the <item>Black Lotus<r> is exactly the thing you need! <n>Just look around <imp>in the wild<r> a bit, and you will find one, then being able to craft some <item>Black Dye<r> that can be used <imp>instead of Ink Sacs<r> so that you don't need to kill poor squids and L any longer.",
|
||||
"booklet.actuallyadditions.chapter.blackLotus.text.2": "<i>Do the lotus pose",
|
||||
"booklet.actuallyadditions.chapter.crystals": "Crystals and Reconstructor",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.1": "The <item>Atomic Reconstructor<r> is used to craft <item>Crystals<r>, which are the main crafting ingredient in most items from <imp>Actually Additions<r>. <n>Upon being supplied with power, it shoots out a Laser. <tifisgrin>When the Laser hits a block<r>, it will convert all surrounding items and blocks, provided they can be converted. <n>When shooting a laser, it uses <imp><rf> CF<r>, but additional rates vary depending on the conversion.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.2": "There are various <item>Lenses<r> that can be attached to the Reconstructor that don't all follow the default behavior of the Reconstructor and are able to do some neat things. <n>See the <imp>Reconstruction section<r> in the booklet <imp>for more information<r>. <n><n>When right-clicking the Reconstructor with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.3": "It should be noted that any recipes listed without information about Lenses <imp>don't use one<r>. <n><i>I thought that was obvious.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.1": "The <item>Atomic Reconstructor<r> is used to craft <item>Crystals<r>, which are the main crafting ingredient in most items from <imp>Actually Additions<r>. <n>Upon being supplied with power, it shoots out a Laser. <tifisgrin>When the Laser hits a block<r>, it will convert all surrounding items and blocks, provided they can be converted.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.2": "When shooting a laser, it uses <imp>1000 CF<r>, but additional rates vary depending on the conversion. <n>There are various <item>Lenses<r> that can be attached to the Reconstructor that don't all follow the default behavior of the Reconstructor and are able to do some neat things. <n>See the <imp>Reconstruction section<r> in the booklet <imp>for more information<r>.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.3": "When right-clicking the Reconstructor with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>. It should be noted that any recipes listed without information about Lenses <imp>don't use one<r>. <n><i>I thought that was obvious.",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.5": "When you have crafted a couple of items, you might want to find a way to <imp>automate this<r>. <n>There is a very simple way to do accomplish this: <n>Place the <item>Atomic Reconstructor<r> down facing into a <item>Precision Dropper<r> (to find it, look it up in the <imp>All Items<r> Entry!). <n>Next, place a <item>Ranged Collector<r> in the area that has the converted items set as a whitelist. <n>Now you can just chuck your raw materials into the Dropper to convert them!",
|
||||
"booklet.actuallyadditions.chapter.crystals.text.6": "<n><n><n><i>Molecular Transformilator",
|
||||
"booklet.actuallyadditions.chapter.book_tutorial": "Intro to the Manual",
|
||||
|
@ -969,9 +970,9 @@
|
|||
"booklet.actuallyadditions.chapter.website": "The Author's Website",
|
||||
"booklet.actuallyadditions.chapter.website.text.1": "On the topic of self-advertisement, if you're interested in <imp>any of the other stuff<r> I, <item>Ellpeck<r>, the author of this mod, do, you can go check out my <imp>website<r> by clicking the button below. <n>On there, you will find links to all of the social medias I use, an FAQ, and information about Minecraft Mods and other stuff I make!",
|
||||
"booklet.actuallyadditions.chapter.website.button.1": "View the Website",
|
||||
"booklet.actuallyadditions.chapter.engineerHouse": "A visit to the Engineers",
|
||||
"booklet.actuallyadditions.chapter.engineerHouse.text.1": "If you want to know how to start, you can check out what the <imp>Engineers<r> are up to. <n>They are two friendly <imp>villagers<r> that sell you various goods: One is the <item>Crystallizer<r>, who will exchange <imp>Emeralds and Crystals<r> with you, and the <item>Engineer<r> will trade <imp>various machines<r> with you! <n>On the next page, you can see the <imp>house<r> they live in - which is also worth checking out! But be careful, the <imp>machines inside the house<r> are a little more <imp>fragile<r>, meaning they will shatter once you try to break them.",
|
||||
"booklet.actuallyadditions.chapter.engineerHouse.text.2": "<i> Machines Primus",
|
||||
"booklet.actuallyadditions.chapter.engineer_house": "A visit to the Engineers",
|
||||
"booklet.actuallyadditions.chapter.engineer_house.text.1": "If you want to know how to start, you can check out what the <imp>Engineers<r> are up to. <n>They are two friendly <imp>villagers<r> that sell you various goods: One is the <item>Crystallizer<r>, who will exchange <imp>Emeralds and Crystals<r> with you, and the <item>Engineer<r> will trade <imp>various machines<r> with you! <n>On the next page, you can see the <imp>house<r> they live in - which is also worth checking out! But be careful, the <imp>machines inside the house<r> are a little more <imp>fragile<r>, meaning they will shatter once you try to break them.",
|
||||
"booklet.actuallyadditions.chapter.engineer_house.text.2": "<i> Machines Primus",
|
||||
"booklet.actuallyadditions.chapter.batteryBox": "Battery Box",
|
||||
"booklet.actuallyadditions.chapter.batteryBox.text.1": "The <item>Battery Box<r> is a great way to <imp>store your power<r>. However, for it to be able to <imp>use power<r>, you have to <imp>right-click<r> a <item>Battery<r> onto it. It will then be able to store energy on the battery itself. <n><n>If you set the battery to <imp>discharge mode<r> via <imp>sneak-right-clicking it<r> or by applying a <imp>redstone pulse<r> to the <item>Battery Box<r>, it will try to spread the power it receives equally to <imp>up to 15 adjacent<r> <item>Battery Boxes<r>.",
|
||||
"booklet.actuallyadditions.chapter.laserUpgradeInvisibility": "Modifier: Invisibility",
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"tag": "forge:stone"
|
||||
},
|
||||
"result": {
|
||||
"item": "mekanism:florite_ore"
|
||||
"item": "mekanism:fluorite_ore"
|
||||
},
|
||||
"weight": 1000
|
||||
}
|
Loading…
Reference in a new issue