Compare commits

..

No commits in common. "0e3a9612578a88af2d5703c8cf26918204f90f35" and "09fa51e7d40a92d6be5b21f096ab694fdf1fa51e" have entirely different histories.

70 changed files with 1212 additions and 808 deletions

View file

@ -6,7 +6,7 @@ mod_version=1.2.14
# Forge
game_version=1.21.1
neo_version=21.1.71
neo_version=21.1.69
# mods.toml
loader=4

View file

@ -1,4 +1,4 @@
// 1.21.1 2024-10-16T22:24:12.9580535 Loot Tables
// 1.21.1 2024-08-11T19:30:01.8143179 Loot Tables
ef11aa79a2f96a47250f46811f8491fd34d627f9 data/actuallyadditions/loot_table/blocks/atomic_reconstructor.json
e15c868b26b669c30365bfb93e7d9274e07df16d data/actuallyadditions/loot_table/blocks/battery_box.json
745d64af3b0203a138f9eca7de21ed4988b35c95 data/actuallyadditions/loot_table/blocks/bio_reactor.json
@ -29,11 +29,11 @@ fa895b25a0816ca506f7031ec3861cfd4de04f28 data/actuallyadditions/loot_table/block
7c7a4028f6fe02446d1557f72ad494ab363a8409 data/actuallyadditions/loot_table/blocks/crusher.json
cbd5456165eaf299685aab50dc3bce38d99a1cf8 data/actuallyadditions/loot_table/blocks/crusher_double.json
25b7a44418e2858552dd5150d67bffe1f30269a8 data/actuallyadditions/loot_table/blocks/diamatine_crystal_block.json
ba64f685c7b3c7f998e61d9a3905e627784fb017 data/actuallyadditions/loot_table/blocks/diamatine_crystal_cluster.json
e22890b48eaf91862f5dede7b9c1480f41657e7f data/actuallyadditions/loot_table/blocks/diamatine_crystal_cluster.json
33bc6704cd8545a60049b9f168bc8aa391937e48 data/actuallyadditions/loot_table/blocks/display_stand.json
3f9aa8b99fad7066fd3a6118a499e3237920cc7e data/actuallyadditions/loot_table/blocks/dropper.json
a8183cf6b77bbac91f09ea485f5eaadf70aa8fb0 data/actuallyadditions/loot_table/blocks/emeradic_crystal_block.json
25d55ab81ed1fc53387b4bc3712d4f26b188270f data/actuallyadditions/loot_table/blocks/emeradic_crystal_cluster.json
39851863a99bf21d48df61350f1ae1e0e25dbeaa data/actuallyadditions/loot_table/blocks/emeradic_crystal_cluster.json
4811fb48ac8e17ed71d0e42016ccfd7f244026d4 data/actuallyadditions/loot_table/blocks/empowered_diamatine_crystal_block.json
e02f5203b700239638e4fafb9915e6873f1b76bc data/actuallyadditions/loot_table/blocks/empowered_emeradic_crystal_block.json
00fa7d2d85a41d1834d016cd232d92a8dad1a81f data/actuallyadditions/loot_table/blocks/empowered_enori_crystal_block.json
@ -45,7 +45,7 @@ bb7c77182bd147e1189d865c5a992fbf19a629f4 data/actuallyadditions/loot_table/block
6990098510a0dcb1961a80f00d5f71d4b2bc3f46 data/actuallyadditions/loot_table/blocks/energizer.json
f3c68d58b25c3dbb6d4a65c14dd6d2c28e53814f data/actuallyadditions/loot_table/blocks/enervator.json
47d7dd8175c672b8568b8863c6b65ab26168fd5f data/actuallyadditions/loot_table/blocks/enori_crystal_block.json
b133d4e6b05aea63e6d89d696ac03710b88d1d51 data/actuallyadditions/loot_table/blocks/enori_crystal_cluster.json
03330e1ee2c22c017c3bd55c880e979f1a4bb3d4 data/actuallyadditions/loot_table/blocks/enori_crystal_cluster.json
aca50008d47da6a89a41421752329fc108b74caa data/actuallyadditions/loot_table/blocks/ethetic_green_block.json
2898af59e57ae6b6400a02e56baaf5af796fe971 data/actuallyadditions/loot_table/blocks/ethetic_green_slab.json
011939f5b508413a3827de5b12ff58dd1c875ca7 data/actuallyadditions/loot_table/blocks/ethetic_green_stairs.json
@ -95,7 +95,7 @@ f8a03e56a032e858126f1b1861ea0b759a3e517d data/actuallyadditions/loot_table/block
27ba42bb0f2dca72e29393944b61e566d758a2dc data/actuallyadditions/loot_table/blocks/long_range_breaker.json
43113c67b268280ce09b9c90df83f33c15bf2f06 data/actuallyadditions/loot_table/blocks/oil_generator.json
f0905fdc46775bb0d7382375b0a1109d125175e7 data/actuallyadditions/loot_table/blocks/palis_crystal_block.json
5162668136335d22fef342550e3a14f8c0347e92 data/actuallyadditions/loot_table/blocks/palis_crystal_cluster.json
ec28c8a70911ac7e3cf621d19aa06443a9da3ebf data/actuallyadditions/loot_table/blocks/palis_crystal_cluster.json
dadc9a4648ff9cfa77840405384be4937cea991b data/actuallyadditions/loot_table/blocks/phantom_booster.json
7ca8e4e140407dc71416289d293319748d6074a5 data/actuallyadditions/loot_table/blocks/phantom_breaker.json
c020a9e28f95800f7eb064fc557afe3cd78ee77a data/actuallyadditions/loot_table/blocks/phantom_energyface.json
@ -108,7 +108,7 @@ f0a5b8a9ef9e878baa8e1792605ecb6371bf6262 data/actuallyadditions/loot_table/block
e030d31981f02c0ed25d08fcaf8d8e7c89016247 data/actuallyadditions/loot_table/blocks/powered_furnace.json
8f51bc016a6797bfdf81973a21509e14bd47f245 data/actuallyadditions/loot_table/blocks/ranged_collector.json
0cff315b834058c90a7f26425565e086fb833305 data/actuallyadditions/loot_table/blocks/restonia_crystal_block.json
d1c8ca548cefbb4f33d4763606a7e0c909319717 data/actuallyadditions/loot_table/blocks/restonia_crystal_cluster.json
0e6bc03f897b89999df775595eae662728617604 data/actuallyadditions/loot_table/blocks/restonia_crystal_cluster.json
247ec0004cfa51a635f305aed06f6a8f2d0cd0c4 data/actuallyadditions/loot_table/blocks/rice.json
d9337537495eb5b2d5288c6df81125594522e5b7 data/actuallyadditions/loot_table/blocks/shock_suppressor.json
a534077796cbfbcf0c66f986db3abd037c2d14d6 data/actuallyadditions/loot_table/blocks/smooth_black_quartz_block.json
@ -118,7 +118,7 @@ a33803a54b60eb930713929368729dbd01fa77f0 data/actuallyadditions/loot_table/block
b457272e382a377d7e55f2b74d49683a14d62825 data/actuallyadditions/loot_table/blocks/tiny_torch.json
d43769e7f20448bf87952664a3ddd12db0804627 data/actuallyadditions/loot_table/blocks/vertical_digger.json
16963296de38141657d91d76d0458313529e4033 data/actuallyadditions/loot_table/blocks/void_crystal_block.json
3a359dfa76bec7d76fe995787f74ab748a98b0c9 data/actuallyadditions/loot_table/blocks/void_crystal_cluster.json
58ebb57d3470800107617d0cc84250750834b675 data/actuallyadditions/loot_table/blocks/void_crystal_cluster.json
d3498d690b7d9170fecdc2dd9825519b680cfeec data/actuallyadditions/loot_table/blocks/wood_casing.json
e1ebdde950a7f730c423a16143ad5598e3b6e3a7 data/actuallyadditions/loot_table/blocks/xp_solidifier.json
860b2c007cf8a1942e3f2934e1385a3a75d3a940 data/actuallyadditions/loot_table/engineer_house.json

View file

@ -1,4 +1,4 @@
// 1.21.1 2024-10-16T22:05:14.5301488 Item Recipes
// 1.21.1 2024-08-11T19:30:01.8188184 Item Recipes
14bd5bc2ee3e84b6f3a3181c0e0efd40df5f1d84 data/actuallyadditions/recipe/advanced_coil.json
955aad6c1def123a6adbaeabb13faa6eedce847f data/actuallyadditions/recipe/advanced_leaf_blower.json
97e7ba64f5054b030f4e49615dc4212a28ca9be1 data/actuallyadditions/recipe/basic_coil.json
@ -109,7 +109,6 @@ f7b4a51bf6bcaee860b68bfd2dc40a6b0bfff6bc data/actuallyadditions/recipe/rice_pape
73e49fa3d60186037c58569eee42fc6dbff0e55c data/actuallyadditions/recipe/rice_slime.json
f5cbc0efed1684fa5201cbd023d90fdec89aa0b3 data/actuallyadditions/recipe/rice_slime_potion.json
be20b48da77573463f63c119b542fde5d4c14843 data/actuallyadditions/recipe/ring.json
b5bcd0457a68e28d37312f1a1e94a106d3b6f038 data/actuallyadditions/recipe/ring_of_growth.json
8e0ac0d696ff3ecd1ef43122707b8f131bba3fbf data/actuallyadditions/recipe/ring_of_magnetizing.json
f31206c1d67ddc93e41d13f24d54e8d6b5913348 data/actuallyadditions/recipe/single_battery.json
9504d2a8e3cb536cf865e8385a013743a0d615d0 data/actuallyadditions/recipe/stone_aiot.json

View file

@ -1,8 +0,0 @@
// 1.21.1 2024-10-17T00:54:11.5444321 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
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

View file

@ -1,5 +0,0 @@
{
"description": "",
"icon": "actuallyadditions:booklet",
"name": "booklet.actuallyadditions.indexEntry.getting_started"
}

View file

@ -1,101 +0,0 @@
{
"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"
}
]
}

View file

@ -1,18 +0,0 @@
{
"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"
}
]
}

View file

@ -1,27 +0,0 @@
{
"category": "actuallyadditions:getting_started",
"icon": "actuallyadditions:textures/item/youtube.png",
"name": "booklet.actuallyadditions.chapter.video_guide",
"pages": [
{
"type": "patchouli:link",
"link_text": "booklet.actuallyadditions.chapter.video_guide.booty.button",
"text": "booklet.actuallyadditions.chapter.video_guide.booty.text.1",
"url": "https://www.youtube.com/watch?v=fhjz0Ew56pM"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.video_guide.booty.text.2"
},
{
"type": "patchouli:link",
"link_text": "booklet.actuallyadditions.chapter.video_guide.booty.button",
"text": "booklet.actuallyadditions.chapter.video_guide.dire.text.1",
"url": "https://www.youtube.com/playlist?list=PLJeFZ64pT89MrTRZYzD_rtHFajPVlt6cF"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.video_guide.dire.text.2"
}
]
}

View file

@ -1,23 +0,0 @@
{
"category": "actuallyadditions:getting_started",
"icon": "actuallyadditions:booklet",
"name": "booklet.actuallyadditions.chapter.intro",
"pages": [
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.intro.text.1"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.intro.text.2"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.intro.text.3"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.intro.text.4"
}
]
}

View file

@ -1,25 +0,0 @@
{
"category": "actuallyadditions:getting_started",
"icon": "actuallyadditions:booklet",
"name": "booklet.actuallyadditions.chapter.book_tutorial",
"pages": [
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.book_tutorial.text.1"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.book_tutorial.text.2"
},
{
"type": "patchouli:text",
"text": "booklet.actuallyadditions.chapter.book_tutorial.text.3"
},
{
"type": "patchouli:crafting",
"recipe": "actuallyadditions:booklet",
"text": "booklet.actuallyadditions.shapeless_recipe",
"title": ""
}
]
}

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:diamatine_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:diamatine_crystal_shard"
}
]
"name": "actuallyadditions:diamatine_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:emeradic_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:emeradic_crystal_shard"
}
]
"name": "actuallyadditions:emeradic_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:enori_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:enori_crystal_shard"
}
]
"name": "actuallyadditions:enori_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:palis_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:palis_crystal_shard"
}
]
"name": "actuallyadditions:palis_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:restonia_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:restonia_crystal_shard"
}
]
"name": "actuallyadditions:restonia_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -3,50 +3,15 @@
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
"condition": "minecraft:survives_explosion"
}
],
"name": "actuallyadditions:void_crystal_cluster"
},
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 8.0,
"min": 2.0
},
"function": "minecraft:set_count"
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "actuallyadditions:void_crystal_shard"
}
]
"name": "actuallyadditions:void_crystal_cluster"
}
],
"rolls": 1.0

View file

@ -1,21 +0,0 @@
{
"book_texture": "actuallyadditions:textures/gui/booklet/booklet.png",
"creative_tab": "actuallyadditions.tab",
"custom_book_item": "actuallyadditions:booklet",
"dont_generate_book": true,
"i18n": true,
"landing_text": "<i>To be perfectly honest, I never actually realized how much content Actually Additions has before.<r><n> - Ellpeck",
"macros": {
"<i>": "$(o)",
"<imp>": "$(2)",
"<item>": "$(9)",
"<n>": "$(br)",
"<r>": "$()",
"<tifisgrin>": "$(4)$(n)"
},
"name": "booklet.actuallyadditions.item.actuallyadditions.booklet",
"show_progress": false,
"use_blocky_font": false,
"use_resource_pack": true,
"version": "153"
}

View file

@ -1,24 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"I": {
"item": "actuallyadditions:empowered_enori_crystal"
},
"O": {
"item": "actuallyadditions:ring"
},
"S": {
"tag": "c:seeds"
}
},
"pattern": [
"SIS",
"IOI",
"SIS"
],
"result": {
"count": 1,
"id": "actuallyadditions:ring_of_growth"
}
}

View file

@ -1,6 +1,5 @@
package de.ellpeck.actuallyadditions.data;
import de.ellpeck.actuallyadditions.data.patchouli.PatchouliGenerator;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyConfiguredFeatures;
@ -66,7 +65,7 @@ public class ActuallyAdditionsData {
generator.addProvider(true, new SoundsGenerator(packOutput, helper));
generator.addProvider(true, new PatchouliGenerator(packOutput, lookupProvider));
// generator.addProvider(true, new PachouliGenerator(packOutput));
generator.addProvider(true, new GlobalLootModifierGenerator(packOutput, lookupProvider));

View file

@ -39,6 +39,8 @@ public class AdvancementGenerator extends AdvancementProvider {
.addCriterion("right_click", CriteriaTriggers.IMPOSSIBLE.createCriterion(new ImpossibleTrigger.TriggerInstance()))
.save(consumer, "actuallyadditions:root");
//TODO: Underwater Treasure Chest Advancement?
AdvancementHolder phantomFace = Advancement.Builder.advancement()
.parent(root)
.display(new DisplayInfo(ActuallyBlocks.PHANTOM_ITEMFACE.get().asItem().getDefaultInstance(),

View file

@ -453,12 +453,12 @@ public class ItemRecipeGenerator extends RecipeProvider {
.save(recipeOutput);
//Growth Ring
Recipe.shaped(ActuallyItems.RING_OF_GROWTH.get())
/* Recipe.shaped(ActuallyItems.RING_OF_GROWTH.get())
.pattern("SIS", "IOI", "SIS")
.define('S', Tags.Items.SEEDS)
.define('I', ActuallyItems.EMPOWERED_ENORI_CRYSTAL.get())
.define('O', ActuallyItems.RING.get())
.save(recipeOutput);
.save(recipeOutput);*/ //TODO not done yet
Recipe.shapeless(ActuallyItems.CRAFTER_ON_A_STICK.get()).requires(Items.CRAFTING_TABLE).requires(ItemTags.SIGNS).save(recipeOutput);

View file

@ -34,7 +34,6 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePrope
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredItem;
import java.util.List;
import java.util.Set;
@ -186,15 +185,27 @@ public class LootTableGenerator extends LootTableProvider {
this.dropSelf(ActuallyBlocks.EMPOWERED_VOID_CRYSTAL.get());
this.dropSelf(ActuallyBlocks.EMPOWERED_EMERADIC_CRYSTAL.get());
this.registerCrystal(ActuallyBlocks.ENORI_CRYSTAL_CLUSTER, ActuallyItems.ENORI_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.RESTONIA_CRYSTAL_CLUSTER, ActuallyItems.RESTONIA_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.PALIS_CRYSTAL_CLUSTER, ActuallyItems.PALIS_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.DIAMATINE_CRYSTAL_CLUSTER, ActuallyItems.DIAMATINE_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.VOID_CRYSTAL_CLUSTER, ActuallyItems.VOID_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.EMERADIC_CRYSTAL_CLUSTER, ActuallyItems.EMERADIC_CRYSTAL_SHARD);
/* this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_RESTONIA, ActuallyItems.RED_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_PALIS, ActuallyItems.BLUE_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_DIAMATINE, ActuallyItems.LIGHT_BLUE_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_VOID, ActuallyItems.BLACK_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_EMERADIC, ActuallyItems.GREEN_CRYSTAL_SHARD);
this.registerCrystal(ActuallyBlocks.CRYSTAL_CLUSTER_ENORI, ActuallyItems.WHITE_CRYSTAL_SHARD);*/
//TODO temp
dropSelf(ActuallyBlocks.ENORI_CRYSTAL_CLUSTER.get());
dropSelf(ActuallyBlocks.RESTONIA_CRYSTAL_CLUSTER.get());
dropSelf(ActuallyBlocks.PALIS_CRYSTAL_CLUSTER.get());
dropSelf(ActuallyBlocks.DIAMATINE_CRYSTAL_CLUSTER.get());
dropSelf(ActuallyBlocks.VOID_CRYSTAL_CLUSTER.get());
dropSelf(ActuallyBlocks.EMERADIC_CRYSTAL_CLUSTER.get());
//TODO temp
dropSelf(ActuallyBlocks.BLACK_QUARTZ_ORE.get());
add(ActuallyBlocks.BLACK_QUARTZ_ORE.get(), createOreDrop(ActuallyBlocks.BLACK_QUARTZ_ORE.getBlock(), ActuallyItems.BLACK_QUARTZ.get()));
//this.add(ActuallyBlocks.BLACK_QUARTZ_ORE.get(), ore -> droppingItemWithFortune(ore, ActuallyItems.BLACK_QUARTZ.get()));
addCrop(ActuallyBlocks.CANOLA, ActuallyItems.CANOLA, ActuallyItems.CANOLA_SEEDS);
addCrop(ActuallyBlocks.RICE, ActuallyItems.RICE, ActuallyItems.RICE_SEEDS);
addCrop(ActuallyBlocks.FLAX, () -> Items.STRING, ActuallyItems.FLAX_SEEDS);
@ -219,10 +230,17 @@ public class LootTableGenerator extends LootTableProvider {
.include(ActuallyComponents.ENERGY_STORAGE.get())));
}
private void registerCrystal(Supplier<? extends Block> crystalCluster, DeferredItem<? extends Item> crystalShard) {
this.add(crystalCluster.get(), block ->
this.createSingleItemTableWithSilkTouch(block, crystalShard.get(), UniformGenerator.between(2.0F, 8.0F)));
}
/* // This isn't quite right :cry: fortune doesn't change it
private void registerCrystal(RegistryObject<Block> crystalCluster, RegistryObject<Item> crystalShard) {
this.registerLootTable(crystalCluster.get(), (crystal) ->
droppingWithSilkTouch(crystal,
withExplosionDecay(crystal, ItemLootEntry.builder(crystalShard.get())
.acceptFunction(ApplyBonus.oreDrops(Enchantments.FORTUNE))
.acceptFunction(SetCount.builder(RandomValueRange.of(2f, 8f)))
)
)
);
}*/
@Override
protected Iterable<Block> getKnownBlocks() {

View file

@ -0,0 +1,125 @@
//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;
//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;
//
//public class PachouliGenerator extends PatchouliBookProvider {
//
// public PachouliGenerator(PackOutput output) {
// super(output, ActuallyAdditions.MODID, "en_us");
// }
//
// @Override
// protected void addBooks(Consumer<BookBuilder> consumer) {
// final ItemStack bookStack = ActuallyItems.ITEM_BOOKLET.get().getDefaultInstance();
//
// BookBuilder bookBuilder = createBookBuilder("booklet",
// prefix("item.actuallyadditions.booklet"), "<i>To be perfectly honest, I never actually realized how much content Actually Additions has before.<r><n> - Ellpeck")
// .setVersion("153")
// .setCreativeTab("actuallyadditions.tab")
// .setCustomBookItem(bookStack)
// .setBookTexture("actuallyadditions:textures/gui/booklet/booklet.png")
// .setShowProgress(false)
// .setUseBlockyFont(false)
// .setI18n(true)
// .setDontGenerateBook(true)
// .addMacro("<imp>", "$(2)")
// .addMacro("<item>", "$(9)")
// .addMacro("<r>", "$()")
// .addMacro("<n>", "$(br)")
// .addMacro("<i>", "$(o)")
// .addMacro("<tifisgrin>", "$(4)$(n)")
// .setUseResourcePack(true);
//
//
// //Getting Started
// CategoryBuilder gettingStarted = bookBuilder.addCategory("getting_started", prefix("indexEntry.getting_started"),
// "", bookStack);
//
// gettingStarted.addEntry("tutorial", prefix("chapter.book_tutorial"), bookStack)
// .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(ActuallyAdditions.modLoc("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()
// .addTextPage(prefix("chapter.video_guide.booty.text.2")).build()
// .addLinkPage("https://www.youtube.com/playlist?list=PLJeFZ64pT89MrTRZYzD_rtHFajPVlt6cF", prefix("chapter.video_guide.booty.button"))
// .setText(prefix("chapter.video_guide.dire.text.1")).build()
// .addTextPage(prefix("chapter.video_guide.dire.text.2")).build();
//
// 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.4")).build();
//
// gettingStarted.addEntry("engineer_house", prefix("chapter.engineer_house"), bookStack)
// .addTextPage(prefix("chapter.engineer_house.text.1")).build()
// .addImagePage(ActuallyAdditions.modLoc("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(ActuallyAdditions.modLoc("textures/gui/booklet/page_atomic_reconstructor.png")).setBorder(false).build()
// .addTextPage(prefix("chapter.crystals.text.5")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("atomic_reconstructor"))
// .setText(prefix("chapter.crystals.text.6")).build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_restonia_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_restonia_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_palis_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_palis_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_diamatine_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_diamatine_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_void_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_void_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_emeradic_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_emeradic_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_enori_crystal_block"), crystalsBuilder))
// .setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_enori_crystal"))
// .setText("booklet.actuallyadditions.reconstructor_recipe").build();
// crystalsBuilder.addCraftingPage(ActuallyAdditions.modLoc("decompress/restonia_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/restonia_crystal_block")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("decompress/palis_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/palis_crystal_block")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("decompress/diamatine_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/diamatine_crystal_block")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("decompress/void_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/void_crystal_block")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("decompress/emeradic_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/emeradic_crystal_block")).build()
// .addCraftingPage(ActuallyAdditions.modLoc("decompress/enori_crystal"))
// .setRecipe2(ActuallyAdditions.modLoc("compress/enori_crystal_block")).build();
// crystalsBuilder.build();
//
// //End of Getting Started
//
//
// //Finish book
// bookBuilder.build(consumer);
// }
//
// private String prefix(String name) {
// return "booklet.actuallyadditions." + name;
// }
//}

View file

@ -1,128 +0,0 @@
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.core.HolderLookup;
import net.minecraft.data.PackOutput;
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.concurrent.CompletableFuture;
import java.util.function.Consumer;
public class PatchouliGenerator extends PatchouliBookProvider {
public PatchouliGenerator(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider) {
super(output, ActuallyAdditions.MODID, "en_us", lookupProvider);
}
@Override
protected void addBooks(Consumer<BookBuilder> consumer, HolderLookup.Provider provider) {
final ItemStack bookStack = ActuallyItems.ITEM_BOOKLET.get().getDefaultInstance();
BookBuilder bookBuilder = createBookBuilder("booklet",
prefix("item.actuallyadditions.booklet"),
"<i>To be perfectly honest, I never actually realized how much content Actually Additions has before.<r><n> - Ellpeck",
provider)
.setVersion("153")
.setCreativeTab("actuallyadditions.tab")
.setCustomBookItem(bookStack)
.setBookTexture("actuallyadditions:textures/gui/booklet/booklet.png")
.setShowProgress(false)
.setUseBlockyFont(false)
.setI18n(true)
.setDontGenerateBook(true)
.addMacro("<imp>", "$(2)")
.addMacro("<item>", "$(9)")
.addMacro("<r>", "$()")
.addMacro("<n>", "$(br)")
.addMacro("<i>", "$(o)")
.addMacro("<tifisgrin>", "$(4)$(n)")
.setUseResourcePack(true);
//Getting Started
CategoryBuilder gettingStarted = bookBuilder.addCategory("getting_started", prefix("indexEntry.getting_started"),
"", bookStack);
gettingStarted.addEntry("tutorial", prefix("chapter.book_tutorial"), bookStack)
.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(ActuallyAdditions.modLoc("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()
.addTextPage(prefix("chapter.video_guide.booty.text.2")).build()
.addLinkPage("https://www.youtube.com/playlist?list=PLJeFZ64pT89MrTRZYzD_rtHFajPVlt6cF", prefix("chapter.video_guide.booty.button"))
.setText(prefix("chapter.video_guide.dire.text.1")).build()
.addTextPage(prefix("chapter.video_guide.dire.text.2")).build();
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.4")).build();
gettingStarted.addEntry("engineer_house", prefix("chapter.engineer_house"), bookStack)
.addTextPage(prefix("chapter.engineer_house.text.1")).build()
.addImagePage(ActuallyAdditions.modLoc("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(ActuallyAdditions.modLoc("textures/gui/booklet/page_atomic_reconstructor.png")).setBorder(false).build()
.addTextPage(prefix("chapter.crystals.text.5")).build()
.addCraftingPage(ActuallyAdditions.modLoc("atomic_reconstructor"))
.setText(prefix("chapter.crystals.text.6")).build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_restonia_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_restonia_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_palis_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_palis_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_diamatine_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_diamatine_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_void_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_void_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_emeradic_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_emeradic_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addPage(new ReconstructorPageBuilder(ActuallyAdditions.modLoc("laser/crystalize_enori_crystal_block"), crystalsBuilder))
.setRecipe2(ActuallyAdditions.modLoc("laser/crystalize_enori_crystal"))
.setText("booklet.actuallyadditions.reconstructor_recipe").build();
crystalsBuilder.addCraftingPage(ActuallyAdditions.modLoc("decompress/restonia_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/restonia_crystal_block")).build()
.addCraftingPage(ActuallyAdditions.modLoc("decompress/palis_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/palis_crystal_block")).build()
.addCraftingPage(ActuallyAdditions.modLoc("decompress/diamatine_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/diamatine_crystal_block")).build()
.addCraftingPage(ActuallyAdditions.modLoc("decompress/void_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/void_crystal_block")).build()
.addCraftingPage(ActuallyAdditions.modLoc("decompress/emeradic_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/emeradic_crystal_block")).build()
.addCraftingPage(ActuallyAdditions.modLoc("decompress/enori_crystal"))
.setRecipe2(ActuallyAdditions.modLoc("compress/enori_crystal_block")).build();
crystalsBuilder.build();
//End of Getting Started
//Finish book
bookBuilder.build(consumer);
}
private String prefix(String name) {
return "booklet.actuallyadditions." + name;
}
}

View file

@ -10,19 +10,24 @@
package de.ellpeck.actuallyadditions.mod;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.ActuallyTags;
import de.ellpeck.actuallyadditions.api.farmer.IFarmerBehavior;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.components.ActuallyComponents;
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
import de.ellpeck.actuallyadditions.mod.config.conditions.BoolConfigCondition;
import de.ellpeck.actuallyadditions.mod.crafting.ActuallyRecipes;
import de.ellpeck.actuallyadditions.mod.data.WorldData;
import de.ellpeck.actuallyadditions.mod.entity.EntityWorm;
import de.ellpeck.actuallyadditions.mod.entity.InitEntities;
import de.ellpeck.actuallyadditions.mod.event.CommonEvents;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyVillages;
import de.ellpeck.actuallyadditions.mod.gen.modifier.BoolConfigFeatureBiomeModifier;
import de.ellpeck.actuallyadditions.mod.gen.village.ActuallyPOITypes;
import de.ellpeck.actuallyadditions.mod.gen.village.ActuallyVillagers;
import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager;
@ -39,8 +44,13 @@ import de.ellpeck.actuallyadditions.mod.update.UpdateChecker;
import de.ellpeck.actuallyadditions.mod.util.ResourceReloader;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
@ -51,12 +61,19 @@ import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.common.conditions.ICondition;
import net.neoforged.neoforge.common.world.BiomeModifier;
import net.neoforged.neoforge.event.AddReloadListenerEvent;
import net.neoforged.neoforge.event.server.ServerStartedEvent;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.Supplier;
@Mod(ActuallyAdditions.MODID)
public class ActuallyAdditions {
@ -72,6 +89,22 @@ public class ActuallyAdditions {
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"));
private static final DeferredRegister<MapCodec<? extends ICondition>> CONDITION_CODECS = DeferredRegister.create(NeoForgeRegistries.Keys.CONDITION_CODECS, MODID);
public static final DeferredHolder<MapCodec<? extends ICondition>, MapCodec<BoolConfigCondition>> BOOL_CONFIG_CONDITION = CONDITION_CODECS.register("bool_config_condition", () -> BoolConfigCondition.CODEC);
public static final DeferredRegister<MapCodec<? extends BiomeModifier>> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, MODID);
public static final Supplier<MapCodec<BoolConfigFeatureBiomeModifier>> BOOL_CONFIG_MODIFIER = BIOME_MODIFIER_SERIALIZERS.register("bool_config_feature_modifier", () ->
RecordCodecBuilder.mapCodec(builder -> builder.group(
Biome.LIST_CODEC.fieldOf("biomes").forGetter(BoolConfigFeatureBiomeModifier::biomes),
PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(BoolConfigFeatureBiomeModifier::features),
GenerationStep.Decoration.CODEC.fieldOf("step").forGetter(BoolConfigFeatureBiomeModifier::step),
Codec.STRING.fieldOf("boolConfig").forGetter(BoolConfigFeatureBiomeModifier::boolConfig)
).apply(builder, BoolConfigFeatureBiomeModifier::new))
);
public static boolean commonCapsLoaded;
public ActuallyAdditions(IEventBus eventBus, ModContainer container, Dist dist) {
@ -86,14 +119,14 @@ public class ActuallyAdditions {
ActuallyPOITypes.init(eventBus);
ActuallyComponents.init(eventBus);
ActuallyLootModifiers.init(eventBus);
ActuallyContainers.init(eventBus);
ActuallyContainers.CONTAINERS.register(eventBus);
ArmorMaterials.init(eventBus);
InitEntities.init(eventBus);
InitFluids.init(eventBus);
ActuallyBiomeModifiers.init(eventBus);
ENTITIES.register(eventBus);
CONDITION_CODECS.register(eventBus);
BIOME_MODIFIER_SERIALIZERS.register(eventBus);
eventBus.addListener(this::onConfigReload);
ActuallyParticles.init(eventBus);
ActuallyTags.init();
eventBus.addListener(this::onConfigReload);
NeoForge.EVENT_BUS.addListener(this::serverStarted);
NeoForge.EVENT_BUS.addListener(this::serverStopped);
@ -103,6 +136,7 @@ public class ActuallyAdditions {
NeoForge.EVENT_BUS.addListener(ActuallyAdditions::reloadEvent);
NeoForge.EVENT_BUS.addListener(Worm::onHoe);
NeoForge.EVENT_BUS.addListener(ActuallyVillages::modifyVillageStructures);
InitFluids.init(eventBus);
eventBus.addListener(PacketHandler::register);
eventBus.addListener(this::setup);
@ -130,6 +164,7 @@ public class ActuallyAdditions {
commonCapsLoaded = false; // Loader.isModLoaded("commoncapabilities");
new UpdateChecker();
InitEntities.init(); // todo: [port] replace
}
private void onConfigReload(ModConfigEvent event) {

View file

@ -16,7 +16,6 @@ import de.ellpeck.actuallyadditions.mod.blocks.render.RenderBatteryBox;
import de.ellpeck.actuallyadditions.mod.blocks.render.RenderDisplayStand;
import de.ellpeck.actuallyadditions.mod.blocks.render.RenderEmpowerer;
import de.ellpeck.actuallyadditions.mod.blocks.render.RenderLaserRelay;
import de.ellpeck.actuallyadditions.mod.entity.InitEntities;
import de.ellpeck.actuallyadditions.mod.entity.RenderWorm;
import de.ellpeck.actuallyadditions.mod.event.ClientEvents;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
@ -143,7 +142,7 @@ public class ActuallyAdditionsClient {
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_ITEM_ADVANCED.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_FLUIDS.getTileEntityType(), RenderLaserRelay::new);
event.registerEntityRenderer(InitEntities.ENTITY_WORM.get(), RenderWorm::new);
event.registerEntityRenderer(ActuallyAdditions.ENTITY_WORM.get(), RenderWorm::new);
}
public static void registerParticleFactories(RegisterParticleProvidersEvent event) {

View file

@ -11,19 +11,19 @@
package de.ellpeck.actuallyadditions.mod.entity;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.function.Supplier;
public final class InitEntities {
private static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(BuiltInRegistries.ENTITY_TYPE, ActuallyAdditions.MODID);
public static final Supplier<EntityType<EntityWorm>> ENTITY_WORM = ENTITIES.register("worm", () -> EntityType.Builder.of(EntityWorm::new, MobCategory.MISC).build(ActuallyAdditions.MODID + ":worm"));
public static void init(IEventBus bus) {
ENTITIES.register(bus);
public static void init() {
ActuallyAdditions.LOGGER.info("Initializing Entities...");
//EntityRegistry.registerModEntity(ActuallyAdditions.modLoc("worm"), EntityWorm.class, ActuallyAdditions.MODID + ".worm", 0, ActuallyAdditions.INSTANCE, 64, 1, false);
}
public static void initClient() {
//RenderingRegistry.registerEntityRenderingHandler(EntityWorm.class, RenderWorm::new);
}
}

View file

@ -1,10 +1,6 @@
package de.ellpeck.actuallyadditions.mod.gen;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.conditions.BoolConfigCondition;
import de.ellpeck.actuallyadditions.mod.gen.modifier.BoolConfigFeatureBiomeModifier;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.HolderSet;
@ -15,35 +11,10 @@ import net.minecraft.tags.BiomeTags;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.common.conditions.ICondition;
import net.neoforged.neoforge.common.world.BiomeModifier;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.neoforged.neoforge.registries.NeoForgeRegistries;
import java.util.function.Supplier;
public final class ActuallyBiomeModifiers {
private static final DeferredRegister<MapCodec<? extends ICondition>> CONDITION_CODECS = DeferredRegister.create(NeoForgeRegistries.Keys.CONDITION_CODECS, ActuallyAdditions.MODID);
public static final DeferredHolder<MapCodec<? extends ICondition>, MapCodec<BoolConfigCondition>> BOOL_CONFIG_CONDITION = CONDITION_CODECS.register("bool_config_condition", () -> BoolConfigCondition.CODEC);
public static final DeferredRegister<MapCodec<? extends BiomeModifier>> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, ActuallyAdditions.MODID);
public static final Supplier<MapCodec<BoolConfigFeatureBiomeModifier>> BOOL_CONFIG_MODIFIER = BIOME_MODIFIER_SERIALIZERS.register("bool_config_feature_modifier", () ->
RecordCodecBuilder.mapCodec(builder -> builder.group(
Biome.LIST_CODEC.fieldOf("biomes").forGetter(BoolConfigFeatureBiomeModifier::biomes),
PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(BoolConfigFeatureBiomeModifier::features),
GenerationStep.Decoration.CODEC.fieldOf("step").forGetter(BoolConfigFeatureBiomeModifier::step),
Codec.STRING.fieldOf("boolConfig").forGetter(BoolConfigFeatureBiomeModifier::boolConfig)
).apply(builder, BoolConfigFeatureBiomeModifier::new))
);
public static void init(IEventBus bus) {
CONDITION_CODECS.register(bus);
BIOME_MODIFIER_SERIALIZERS.register(bus);
}
public class ActuallyBiomeModifiers {
protected static final ResourceKey<BiomeModifier> ADD_BLACK_QUARTZ_ORE_MODIFIER = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS,
ActuallyAdditions.modLoc("add_black_quartz"));

View file

@ -1,8 +1,8 @@
package de.ellpeck.actuallyadditions.mod.gen.modifier;
import com.mojang.serialization.MapCodec;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.world.level.biome.Biome;
@ -34,6 +34,6 @@ public record BoolConfigFeatureBiomeModifier(HolderSet<Biome> biomes, HolderSet<
@Override
public MapCodec<? extends BiomeModifier> codec() {
return ActuallyBiomeModifiers.BOOL_CONFIG_MODIFIER.get();
return ActuallyAdditions.BOOL_CONFIG_MODIFIER.get();
}
}

View file

@ -3,14 +3,13 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.inventory.MenuType;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.common.extensions.IMenuTypeExtension;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.function.Supplier;
public class ActuallyContainers {
private static final DeferredRegister<MenuType<?>> CONTAINERS = DeferredRegister.create(BuiltInRegistries.MENU, ActuallyAdditions.MODID);
public static final DeferredRegister<MenuType<?>> CONTAINERS = DeferredRegister.create(BuiltInRegistries.MENU, ActuallyAdditions.MODID);
public static final Supplier<MenuType<SackContainer>> SACK_CONTAINER = CONTAINERS.register("sack_container", () -> IMenuTypeExtension.create(SackContainer::fromNetwork));
public static final Supplier<MenuType<VoidSackContainer>> VOID_SACK_CONTAINER = CONTAINERS.register("void_sack_container", () -> IMenuTypeExtension.create(VoidSackContainer::new));
@ -40,9 +39,5 @@ public class ActuallyContainers {
public static final Supplier<MenuType<ContainerRangedCollector>> RANGED_COLLECTOR_CONTAINER = CONTAINERS.register("ranged_collector_container", () -> IMenuTypeExtension.create(ContainerRangedCollector::fromNetwork));
public static final Supplier<MenuType<ContainerXPSolidifier>> XPSOLIDIFIER_CONTAINER = CONTAINERS.register("xpsolidifier_container", () -> IMenuTypeExtension.create(ContainerXPSolidifier::fromNetwork));
public static final Supplier<MenuType<ItemTagContainer>> ITEM_TAG_CONTAINER = CONTAINERS.register("item_tag_container", () -> IMenuTypeExtension.create(ItemTagContainer::fromNetwork));
public static void init(IEventBus evt) {
CONTAINERS.register(evt);
}
}

View file

@ -10,9 +10,9 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
import de.ellpeck.actuallyadditions.mod.entity.EntityWorm;
import de.ellpeck.actuallyadditions.mod.entity.InitEntities;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult;
@ -48,7 +48,7 @@ public class Worm extends ItemBase {
if (!worms.isEmpty())
return super.useOn(context);
EntityWorm worm = new EntityWorm(InitEntities.ENTITY_WORM.get(), level);
EntityWorm worm = new EntityWorm(ActuallyAdditions.ENTITY_WORM.get(), level);
worm.setPos(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5);
worm.setCustomName(stack.getHoverName());
level.addFreshEntity(worm);

View file

@ -0,0 +1,25 @@
// TODO: [port] not used
///*
// * This file ("ISmileyCloudEasterEgg.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.misc.cloud;
//
//public interface ISmileyCloudEasterEgg {
//
// /**
// * Extra rendering function
// */
// void renderExtra(float f);
//
// /**
// * The name the cloud has to have for this effect to occur
// */
// String[] getTriggerNames();
//}

View file

@ -0,0 +1,524 @@
// TODO: [port] not used
///*
// * This file ("SmileyCloudEasterEggs.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.misc.cloud;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks;
//import de.ellpeck.actuallyadditions.mod.items.InitItems;
//import de.ellpeck.actuallyadditions.mod.items.metalists.TheFoods;
//import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
//import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
//import net.minecraft.block.Block;
//
//import net.minecraft.init.Blocks;
//import net.minecraft.init.Items;
//import net.minecraft.item.ItemStack;
//
//public final class SmileyCloudEasterEggs {
//
// public static final List<ISmileyCloudEasterEgg> CLOUD_STUFF = new ArrayList<>();
//
// static {
// //Glenthor
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "glenthor", "glenthorlp", "twoofeight" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(true, new ItemStack(Items.DYE, 1, 2));
// renderHeadBlock(InitBlocks.blockHeatCollector, 0, 5F);
// }
// });
// //Ellpeck
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "ellpeck", "ellopecko", "peck" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemPhantomConnector));
// renderHeadBlock(InitBlocks.blockPhantomLiquiface, 0, 25F);
// }
// });
// //Tyrex
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "tyrex", "lord_tobinho", "tobinho" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.FISHING_ROD));
// renderHoldingItem(true, new ItemStack(Items.FISH));
// }
// });
// //Hose
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "dqmhose", "xdqmhose", "hose" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.REEDS));
// renderHeadBlock(Blocks.TORCH, 0, 15F);
// }
// });
// //Tobi
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "jemx", "jemxx", "jemxxx", "spielertobi200" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(true, new ItemStack(Items.MILK_BUCKET));
// renderHeadBlock(Blocks.REDSTONE_LAMP, 0, 35F);
// }
// });
// //Vazkii
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "vazkii", "vaski", "waskie" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(true, new ItemStack(Items.DYE, 1, 15));
// renderHeadBlock(Blocks.RED_FLOWER, 5, 20F);
// }
// });
// //Kitty
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "kitty", "kiddy", "kittyvancat", "kittyvancatlp" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(true, new ItemStack(Items.FISH));
// renderHoldingItem(false, new ItemStack(Items.MILK_BUCKET));
// renderHeadBlock(Blocks.WOOL, 10, 15F);
// }
// });
// //Canitzp
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "canitz", "canitzp", "kannnichts", "kannnichtsp" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.WOODEN_SWORD));
// renderHeadBlock(Blocks.CHEST, 0, 70F);
// }
// });
// //Lari
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "lari", "larixine", "xine", "laxi", "lachsirine", "lala", "lalilu" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.IRON_HELMET));
// renderHeadBlock(InitBlocks.blockBlackLotus, 0, 28F);
// }
// });
// //RotesDing
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "rotesding", "dotesring" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.MILK_BUCKET));
// renderHoldingItem(true, new ItemStack(Items.DYE, 1, 1));
// renderHeadBlock(Blocks.WOOL, 14, 18F);
// }
// });
// //Bande
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "bande", "bandelenth" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.DIAMOND_PICKAXE));
// renderHeadBlock(Blocks.WOOL, 4, 18F);
// }
// });
// //Wolle
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "wolle", "wuitoi" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.STRING));
// renderHeadBlock(Blocks.WOOL, 0, 18F);
// }
// });
// //Pakto
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "pakto", "paktosan", "paktosanlp" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.DYE, 1, 9));
// renderHeadBlock(InitBlocks.blockColoredLampOn, 6, 18F);
// }
// });
// //Honka
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "honka", "honkalonka", "lonka", "lonki" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemLeafBlowerAdvanced, 1, 9));
// renderHeadBlock(Blocks.HAY_BLOCK, 0, 74F);
// }
// });
// //Acid
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "acid", "acid_blues", "acidblues" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemFoods, 1, TheFoods.PIZZA.ordinal()));
// renderHeadBlock(Blocks.BOOKSHELF, 0, 27F);
// }
// });
// //Jasin
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "jasin", "jasindow" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.WRITTEN_BOOK));
// renderHeadBlock(Blocks.WEB, 0, 56F);
// }
// });
// //ShadowNinjaCat
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "shadowninjacat", "ninja", "tl" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.DIAMOND_SWORD));
// renderHeadBlock(Blocks.DIAMOND_BLOCK, 0, 26F);
// }
// });
// //NihonTiger
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "nihon", "nihontiger", "tiger" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.STONE_PICKAXE));
// renderHoldingItem(true, new ItemStack(Items.POISONOUS_POTATO));
// renderHeadBlock(Blocks.GRAVEL, 0, 47F);
// }
// });
// //FrauBaerchen
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "fraubaerchen", "baerchen", "nina" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.COOKIE));
// renderHoldingItem(true, new ItemStack(Items.PAPER));
// renderHeadBlock(Blocks.COAL_BLOCK, 0, 60F);
// }
// });
// //Diddi
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "0xdd", "didi", "diddi", "theultimatehose" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(true, new ItemStack(InitItems.itemDrill));
// renderHeadBlock(Blocks.REDSTONE_BLOCK, 0, 30F);
// }
// });
// //MineLoad
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "mineload", "miney", "loady", "mineyloady" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemMagnetRing));
// renderHeadBlock(Blocks.CRAFTING_TABLE, 0, 35F);
// }
// });
// //Kilobyte (When I asked him if he liked the mod, he just looked at the code. Maybe he'll find this eventually.)
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "kilobyte", "kilo", "byte" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DRILL_CORE.ordinal()));
// renderHeadBlock(Blocks.REDSTONE_ORE, 0, 80F);
// }
// });
// //XDjackieXD
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "jackie", "xdjackiexd", "xdjackie", "jackiexd" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.ENCHANTED_BOOK));
// renderHeadBlock(InitBlocks.blockDirectionalBreaker, 0, 40F);
// }
// });
// //Little Lampi (I still can't get over it)
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "lampi", "littlelampi", "little lampi" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.GLOWSTONE_DUST));
// renderHeadBlock(InitBlocks.blockColoredLampOn, 4, 40F);
// }
// });
// //AtomSponge
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "sponge", "atomsponge", "atom", "explosions", "explosion" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.GUNPOWDER));
// renderHeadBlock(Blocks.SPONGE, 0, 20F);
// }
// });
// //Mattzimann
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "mattzimann", "mattziman", "matziman", "marzipan", "mattzi" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemSwordEmerald));
// renderHeadBlock(InitBlocks.blockCoffeeMachine, 0, 35F);
// }
// });
// //Etho
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "etho", "ethoslab" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.REDSTONE));
// renderHeadBlock(Blocks.REDSTONE_BLOCK, 0, 48F);
// }
// });
// //Direwolf20
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "direwolf", "dire", "direwolf20", "dw20" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(Items.BONE));
// renderHeadBlock(Blocks.BONE_BLOCK, 0, 48F);
// }
// });
// //Jessassin
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "jessassin", "thejessassin" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHeadBlock(InitBlocks.blockLaserRelayItem, 0, 27F);
// renderHoldingItem(false, new ItemStack(InitItems.itemLaserWrench));
// }
// });
// //Biffa
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "biffa", "biffatech", "biffaplays", "biffa2001" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemCoffee));
// }
// });
// //Xisuma
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "xisuma", "xisumavoid" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHeadBlock(Blocks.REDSTONE_BLOCK, 0, 93F);
// renderHoldingItem(false, new ItemStack(Items.ELYTRA));
// }
// });
// //Welsknight
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "welsknight", "wels" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHeadBlock(Blocks.STONE_BRICK_STAIRS, 0, 10F);
// renderHoldingItem(false, new ItemStack(Items.DIAMOND_PICKAXE));
// }
// });
// //xbony2
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "bony", "xbony", "xbony2" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHoldingItem(false, new ItemStack(InitItems.itemBooklet));
// renderHeadBlock(InitBlocks.blockSmileyCloud, 0, 13F);
// }
// });
// //MattaBase
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "themattabase", "mattabase", "matt", "mad" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHeadBlock(Blocks.WOOL, 13, 35F);
// renderHoldingItem(false, new ItemStack(InitItems.itemSwordQuartz));
// renderHoldingItem(true, new ItemStack(Items.SHIELD));
// }
// });
// //Cloudy
// register(new ISmileyCloudEasterEgg() {
// @Override
// public String[] getTriggerNames() {
// return new String[] { "cloudy", "cloudhunter" };
// }
//
// @Override
// public void renderExtra(float f) {
// renderHeadBlock(Blocks.REDSTONE_BLOCK, 0, 17F);
// //other hand is for fapping
// renderHoldingItem(true, new ItemStack(Items.BOW));
// }
// });
// }
//
// private static void register(ISmileyCloudEasterEgg egg) {
// CLOUD_STUFF.add(egg);
// }
//
// private static void renderHoldingItem(boolean leftHand, ItemStack stack) {
// GlStateManager.pushMatrix();
// GlStateManager.rotate(180F, 0F, 0F, 1F);
// GlStateManager.rotate(90, 0, 1, 0);
// GlStateManager.translate(-0.15, -1F, leftHand ? -0.525F : 0.525F);
// GlStateManager.scale(0.75F, 0.75F, 0.75F);
//
// AssetUtil.renderItemInWorld(stack);
//
// GlStateManager.popMatrix();
// }
//
// private static void renderHeadBlock(Block block, int meta, float rotation) {
// GlStateManager.pushMatrix();
// GlStateManager.disableLighting();
// GlStateManager.translate(-0.015F, 0.625F, 0.04F);
// GlStateManager.scale(0.5F, 0.5F, 0.5F);
// GlStateManager.rotate(180F, 1F, 0F, 0F);
// GlStateManager.rotate(rotation, 0F, 1F, 0F);
//
// AssetUtil.renderBlockInWorld(block, meta);
//
// GlStateManager.enableLighting();
// GlStateManager.popMatrix();
// }
//}

View file

@ -76,6 +76,9 @@ public final class PacketHandler {
double outY = compound.getDouble("OutY") + 0.525;
double outZ = compound.getDouble("OutZ") + 0.5;
// Particle fx = new ParticleLaserItem(mc.level, outX, outY, outZ, stack, 0.025, inX, inY, inZ);
//mc.effectRenderer.addEffect(fx); //TODO
mc.level.addParticle(ParticleLaserItem.Factory.createData(stack, inX, inY, inZ),
outX, outY, outZ, 0, 0.025, 0);
}

View file

@ -0,0 +1,57 @@
// TODO: [port][note] no longer required
///*
// * This file ("TreasureChestHandler.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.recipe;
//
//import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
//import de.ellpeck.actuallyadditions.mod.items.InitItems;
//import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams;
//import net.minecraft.init.Items;
//import net.minecraft.item.ItemStack;
//
//public final class TreasureChestHandler {
//
// public static void init() {
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.DIAMOND), 5, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.IRON_INGOT), 30, 1, 5);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.GOLD_NUGGET), 60, 1, 8);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.GOLD_INGOT), 35, 1, 3);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.ENDER_PEARL), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.EMERALD), 3, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.EXPERIENCE_BOTTLE), 5, 3, 6);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemSolidifiedExperience), 15, 3, 6);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_11), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_13), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_BLOCKS), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_CAT), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_CHIRP), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_FAR), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_MALL), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_MELLOHI), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_STAL), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_STRAD), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_WARD), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.RECORD_WAIT), 1, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.SADDLE), 5, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.NAME_TAG), 20, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.CU_BA_RA.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.GRA_KI_BA.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.PL_AP_LE.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.CH_AP_CI.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.HO_ME_KI.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(InitItems.itemJams, 1, TheJams.PI_CO.ordinal()), 10, 1, 2);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.FISH), 80, 1, 3);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.FISH, 1, 1), 60, 1, 3);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.FISH, 1, 2), 10, 1, 1);
// ActuallyAdditionsAPI.addTreasureChestLoot(new ItemStack(Items.FISH, 1, 3), 40, 1, 2);
// }
//
//}

View file

@ -49,11 +49,25 @@ public abstract class TileEntityBase extends BlockEntity {
this.writeSyncableNBT(compound, lookupProvider, NBTType.SAVE_TILE);
}
// TODO: [port] remove if the above is correct
// @Override
// public final CompoundNBT writeToNBT(CompoundNBT compound) {
// this.writeSyncableNBT(compound, NBTType.SAVE_TILE);
// return compound;
// }
@Override
public void loadAdditional(CompoundTag compound, HolderLookup.Provider lookupProvider) {
this.readSyncableNBT(compound, lookupProvider, NBTType.SAVE_TILE);
}
// TODO: [port] remove if the above is correct
// @Override
// public final void readFromNBT(CompoundNBT compound) {
// this.readSyncableNBT(compound, NBTType.SAVE_TILE);
// }
@Nullable
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
@ -136,6 +150,22 @@ public abstract class TileEntityBase extends BlockEntity {
}
}
// TODO: [port] eval if still required in some way
// @Override
// public boolean shouldRefresh(World world, BlockPos pos, BlockState oldState, BlockState newState) {
// return !oldState.getBlock().isAssociatedBlock(newState.getBlock());
// }
@Deprecated
public String getNameForTranslation() {
return "removeme";// "container.actuallyadditions." + this.name + ".name";
}
// @Override
// public ITextComponent getDisplayName() {
// return new TranslationTextComponent(this.getNameForTranslation());
// }
public int getComparatorStrength() {
return 0;
}

View file

@ -78,20 +78,16 @@ public class TileEntityBreaker extends TileEntityInventoryBase implements MenuPr
public static <T extends BlockEntity> void serverTick(Level level, BlockPos pos, BlockState state, T t) {
if (t instanceof TileEntityBreaker tile) {
tile.serverTick();
}
}
@Override
protected void serverTick() {
super.serverTick();
if (!isRedstonePowered && !isPulseMode) {
if (currentTime > 0) {
currentTime--;
if (currentTime <= 0) {
doWork();
if (!tile.isRedstonePowered && !tile.isPulseMode) {
if (tile.currentTime > 0) {
tile.currentTime--;
if (tile.currentTime <= 0) {
tile.doWork();
}
} else {
currentTime = 15;
tile.currentTime = 15;
}
}
}
}

View file

@ -0,0 +1,141 @@
// FIXME: [port] No longer required
///*
// * This file ("TileEntityCompost.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.tile;
//
//import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
//import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe;
//import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
//import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
//import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
//import de.ellpeck.actuallyadditions.mod.util.StackUtil;
//import net.minecraft.block.BlockState;
//import net.minecraft.init.Blocks;
//import net.minecraft.item.ItemStack;
//import net.minecraft.nbt.CompoundNBT;
//
//public class TileEntityCompost extends TileEntityInventoryBase {
//
// public static final int COMPOST_TIME_TICKS = 3000;
//
// protected int conversionTime;
// protected CompostRecipe recipe;
//
// public TileEntityCompost() {
// super(ActuallyTiles.COMPOST_TILE.get(), 1);
// }
//
// public static CompostRecipe getRecipeForInput(ItemStack input) {
// if (StackUtil.isValid(input)) {
// for (CompostRecipe recipe : ActuallyAdditionsAPI.COMPOST_RECIPES) {
// if (recipe.matches(input)) {
// return recipe;
// }
// }
// }
// return null;
// }
//
// @Override
// public void writeSyncableNBT(CompoundNBT compound, NBTType type) {
// super.writeSyncableNBT(compound, lookupProvider, type);
// if (type != NBTType.SAVE_BLOCK) {
// compound.putInt("ConversionTime", this.conversionTime);
// }
// }
//
// @Override
// public boolean shouldSyncSlots() {
// return true;
// }
//
// @Override
// public void readSyncableNBT(CompoundNBT compound, NBTType type) {
// super.readSyncableNBT(compound, lookupProvider, type);
// if (type != NBTType.SAVE_BLOCK) {
// this.conversionTime = compound.getInt("ConversionTime");
// }
// if (type == NBTType.SYNC) {
// this.world.markBlockRangeForRenderUpdate(this.pos, this.pos.up());
// }
// }
//
// @Override
// public void updateEntity() {
// super.updateEntity();
// if (!this.world.isRemote) {
// boolean theFlag = this.conversionTime > 0;
// ItemStack input = this.inv.getStackInSlot(0);
// if (StackUtil.isValid(input)) {
// if (this.recipe == null || !this.recipe.matches(input)) {
// this.recipe = getRecipeForInput(input);
// }
// if (this.recipe != null) {
// this.conversionTime++;
// if (this.conversionTime >= COMPOST_TIME_TICKS) {
// ItemStack stack = this.recipe.getOutput().copy();
// stack.setCount(input.getCount());
// this.inv.setStackInSlot(0, stack);
// this.conversionTime = 0;
// this.markDirty();
// }
// } else {
// this.conversionTime = 0;
// }
// }
//
// if (theFlag != this.conversionTime > 0) {
// this.markDirty();
// }
// }
// }
//
// @Override
// public IAcceptor getAcceptor() {
// return (slot, stack, automation) -> getRecipeForInput(stack) != null;
// }
//
// @Override
// public IRemover getRemover() {
// return (slot, automation) -> getRecipeForInput(this.inv.getStackInSlot(slot)) == null;
// }
//
// public BlockState getCurrentDisplay() {
// ItemStack input = this.inv.getStackInSlot(0);
// CompostRecipe displayRecipe = this.recipe;
// if (displayRecipe == null || !displayRecipe.matches(input)) {
// displayRecipe = getRecipeForInput(input);
// }
//
// if (displayRecipe == null) {
// for (CompostRecipe r : ActuallyAdditionsAPI.COMPOST_RECIPES) {
// if (ItemUtil.areItemsEqual(input, r.getOutput(), true)) {
// return r.getOutputDisplay();
// } else if (r.getInput().apply(input)) {
// return r.getInputDisplay();
// }
// }
// }
//
// if (displayRecipe != null) {
// return displayRecipe.getInputDisplay();
// }
// return Blocks.AIR.getDefaultState();
// }
//
// public float getHeight() {
// ItemStack input = this.inv.getStackInSlot(0);
// if (input.isEmpty()) {
// return 0;
// }
// return (float) input.getCount() / input.getMaxStackSize();
// }
//}

View file

@ -35,11 +35,38 @@ public abstract class TileEntityInventoryBase extends TileEntityBase {
this.inv = new TileStackHandler(slots);
}
public static void saveSlots(IItemHandler slots, CompoundTag compound, HolderLookup.Provider provider) {
if (slots != null && slots.getSlots() > 0) {
ListTag tagList = new ListTag();
for (int i = 0; i < slots.getSlots(); i++) {
ItemStack slot = slots.getStackInSlot(i);
CompoundTag tagCompound = new CompoundTag();
if (StackUtil.isValid(slot)) {
slot.save(provider, tagCompound);
}
tagList.add(tagCompound);
}
compound.put("Items", tagList);
}
}
public static void loadSlots(IItemHandlerModifiable slots, CompoundTag compound, HolderLookup.Provider provider) {
if (slots != null && slots.getSlots() > 0) {
ListTag tagList = compound.getList("Items", 10);
for (int i = 0; i < slots.getSlots(); i++) {
CompoundTag tagCompound = tagList.getCompound(i);
slots.setStackInSlot(i, tagCompound.contains("id")
? ItemStack.parseOptional(provider, tagCompound)
: ItemStack.EMPTY);
}
}
}
@Override
public void writeSyncableNBT(CompoundTag compound, HolderLookup.Provider lookupProvider, NBTType type) {
super.writeSyncableNBT(compound, lookupProvider, type);
if (type == NBTType.SAVE_TILE || type == NBTType.SYNC && this.shouldSyncSlots()) {
compound.put("Items", this.inv.serializeNBT(lookupProvider));
saveSlots(this.inv, compound, lookupProvider);
}
}
@ -82,7 +109,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase {
public void readSyncableNBT(CompoundTag compound, HolderLookup.Provider lookupProvider, NBTType type) {
super.readSyncableNBT(compound, lookupProvider, type);
if (type == NBTType.SAVE_TILE || type == NBTType.SYNC && this.shouldSyncSlots()) {
this.inv.deserializeNBT(lookupProvider, compound.getCompound("Items"));
loadSlots(this.inv, compound, lookupProvider);
}
}

View file

@ -174,6 +174,12 @@ public abstract class TileEntityLaserRelay extends TileEntityInventoryBase {
return this.cachedNetwork;
}
// @Override TODO: Fix the renderBoundingBox
//
// public AABB getRenderBoundingBox() {
// return INFINITE_EXTENT_AABB;
// }
@Override
public boolean shouldSyncSlots() {
return true;

View file

@ -110,6 +110,7 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay {
return transmitted;
}
// TODO: [port] this is super hacky, review and fix up
@Override
public IEnergyStorage getEnergyStorage(Direction facing) {
return this.energyStorages[facing == null

View file

@ -248,11 +248,13 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay {
}
@Override
public Component getExtraDisplayString() {
return Component.translatable("info.actuallyadditions.laserRelay.fluid.extra").append(": ").append(Component.translatable(this.mode.name).withStyle(ChatFormatting.DARK_RED));
}
@Override
public Component getCompassDisplayString() {
return Component.translatable("info.actuallyadditions.laserRelay.energy.display").withStyle(ChatFormatting.GREEN);
}

View file

@ -0,0 +1,61 @@
// TODO: [port][note]: Not used
///*
// * This file ("TileEntitySmileyCloud.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.tile;
//
//import de.ellpeck.actuallyadditions.mod.network.gui.IStringReactor;
//import net.minecraft.entity.player.PlayerEntity;
//import net.minecraft.nbt.CompoundNBT;
//
//public class TileEntitySmileyCloud extends TileEntityBase implements IStringReactor {
//
// public String name;
// private String nameBefore;
//
// public TileEntitySmileyCloud() {
// super("smileyCloud");
// }
//
// @Override
// public void writeSyncableNBT(CompoundNBT compound, NBTType type) {
// super.writeSyncableNBT(compound, lookupProvider, type);
// if (this.name != null && type != NBTType.SAVE_BLOCK) {
// compound.setString("Name", this.name);
// }
// }
//
// @Override
// public void readSyncableNBT(CompoundNBT compound, NBTType type) {
// super.readSyncableNBT(compound, lookupProvider, type);
// if (type != NBTType.SAVE_BLOCK) {
// this.name = compound.getString("Name");
// }
// }
//
// @Override
// public void updateEntity() {
// super.updateEntity();
// if (!this.world.isRemote) {
// boolean nameChanged = this.name != null
// ? !this.name.equals(this.nameBefore)
// : this.nameBefore != null;
// if (nameChanged && this.sendUpdateWithInterval()) {
// this.nameBefore = this.name;
// this.markDirty();
// }
// }
// }
//
// @Override
// public void onTextReceived(String text, int textID, PlayerEntity player) {
// this.name = text;
// }
//}

View file

@ -72,6 +72,11 @@ public final class AssetUtil {
guiGraphics.drawString(font, text, xSize / 2f - font.width(text) / 2f, yPositionOfMachineText, 0xFFFFFF, false);
}
public static void displayNameString(GuiGraphics guiGraphics, Font font, int xSize, int yPositionOfMachineText, TileEntityBase tile) {
displayNameString(guiGraphics, font, xSize, yPositionOfMachineText, I18n.get(tile.getNameForTranslation()));
}
// public static void renderBlockInWorld(Block block, int meta) {
// renderItemInWorld(new ItemStack(block, 1, meta), combinedLightIn, combinedOverlayIn, matrices, buffer);
// }

View file

@ -23,7 +23,6 @@ import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
@ -166,9 +165,8 @@ public final class WorldUtil {
if (level instanceof ServerLevel && StackUtil.isValid(stack) && pos != null) {
BlockPos offsetPos = pos.relative(side);
BlockState state = level.getBlockState(offsetPos);
boolean replaceable = state.canBeReplaced(new BlockPlaceContext(level, null, InteractionHand.MAIN_HAND, stack,
new BlockHitResult(new Vec3(0, 0, 0), side, pos, false)
));
Block block = state.getBlock();
boolean replaceable = false; //= block.canBeReplaced(world, offsetPos); //TODO
//Redstone
if (replaceable && stack.getItem() == Items.REDSTONE) {

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementalcraft:inert_crystal_ore"
"item": "elementalcraft:inert_crystal_ore"
},
"weight": 500
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:agate_ore"
"item": "elementsofpower:agate_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:citrine_ore"
"item": "elementsofpower:citrine_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:onyx_ore"
"item": "elementsofpower:onyx_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:rubellite_ore"
"item": "elementsofpower:rubellite_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:ruby_ore"
"item": "elementsofpower:ruby_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "elementsofpower:sapphire_ore"
"item": "elementsofpower:sapphire_ore"
},
"weight": 25
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "immersiveengineering:ore_silver"
"item": "immersiveengineering:ore_silver"
},
"weight": 1000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "mekanism:fluorite_ore"
"item": "mekanism:fluorite_ore"
},
"weight": 1000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "mekanism:lead_ore"
"item": "mekanism:lead_ore"
},
"weight": 2000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "mekanism:osmium_ore"
"item": "mekanism:osmium_ore"
},
"weight": 3000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "mekanism:tin_ore"
"item": "mekanism:tin_ore"
},
"weight": 2000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "mekanism:uranium_ore"
"item": "mekanism:uranium_ore"
},
"weight": 500
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "modern_industrialization:antimony_ore"
"item": "modern_industrialization:antimony_ore"
},
"weight": 1000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "modern_industrialization:lignite_coal_ore"
"item": "modern_industrialization:lignite_coal_ore"
},
"weight": 1500
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "modern_industrialization:monazite_ore"
"item": "modern_industrialization:monazite_ore"
},
"weight": 100
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "modern_industrialization:nickel_ore"
"item": "modern_industrialization:nickel_ore"
},
"weight": 2000
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "modern_industrialization:salt_ore"
"item": "modern_industrialization:salt_ore"
},
"weight": 500
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "powah:uraninite_ore"
"item": "powah:uraninite_ore"
},
"weight": 200
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:aluminum_ore_stone"
"item": "xycraft_world:aluminum_ore_stone"
},
"weight": 250
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:xychorium_ore_stone_blue"
"item": "xycraft_world:xychorium_ore_stone_blue"
},
"weight": 300
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:xychorium_ore_stone_dark"
"item": "xycraft_world:xychorium_ore_stone_dark"
},
"weight": 300
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:xychorium_ore_stone_green"
"item": "xycraft_world:xychorium_ore_stone_green"
},
"weight": 300
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:xychorium_ore_stone_light"
"item": "xycraft_world:xychorium_ore_stone_light"
},
"weight": 300
}

View file

@ -7,11 +7,10 @@
],
"type": "actuallyadditions:mining_lens",
"ingredient": {
"tag": "c:stones"
"tag": "forge:stone"
},
"result": {
"count": 1,
"id": "xycraft_world:xychorium_ore_stone_red"
"item": "xycraft_world:xychorium_ore_stone_red"
},
"weight": 300
}