Compare commits

...

21 commits

Author SHA1 Message Date
Mrbysco 817797ad3a Re-enable rendering of the GreenHouse glass and add culling 2024-03-09 02:33:07 +01:00
Flanks255 63719ef06f bumped version 2024-03-08 18:34:58 -06:00
Flanks255 2fbf2984ab More tweaks. 2024-03-08 18:24:19 -06:00
Michael Hillcox ecb8d46f50 fix: no more bad trace 2024-03-09 00:13:27 +00:00
Flanks255 d1438dd67e Fixed filling wand using wrong method. 2024-03-08 18:13:09 -06:00
Michael Hillcox cf8e56ab2a fix: whoops 2024-03-09 00:07:17 +00:00
Michael Hillcox d36cb9c76e fix: drill range 2024-03-09 00:06:58 +00:00
Flanks255 1183a169d8 Fiddle fiddle 2024-03-08 17:54:09 -06:00
Mrbysco f8cc525237 Order the codec properly please ;) 2024-03-09 00:37:34 +01:00
Mrbysco b261d92bcd Fix Liquid Fuel recipe codec 2024-03-09 00:34:53 +01:00
Mrbysco f2596f974a Feed the blockpos when opening a menu 2024-03-09 00:23:20 +01:00
Mrbysco 82aaacf1d9 Make canPlayerUse consistently use this.getBlockPos() 2024-03-09 00:23:01 +01:00
Flanks255 06ef7146e0 Fixed recipes, removed some wip entries. 2024-03-08 17:08:14 -06:00
Mrbysco 231656eddb Merge branch '1.20.4' of https://github.com/Ellpeck/ActuallyAdditions into 1.20.4 2024-03-09 00:04:00 +01:00
Mrbysco ed8ea0e616 Override stack sensitive isCorrectToolForDrops so it's aware of the current power 2024-03-09 00:03:51 +01:00
Flanks255 908a57b5e1 Fixed AIOT sprites 2024-03-08 17:00:38 -06:00
Flanks255 a622e497b3 Removed recipes for things that dont work yet. 2024-03-08 16:52:25 -06:00
Flanks255 1e32301013 Fixed missing recipes.
Fixed missing lang entries.
2024-03-08 16:41:51 -06:00
Flanks255 c29830adc3 Added cooking rice dough to bread. 2024-03-08 16:11:40 -06:00
Flanks255 db5d718dd5 Some cleaning. 2024-03-08 15:40:48 -06:00
Mrbysco 051388570a Fix negative attack speed 2024-03-08 20:30:17 +01:00
79 changed files with 735 additions and 241 deletions

View file

@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
# Actually Additions
mod_version=1.1.52
mod_version=1.2.0
# Forge
game_version=1.20.4

View file

@ -1,8 +1,8 @@
// 1.20.4 2024-03-04T22:51:31.6019301 Fuel Recipes
aef6f2014740888715f60df148e6d6e86dad4f53 data/actuallyadditions/recipes/liquid_fuel/canola_oil.json
3eead46bedb2a9175860ff3f53e3ee204ab097f0 data/actuallyadditions/recipes/liquid_fuel/crystallized_canola_oil.json
ab58d627e646b606f4a188cac0f4ee9239395d59 data/actuallyadditions/recipes/liquid_fuel/empowered_canola_oil.json
c0d4b30844c113fa36e0714aca19d718b1d59cb5 data/actuallyadditions/recipes/liquid_fuel/refined_canola_oil.json
// 1.20.4 2024-03-09T00:34:36.2427438 Fuel Recipes
75286df7dca41e4bc9c79cdea8f32aa5bacf6ae3 data/actuallyadditions/recipes/liquid_fuel/canola_oil.json
5cead1caac7e914bc9aa53fb8a936dadf05475d5 data/actuallyadditions/recipes/liquid_fuel/crystallized_canola_oil.json
177a8185ff924e5f4f02a7205320abc526274af0 data/actuallyadditions/recipes/liquid_fuel/empowered_canola_oil.json
4a17bc7a54342a49f6c666b5971dd8882c01223a data/actuallyadditions/recipes/liquid_fuel/refined_canola_oil.json
0732b5aebc03718a2adf8710c149021b1bc05eb7 data/actuallyadditions/recipes/solid_fuel/charcoal.json
5a8956fa96bf886b5b13d3359ee58dcaee9b87cc data/actuallyadditions/recipes/solid_fuel/coal-block.json
d6dbd4428a27289d3407a7609c5e8342a0c72b1a data/actuallyadditions/recipes/solid_fuel/coal.json

View file

@ -1,5 +1,6 @@
// 1.20.4 2024-03-04T22:51:31.5989305 Tags for minecraft:item mod id actuallyadditions
// 1.20.4 2024-03-08T17:03:47.6380549 Tags for minecraft:item mod id actuallyadditions
87327118c2f16da245b76de4fdcaab149456d9b8 data/actuallyadditions/tags/items/coffee_beans.json
f3ee78cd8c9563bd1828de2b4b336735f289f9f2 data/actuallyadditions/tags/items/crystals.json
7e6e49c3eb5302af147a2d6ba439e83bd4831cbc data/actuallyadditions/tags/items/drills.json
ae55da193b94fd6375c05d5aa46cafdda9d335cd data/actuallyadditions/tags/items/tiny_coals.json
da125442e98e78f6dac7e0c8f35a51503f5bb79d data/forge/tags/items/slimeballs.json

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-06T19:28:58.8879133 Item Recipes
// 1.20.4 2024-03-08T17:07:43.7158398 Item Recipes
d374edde9294d1a224b4b5610b50117a11328c00 data/actuallyadditions/recipes/advanced_coil.json
f67629e45d152c96f3467a90a67520f78ecf9f07 data/actuallyadditions/recipes/advanced_leaf_blower.json
d65e5a70232fa2f0e74d2a67c1cd4b0e87124242 data/actuallyadditions/recipes/basic_coil.json
@ -10,6 +10,12 @@ ba652d148d0c97f5453dff403f49bcb7d783c68a data/actuallyadditions/recipes/compress
e941d3812b720042fb88679f9c378c365db92abe data/actuallyadditions/recipes/compress/diamatine_crystal_block.json
bbcd53f245808916ef0dff4b4b49bb31d495cf3d data/actuallyadditions/recipes/compress/emeradic_crystal.json
bafc6ad5e25c395cf19ecb56c394fcef02e01c45 data/actuallyadditions/recipes/compress/emeradic_crystal_block.json
00d1979a6f36bae49c4998bf39e3dd6fb909ee63 data/actuallyadditions/recipes/compress/empowered_diamatine_crystal_block.json
44ca3f10e319a6e695f2c41b1a49e62512f08c4c data/actuallyadditions/recipes/compress/empowered_emeradic_crystal_block.json
d706d115a8bc9954402c7c8a7c8aae80d73dc80f data/actuallyadditions/recipes/compress/empowered_enori_crystal_block.json
f4b855122b9eda42822ff7b49d26e8134109aa20 data/actuallyadditions/recipes/compress/empowered_palis_crystal_block.json
497aa0d916fdf0a16563eb0482cf3af0574d0053 data/actuallyadditions/recipes/compress/empowered_restonia_crystal_block.json
28f279d7459adc72946ace6cf590090fb386c97a data/actuallyadditions/recipes/compress/empowered_void_crystal_block.json
1cdecac3f69286d8d09c376b4ca916f2e79b06cf data/actuallyadditions/recipes/compress/enori_crystal.json
99ef6128f1f960716fab2c254899581558a87566 data/actuallyadditions/recipes/compress/enori_crystal_block.json
fd30066d53e0e49dfbf5f818037ee4a9bc54af77 data/actuallyadditions/recipes/compress/palis_crystal.json
@ -24,6 +30,12 @@ c39a005aec39dbcf38a2975b4122e8660cedcfc9 data/actuallyadditions/recipes/decompre
70e759da4a394a68c8757007c59a4de44b8efaa5 data/actuallyadditions/recipes/decompress/diamatine_crystal_shard.json
81f409043a669467203a92c29c9bcbbec65209ad data/actuallyadditions/recipes/decompress/emeradic_crystal.json
ca592294f026cda8d02c808ea3b41b2333b089de data/actuallyadditions/recipes/decompress/emeradic_crystal_shard.json
5d9da92ba7829911045e7c1dd1d1f6737f56bffa data/actuallyadditions/recipes/decompress/empowered_diamatine_crystal.json
011a88e0aed30dd18d344adcd8988566b2d358b9 data/actuallyadditions/recipes/decompress/empowered_emeradic_crystal.json
e147d695d86a3281440ee94a242066717942196b data/actuallyadditions/recipes/decompress/empowered_enori_crystal.json
c4be22919b1adc16c06e51db2f0582bc704b4cbc data/actuallyadditions/recipes/decompress/empowered_palis_crystal.json
0384207ca7e896d899da81246ebdc7cc5eed0daf data/actuallyadditions/recipes/decompress/empowered_restonia_crystal.json
9f0cb447728bb1381b1e3a9e5b40648f2ddf42dc data/actuallyadditions/recipes/decompress/empowered_void_crystal.json
5ffb3f1ae350de40e6674a1d4d6c4e2041899049 data/actuallyadditions/recipes/decompress/enori_crystal.json
314c1a08f7114ce75ba9ce18d76d0baa5b049a9b data/actuallyadditions/recipes/decompress/enori_crystal_shard.json
4f9962b68de0a604b99a0a0b54502e894c1bea93 data/actuallyadditions/recipes/decompress/palis_crystal.json
@ -50,7 +62,6 @@ ffa7a52a39d9261b9c90c62709183a1f2d8f8352 data/actuallyadditions/recipes/drill_up
17d778888263c745217e8f1f7322b2245b99875d data/actuallyadditions/recipes/engineers_goggles_advanced.json
86ebb8d24b81682bf376f6cba628bcb13d62ed41 data/actuallyadditions/recipes/filter.json
811730c9a8496dd65e208a36d015b0671e86df1b data/actuallyadditions/recipes/gold_aiot.json
8b2ce2abfa8f78f7903c22347a54cdcf018d03eb data/actuallyadditions/recipes/handheld_filler.json
a4e0e3bb72d472302f2ab4e5d282cbc7fd6882a6 data/actuallyadditions/recipes/iron_aiot.json
5615f6ad2e28e9c105491acb965e763dfe8cacab data/actuallyadditions/recipes/laser_upgrade_invisibility.json
38f744e92f1a5ff6a64e37cdfbb646422f741b3c data/actuallyadditions/recipes/laser_upgrade_range.json
@ -68,11 +79,11 @@ bbda1becc270cf13e6b1d8e6d873aafa0951552d data/actuallyadditions/recipes/lens_of_
2f24905a9d4b0e5d3d5ecbc5a7fa3a7647f41619 data/actuallyadditions/recipes/quadruple_battery.json
80a2e4f402acab5da96bdf3acd459fce0f930c08 data/actuallyadditions/recipes/quintuple_battery.json
c6ff81ba878c02651a9353e490b3a8f9897a5410 data/actuallyadditions/recipes/rice_dough.json
bc69015bae99ad4bb1a613a7367469d4401f83ae data/actuallyadditions/recipes/rice_dough_smelting.json
5958ff2fb37430660fb22012212336320ee83dd8 data/actuallyadditions/recipes/rice_seeds.json
f6c73cb2e41a8a21e2fda888b28bf52672b33d2e data/actuallyadditions/recipes/rice_slime.json
319b2d0423b79497837f5a3f940011b3bccf09f3 data/actuallyadditions/recipes/rice_slime_potion.json
2bd92dcc8b63d8577d804d172321d3a47c4b001d data/actuallyadditions/recipes/ring.json
dd9f1f6cf00985f75ef5deee8e138c533e81db1a data/actuallyadditions/recipes/ring_of_growth.json
764d4f63e1d978d02419d30d2ad845b914e594c0 data/actuallyadditions/recipes/ring_of_magnetizing.json
fc0a5281fc77edde16f22165e164f73dd28d7fcd data/actuallyadditions/recipes/single_battery.json
cb0454ccb8e918d506a1dd488187453678f82751 data/actuallyadditions/recipes/stone_aiot.json
@ -81,6 +92,7 @@ b4aa29ef0d47b557f354a23cb6ee8ef60d273de3 data/actuallyadditions/recipes/teleport
5745a05f877fce254a1990f1e89f80e91846e270 data/actuallyadditions/recipes/tiny_to_coal.json
91bebb02fc416a650eea26c2d87049de91866cf0 data/actuallyadditions/recipes/travelers_sack.json
89c9512eeb746befb1bdc31037baa9bd86220f74 data/actuallyadditions/recipes/triple_battery.json
babb9a9e8a18d124c235df9214265c84738b0c1d data/actuallyadditions/recipes/void_sack.json
0737014abee48f688982412297e04e994aa6f9a6 data/actuallyadditions/recipes/wings_of_the_bats.json
c80073fcade3cdcb15f28c4a1cb12df4ae6cf4ec data/actuallyadditions/recipes/wooden_aiot.json
2bd8e4e4ed83a0d870e4509c0e722a9bbfd54a73 data/minecraft/recipes/slime_block.json
77fa026351592845c5fd6bbe430e6362e755eaaf data/minecraft/recipes/sticky_piston.json

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-06T19:12:19.7519503 Recipes
// 1.20.4 2024-03-08T16:41:19.1669609 Recipes
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
fe704716268e01ca8aeeb92196d9f660b9e08640 data/actuallyadditions/recipes/black_quartz_brick_slab.json
@ -10,11 +10,15 @@ fe704716268e01ca8aeeb92196d9f660b9e08640 data/actuallyadditions/recipes/black_qu
db1978ab59369dd3c10e719073b7035acf33885c data/actuallyadditions/recipes/black_quartz_slab.json
5717ea7ea6823fb360c040c03f95a1452ca0c962 data/actuallyadditions/recipes/black_quartz_stair.json
45d174f07588603735ed38fe2eb162e160f91e56 data/actuallyadditions/recipes/black_quartz_wall.json
0049339d1c0c795190caa365564119bc0bc987e1 data/actuallyadditions/recipes/breaker.json
81f8a64300319fc07323ab81d1cc4f66cd6c9a45 data/actuallyadditions/recipes/canola_press.json
86b8c5e857cf1b00e154b5f798a3e837e6a05333 data/actuallyadditions/recipes/chiseled_black_quartz_slab.json
506d2ad2f3109a6640a35ef1a2143b16793414ba data/actuallyadditions/recipes/chiseled_black_quartz_stair.json
2e9233449531a074984b443ceef0ad782f82eaed data/actuallyadditions/recipes/chiseled_black_quartz_wall.json
e41876ca63cd64d5a906c87682433179e9fe4de2 data/actuallyadditions/recipes/coal_generator.json
f1bbeaed1616b92ee345860fedb789e0aaa74a0f data/actuallyadditions/recipes/coffee_machine.json
49e378923a797d89b3c3c46bef00f2a347ded250 data/actuallyadditions/recipes/display_stand.json
f6a581219fbfde8c67edc59318f92cc719597c4f data/actuallyadditions/recipes/dropper.json
7c9a004460b6eb6c6e07cedfa086294d59e5eec5 data/actuallyadditions/recipes/empowerer.json
5801963cf623f873cdb254513c1b4b5ec319dd74 data/actuallyadditions/recipes/ender_casing.json
b2eefc77a753cbb650a879a9d30d833fc154dc58 data/actuallyadditions/recipes/ethetic_green_slab.json
@ -24,7 +28,10 @@ b056eb52c2e1dc6bdb2118c1dd20147822aff982 data/actuallyadditions/recipes/ethetic_
961311957c0bee25afbc84dded2cb6869e6baaf7 data/actuallyadditions/recipes/ethetic_white_stairs.json
17800d8fb71d48976d98c8fa1bd14370b4bdc960 data/actuallyadditions/recipes/ethetic_white_wall.json
318124e5a7f4d94f95eb3497b56a5dcdf575b257 data/actuallyadditions/recipes/farmer.json
e2f9ec08306500d981cad22bc2cf7925712d08de data/actuallyadditions/recipes/fermenting_barrel.json
9c1e45adf3ad5ef64044ac111ef1ac2a57a498d0 data/actuallyadditions/recipes/firework_box.json
2391a543a2e43ff5b87234a71d9bd339f9fa3e9c data/actuallyadditions/recipes/fluid_collector.json
2614b2743071b86fd6d2cb92063c3e95a959e52c data/actuallyadditions/recipes/fluid_placer.json
ff81da8a0f6632779414c0512100696a11771814 data/actuallyadditions/recipes/hopping_item_interface.json
48d208a519aaa44547dbca19a57cc66e4e0ab46c data/actuallyadditions/recipes/iron_casing.json
5d0c6fc708579565c21e0992796ba6f403473ed7 data/actuallyadditions/recipes/item_interface.json
@ -32,6 +39,9 @@ ff81da8a0f6632779414c0512100696a11771814 data/actuallyadditions/recipes/hopping_
92323ba7b5459abe64c06fff502d44384f64f361 data/actuallyadditions/recipes/laser_relay_advanced.json
31a2978ae8260ead579c6c920be0e40c6036498d data/actuallyadditions/recipes/laser_relay_extreme.json
4acb117a6727554073a78ed81bcd2b0b1af53bec data/actuallyadditions/recipes/laser_relay_item_advanced.json
73696fd4e851f440a9850485fc9ad03fc63442a9 data/actuallyadditions/recipes/oil_generator.json
8c78ebb9351b98ffe368391a391b90385c0b8b7f data/actuallyadditions/recipes/placer.json
184acfb5fd3799b3fbe35150c67b6530581f8bf1 data/actuallyadditions/recipes/powered_furnace.json
532a454741e8068941f1f3c44f3be257530db8c3 data/actuallyadditions/recipes/shock_suppressor.json
7fa363b3afe88f3ffac1b9f85f59c6a291d59544 data/actuallyadditions/recipes/smooth_black_quartz_slab.json
892f9867958c77a0577adcfd8ce3f8da108ecd3e data/actuallyadditions/recipes/smooth_black_quartz_stair.json

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"tag": "forge:cobblestone"
},
"V": {
"item": "actuallyadditions:void_crystal"
},
"X": {
"item": "actuallyadditions:basic_coil"
}
},
"pattern": [
"CCC",
"CXV",
"CCC"
],
"result": {
"item": "actuallyadditions:breaker"
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"C": {
"tag": "forge:cobblestone"
},
"E": {
"item": "actuallyadditions:enori_crystal"
},
"X": {
"item": "actuallyadditions:canola"
}
},
"pattern": [
"CEC",
"CXC",
"CAC"
],
"result": {
"item": "actuallyadditions:canola_press"
}
}

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "minecraft:coal"
},
"C": {
"tag": "forge:cobblestone"
},
"I": {
"item": "actuallyadditions:iron_casing"
}
},
"pattern": [
"CIC",
"CAC",
"CIC"
],
"result": {
"item": "actuallyadditions:coal_generator"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_diamatine_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_diamatine_crystal_block"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_emeradic_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_emeradic_crystal_block"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_enori_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_enori_crystal_block"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_palis_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_palis_crystal_block"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_restonia_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_restonia_crystal_block"
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"x": {
"item": "actuallyadditions:empowered_void_crystal"
}
},
"pattern": [
"xxx",
"xxx",
"xxx"
],
"result": {
"item": "actuallyadditions:empowered_void_crystal_block"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_diamatine_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_diamatine_crystal"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_emeradic_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_emeradic_crystal"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_enori_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_enori_crystal"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_palis_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_palis_crystal"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_restonia_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_restonia_crystal"
}
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:empowered_void_crystal_block"
}
],
"result": {
"count": 9,
"item": "actuallyadditions:empowered_void_crystal"
}
}

View file

@ -2,28 +2,25 @@
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"item": "actuallyadditions:triple_battery"
},
"C": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"D": {
"item": "actuallyadditions:diamatine_crystal"
"C": {
"tag": "forge:cobblestone"
},
"I": {
"item": "actuallyadditions:empowered_enori_crystal"
"D": {
"item": "minecraft:dropper"
},
"P": {
"item": "actuallyadditions:palis_crystal"
}
},
"pattern": [
"IPI",
"DCD",
" B "
"CPC",
"CDA",
"CPC"
],
"result": {
"item": "actuallyadditions:handheld_filler"
"item": "actuallyadditions:dropper"
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:enori_crystal"
},
"C": {
"item": "actuallyadditions:canola"
},
"L": {
"tag": "minecraft:logs"
},
"W": {
"item": "actuallyadditions:wood_casing"
}
},
"pattern": [
"LAL",
"LCL",
"LWL"
],
"result": {
"item": "actuallyadditions:fermenting_barrel"
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"item": "minecraft:bucket"
},
"F": {
"item": "actuallyadditions:breaker"
}
},
"pattern": [
"BFB"
],
"result": {
"item": "actuallyadditions:fluid_collector"
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"item": "minecraft:bucket"
},
"P": {
"item": "actuallyadditions:placer"
}
},
"pattern": [
"BPB"
],
"result": {
"item": "actuallyadditions:fluid_placer"
}
}

View file

@ -1,9 +1,9 @@
{
"type": "actuallyadditions:liquid_fuel",
"burn_time": 4000,
"burn_time": 100,
"fuel": {
"Amount": 50,
"FluidName": "actuallyadditions:canola_oil"
},
"total_energy": 100
"total_energy": 4000
}

View file

@ -1,9 +1,9 @@
{
"type": "actuallyadditions:liquid_fuel",
"burn_time": 28000,
"burn_time": 280,
"fuel": {
"Amount": 50,
"FluidName": "actuallyadditions:crystallized_oil"
},
"total_energy": 280
"total_energy": 28000
}

View file

@ -1,9 +1,9 @@
{
"type": "actuallyadditions:liquid_fuel",
"burn_time": 48000,
"burn_time": 400,
"fuel": {
"Amount": 50,
"FluidName": "actuallyadditions:empowered_oil"
},
"total_energy": 400
"total_energy": 48000
}

View file

@ -1,9 +1,9 @@
{
"type": "actuallyadditions:liquid_fuel",
"burn_time": 9600,
"burn_time": 120,
"fuel": {
"Amount": 50,
"FluidName": "actuallyadditions:refined_canola_oil"
},
"total_energy": 120
"total_energy": 9600
}

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:canola"
},
"C": {
"tag": "forge:cobblestone"
},
"I": {
"item": "actuallyadditions:iron_casing"
}
},
"pattern": [
"CIC",
"CAC",
"CIC"
],
"result": {
"item": "actuallyadditions:oil_generator"
}
}

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"tag": "forge:cobblestone"
},
"P": {
"item": "actuallyadditions:palis_crystal"
},
"X": {
"item": "actuallyadditions:basic_coil"
}
},
"pattern": [
"CCC",
"CXP",
"CCC"
],
"result": {
"item": "actuallyadditions:placer"
}
}

View file

@ -0,0 +1,29 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"tag": "forge:cobblestone"
},
"E": {
"item": "actuallyadditions:enori_crystal"
},
"F": {
"item": "minecraft:furnace"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"X": {
"item": "actuallyadditions:basic_coil"
}
},
"pattern": [
"EXC",
"FIF",
"CXE"
],
"result": {
"item": "actuallyadditions:powered_furnace"
}
}

View file

@ -0,0 +1,10 @@
{
"type": "minecraft:smelting",
"category": "food",
"cookingtime": 200,
"experience": 0.35,
"ingredient": {
"item": "actuallyadditions:rice_dough"
},
"result": "minecraft:bread"
}

View file

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

View file

@ -1,21 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:travelers_sack"
},
{
"tag": "forge:ender_pearls"
},
{
"tag": "forge:obsidian"
},
{
"item": "actuallyadditions:void_crystal_block"
}
],
"result": {
"item": "actuallyadditions:void_sack"
}
}

View file

@ -0,0 +1,5 @@
{
"values": [
"actuallyadditions:rice_slimeball"
]
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"R": {
"item": "actuallyadditions:rice_slimeball"
}
},
"pattern": [
"RRR",
"RRR",
"RRR"
],
"result": {
"item": "minecraft:slime_block"
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"P": {
"item": "minecraft:piston"
},
"R": {
"item": "actuallyadditions:rice_slimeball"
}
},
"pattern": [
"R",
"P"
],
"result": {
"item": "minecraft:sticky_piston"
}
}

View file

@ -231,6 +231,90 @@ public class BlockRecipeGenerator extends RecipeProvider {
.define('V', ActuallyItems.VOID_CRYSTAL.get())
.save(recipeOutput);
//Canola Press
Recipe.shaped(ActuallyBlocks.CANOLA_PRESS.getItem())
.pattern("CEC","CXC","CAC")
.define('C', Tags.Items.COBBLESTONE)
.define('E', ActuallyItems.ENORI_CRYSTAL)
.define('X', ActuallyItems.CANOLA)
.define('A', ActuallyItems.ADVANCED_COIL)
.save(recipeOutput);
//Fermenting Barrel
Recipe.shaped(ActuallyBlocks.FERMENTING_BARREL.getItem())
.pattern("LAL","LCL","LWL")
.define('L', ItemTags.LOGS)
.define('A', ActuallyItems.ENORI_CRYSTAL)
.define('C', ActuallyItems.CANOLA)
.define('W', ActuallyBlocks.WOOD_CASING.getItem())
.save(recipeOutput);
//Oil Generator
Recipe.shaped(ActuallyBlocks.OIL_GENERATOR.getItem())
.pattern("CIC","CAC","CIC")
.define('C', Tags.Items.COBBLESTONE)
.define('A', ActuallyItems.CANOLA)
.define('I', ActuallyBlocks.IRON_CASING.getItem())
.save(recipeOutput);
//Coal generator.
Recipe.shaped(ActuallyBlocks.COAL_GENERATOR.getItem())
.pattern("CIC","CAC","CIC")
.define('C', Tags.Items.COBBLESTONE)
.define('A', Items.COAL)
.define('I', ActuallyBlocks.IRON_CASING.getItem())
.save(recipeOutput);
// Auto breaker.
Recipe.shaped(ActuallyBlocks.BREAKER.getItem())
.pattern("CCC","CXV","CCC")
.define('C', Tags.Items.COBBLESTONE)
.define('V', ActuallyItems.VOID_CRYSTAL)
.define('X', ActuallyItems.BASIC_COIL)
.save(recipeOutput);
// Auto placer.
Recipe.shaped(ActuallyBlocks.PLACER.getItem())
.pattern("CCC", "CXP", "CCC")
.define('C', Tags.Items.COBBLESTONE)
.define('P', ActuallyItems.PALIS_CRYSTAL)
.define('X', ActuallyItems.BASIC_COIL)
.save(recipeOutput);
// Dropper
Recipe.shaped(ActuallyBlocks.DROPPER.getItem())
.pattern("CPC", "CDA", "CPC")
.define('C', Tags.Items.COBBLESTONE)
.define('P', ActuallyItems.PALIS_CRYSTAL)
.define('D', Items.DROPPER)
.define('A', ActuallyItems.ADVANCED_COIL)
.save(recipeOutput);
// Fluid Placer
Recipe.shaped(ActuallyBlocks.FLUID_PLACER.getItem())
.pattern("BPB")
.define('B', Items.BUCKET)
.define('P', ActuallyBlocks.PLACER.get())
.save(recipeOutput);
// Fluid Collector
Recipe.shaped(ActuallyBlocks.FLUID_COLLECTOR.getItem())
.pattern("BFB")
.define('B', Items.BUCKET)
.define('F', ActuallyBlocks.BREAKER.get())
.save(recipeOutput);
// Powered furnace.
Recipe.shaped(ActuallyBlocks.POWERED_FURNACE.getItem())
.pattern("EXC", "FIF", "CXE")
.define('E', ActuallyItems.ENORI_CRYSTAL)
.define('X', ActuallyItems.BASIC_COIL)
.define('C', Tags.Items.COBBLESTONE)
.define('F', Items.FURNACE)
.define('I', ActuallyBlocks.IRON_CASING.getItem())
.save(recipeOutput);
}
public static class Recipe {

View file

@ -16,6 +16,7 @@ import net.minecraft.tags.ItemTags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.ShapedRecipe;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.ItemLike;
@ -40,7 +41,7 @@ public class ItemRecipeGenerator extends RecipeProvider {
protected void buildRecipes(@Nonnull RecipeOutput output) {
var recipeOutput = new NoAdvRecipeOutput(output);
generatePaxels(recipeOutput);
generateAOIT(recipeOutput);
//Goggles
Recipe.shaped(ActuallyItems.ENGINEERS_GOGGLES.get())
@ -78,7 +79,7 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('C', ActuallyItems.ADVANCED_COIL.get()).save(recipeOutput);
//Filling Wand
Recipe.shaped(ActuallyItems.HANDHELD_FILLER.get())
/* Recipe.shaped(ActuallyItems.HANDHELD_FILLER.get())
.pattern("IPI")
.pattern("DCD")
.pattern(" B ")
@ -86,7 +87,7 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('P', ActuallyItems.PALIS_CRYSTAL.get())
.define('C', ActuallyItems.ADVANCED_COIL.get())
.define('D', ActuallyItems.DIAMATINE_CRYSTAL.get())
.define('B', ActuallyItems.TRIPLE_BATTERY.get()).save(recipeOutput);
.define('B', ActuallyItems.TRIPLE_BATTERY.get()).save(recipeOutput);*/ //TODO not done yet
//Bag
Recipe.shaped(ActuallyItems.TRAVELERS_SACK.get())
@ -99,12 +100,12 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('V', ActuallyBlocks.VOID_CRYSTAL.getItem()).save(recipeOutput);
//Void Bag
Recipe.shapeless(ActuallyItems.VOID_SACK.get())
/* Recipe.shapeless(ActuallyItems.VOID_SACK.get())
.requires(ActuallyItems.TRAVELERS_SACK.get())
.requires(Tags.Items.ENDER_PEARLS)
.requires(Tags.Items.OBSIDIAN)
.requires(ActuallyBlocks.VOID_CRYSTAL.getItem())
.save(recipeOutput);
.save(recipeOutput);*/ //TODO not done yet
//Lens
Recipe.shaped(ActuallyItems.LENS.get())
@ -418,12 +419,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);
@ -488,6 +489,19 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('I', Items.IRON_HELMET)
.save(recipeOutput);
// Sticky Piston from rice slime
Recipe.shaped(Items.STICKY_PISTON)
.pattern("R", "P")
.define('R', ActuallyItems.RICE_SLIMEBALL.get())
.define('P', Items.PISTON)
.save(recipeOutput);
// Slime block from rice slime balls
Recipe.shaped(Items.SLIME_BLOCK)
.pattern("RRR", "RRR", "RRR")
.define('R', ActuallyItems.RICE_SLIMEBALL.get())
.save(recipeOutput);
//Shards
addShard(recipeOutput, ActuallyItems.VOID_CRYSTAL_SHARD, ActuallyItems.VOID_CRYSTAL);
addShard(recipeOutput, ActuallyItems.ENORI_CRYSTAL_SHARD, ActuallyItems.ENORI_CRYSTAL);
@ -504,6 +518,14 @@ public class ItemRecipeGenerator extends RecipeProvider {
addCrystalBlock(recipeOutput, ActuallyBlocks.DIAMATINE_CRYSTAL.getItem(), ActuallyItems.DIAMATINE_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMERADIC_CRYSTAL.getItem(), ActuallyItems.EMERADIC_CRYSTAL);
//Empowered Crystal Blocks
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_VOID_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_VOID_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_ENORI_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_ENORI_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_RESTONIA_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_RESTONIA_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_PALIS_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_PALIS_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_DIAMATINE_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_DIAMATINE_CRYSTAL);
addCrystalBlock(recipeOutput, ActuallyBlocks.EMPOWERED_EMERADIC_CRYSTAL.getItem(), ActuallyItems.EMPOWERED_EMERADIC_CRYSTAL);
// //Quartz
// GameRegistry.addSmelting(new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ORE_QUARTZ.ordinal()), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), 1F);
@ -517,9 +539,13 @@ public class ItemRecipeGenerator extends RecipeProvider {
// GameRegistry.addSmelting(new ItemStack(InitItems.itemDust, 1, TheDusts.QUARTZ_BLACK.ordinal()), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), 1F);
// GameRegistry.addSmelting(new ItemStack(InitItems.itemDust, 1, TheDusts.QUARTZ.ordinal()), new ItemStack(Items.QUARTZ), 1F);
// GameRegistry.addSmelting(new ItemStack(InitItems.itemDust, 1, TheDusts.COAL.ordinal()), new ItemStack(Items.COAL), 1F);
SimpleCookingRecipeBuilder.smelting(Ingredient.of(ActuallyItems.RICE_DOUGH), RecipeCategory.FOOD, Items.BREAD, 0.35F, 200)
.unlockedBy("", has(Items.AIR))
.save(recipeOutput, new ResourceLocation(ActuallyAdditions.MODID, "rice_dough_smelting"));
}
protected void generatePaxels(RecipeOutput consumer) {
protected void generateAOIT(RecipeOutput consumer) {
addPaxel(consumer, ActuallyItems.WOODEN_AIOT, Items.WOODEN_AXE, Items.WOODEN_PICKAXE, Items.WOODEN_SWORD, Items.WOODEN_SHOVEL, Items.WOODEN_HOE);
addPaxel(consumer, ActuallyItems.STONE_AIOT, Items.STONE_AXE, Items.STONE_PICKAXE, Items.STONE_SWORD, Items.STONE_SHOVEL, Items.STONE_HOE);
addPaxel(consumer, ActuallyItems.IRON_AIOT, Items.IRON_AXE, Items.IRON_PICKAXE, Items.IRON_SWORD, Items.IRON_SHOVEL, Items.IRON_HOE);

View file

@ -8,6 +8,7 @@ import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.world.level.block.Block;
import net.neoforged.neoforge.common.Tags;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import javax.annotation.Nonnull;
@ -37,5 +38,8 @@ public class ItemTagsGenerator extends ItemTagsProvider {
.add(ActuallyItems.RESTONIA_CRYSTAL.get(), ActuallyItems.PALIS_CRYSTAL.get(),
ActuallyItems.DIAMATINE_CRYSTAL.get(), ActuallyItems.VOID_CRYSTAL.get(),
ActuallyItems.EMERADIC_CRYSTAL.get(), ActuallyItems.ENORI_CRYSTAL.get());
tag(Tags.Items.SLIMEBALLS)
.add(ActuallyItems.RICE_SLIMEBALL.get());
}
}

View file

@ -118,6 +118,8 @@ public class ActuallyAdditionsClient {
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.RICE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.FLAX.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.COFFEE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.GREENHOUSE_GLASS.get(), RenderType.cutout());
}
public static void setupSpecialRenders(EntityRenderersEvent.RegisterRenderers event) {

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.blocks;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockGetter;
@ -40,11 +41,14 @@ public class BlockGreenhouseGlass extends BlockBase {
//
// return state != otherState || block != this && super.shouldSideBeRendered(state, world, pos, side);
// }
@Override
public boolean skipRendering(BlockState state, BlockState adjacentState, Direction side) {
return adjacentState.is(this) ? true : super.skipRendering(state, adjacentState, side);
}
@Override
public RenderShape getRenderShape(BlockState state) {
return RenderShape.INVISIBLE;
return RenderShape.MODEL;
}
@Override

View file

@ -50,7 +50,7 @@ public abstract class BlockContainerBase extends Block implements EntityBlock {
if (!world.isClientSide) {
BlockEntity tile = world.getBlockEntity(pos);
if (expectedInstance.isInstance(tile)) {
player.openMenu((MenuProvider) tile);
player.openMenu((MenuProvider) tile, pos);
}
return InteractionResult.SUCCESS;
}

View file

@ -37,16 +37,16 @@ public class ActuallyRecipes {
public static class Types {
public static final DeferredRegister<RecipeType<?>> RECIPE_TYPES = DeferredRegister.create(BuiltInRegistries.RECIPE_TYPE, ActuallyAdditions.MODID);
public static final Supplier<RecipeType<LaserRecipe>> LASER = RECIPE_TYPES.register("laser", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<EmpowererRecipe>> EMPOWERING = RECIPE_TYPES.register("empower", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<CrushingRecipe>> CRUSHING = RECIPE_TYPES.register("crushing", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<SolidFuelRecipe>> SOLID_FUEL = RECIPE_TYPES.register("solid_fuel", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<LiquidFuelRecipe>> LIQUID_FUEL = RECIPE_TYPES.register("liquid_fuel", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<PressingRecipe>> PRESSING = RECIPE_TYPES.register("pressing", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<FermentingRecipe>> FERMENTING = RECIPE_TYPES.register("fermenting", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<ColorChangeRecipe>> COLOR_CHANGE = RECIPE_TYPES.register("color_change", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<MiningLensRecipe>> MINING_LENS = RECIPE_TYPES.register("mining_lens", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<CoffeeIngredientRecipe>> COFFEE_INGREDIENT = RECIPE_TYPES.register("coffee_ingredient", () -> new RecipeType<>() {});
public static final Supplier<RecipeType<LaserRecipe>> LASER = RECIPE_TYPES.register("laser", RecipeType::simple);
public static final Supplier<RecipeType<EmpowererRecipe>> EMPOWERING = RECIPE_TYPES.register("empower", RecipeType::simple);
public static final Supplier<RecipeType<CrushingRecipe>> CRUSHING = RECIPE_TYPES.register("crushing", RecipeType::simple);
public static final Supplier<RecipeType<SolidFuelRecipe>> SOLID_FUEL = RECIPE_TYPES.register("solid_fuel", RecipeType::simple);
public static final Supplier<RecipeType<LiquidFuelRecipe>> LIQUID_FUEL = RECIPE_TYPES.register("liquid_fuel", RecipeType::simple);
public static final Supplier<RecipeType<PressingRecipe>> PRESSING = RECIPE_TYPES.register("pressing", RecipeType::simple);
public static final Supplier<RecipeType<FermentingRecipe>> FERMENTING = RECIPE_TYPES.register("fermenting", RecipeType::simple);
public static final Supplier<RecipeType<ColorChangeRecipe>> COLOR_CHANGE = RECIPE_TYPES.register("color_change", RecipeType::simple);
public static final Supplier<RecipeType<MiningLensRecipe>> MINING_LENS = RECIPE_TYPES.register("mining_lens", RecipeType::simple);
public static final Supplier<RecipeType<CoffeeIngredientRecipe>> COFFEE_INGREDIENT = RECIPE_TYPES.register("coffee_ingredient", RecipeType::simple);
}
public static class Ingredients {
public static final DeferredRegister<IngredientType<?>> INGREDIENTS = DeferredRegister.create(NeoForgeRegistries.Keys.INGREDIENT_TYPES, ActuallyAdditions.MODID);

View file

@ -95,8 +95,8 @@ public class LiquidFuelRecipe implements Recipe<Container> {
private static final Codec<LiquidFuelRecipe> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
FluidStack.CODEC.fieldOf("fuel").forGetter(recipe -> recipe.fuel),
Codec.INT.fieldOf("total_energy").forGetter(recipe -> recipe.burnTime),
Codec.INT.fieldOf("burn_time").forGetter(recipe -> recipe.totalEnergy)
Codec.INT.fieldOf("total_energy").forGetter(recipe -> recipe.totalEnergy),
Codec.INT.fieldOf("burn_time").forGetter(recipe -> recipe.burnTime)
)
.apply(instance, LiquidFuelRecipe::new)
);

View file

@ -20,7 +20,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.Util;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -46,35 +46,31 @@ import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.neoforged.neoforge.common.CommonHooks;
import net.neoforged.neoforge.common.Tags;
import net.neoforged.neoforge.common.TierSortingRegistry;
import net.neoforged.neoforge.common.ToolAction;
import net.neoforged.neoforge.common.ToolActions;
import net.neoforged.neoforge.common.*;
import net.neoforged.neoforge.items.IItemHandler;
import net.neoforged.neoforge.items.IItemHandlerModifiable;
import javax.annotation.Nonnull;
import java.util.List;
public class DrillItem extends ItemEnergy {
public static final int HARVEST_LEVEL = 4;
private static final int ENERGY_USE = 100;
private static final List<ToolAction> ACTIONS = List.of(ToolActions.SHOVEL_DIG, ToolActions.PICKAXE_DIG);
public DrillItem() {
super(ActuallyItems.defaultProps().defaultDurability(0).stacksTo(1), 250000, 1000);
}
@Override
public boolean canPerformAction(ItemStack stack, ToolAction toolAction) {
if (toolAction == ToolActions.SHOVEL_DIG || toolAction == ToolActions.PICKAXE_DIG)
return true;
return super.canPerformAction(stack, toolAction);
public boolean canPerformAction(@Nonnull ItemStack stack, @Nonnull ToolAction toolAction) {
return ACTIONS.contains(toolAction);
}
@Override
public boolean isCorrectToolForDrops(BlockState pBlock) {
public boolean isCorrectToolForDrops(@Nonnull BlockState pBlock) {
Tier tier = Tiers.NETHERITE; //Use Nettherite as the tier as it has the same harvest level as the drill
if (TierSortingRegistry.isTierSorted(tier)) {
return TierSortingRegistry.isCorrectTierForDrops(tier, pBlock) && pBlock.is(ActuallyTags.Blocks.MINEABLE_WITH_DRILL);
@ -111,6 +107,7 @@ public class DrillItem extends ItemEnergy {
stack.setTag(compound);
}
@Nonnull
@Override
public InteractionResult useOn(UseOnContext context) {
Player player = context.getPlayer();
@ -118,11 +115,11 @@ public class DrillItem extends ItemEnergy {
ItemStack stack = player.getItemInHand(hand);
ItemStack upgrade = this.getHasUpgradeAsStack(stack, ItemDrillUpgrade.UpgradeType.PLACER);
if (StackUtil.isValid(upgrade)) {
if (!upgrade.isEmpty()) {
int slot = ItemDrillUpgrade.getSlotToPlaceFrom(upgrade);
if (slot >= 0 && slot < 9) { // TODO: validate... old = PlayerInventory.getHotbarSize(); new = 9
ItemStack equip = player.getInventory().getItem(slot);
if (StackUtil.isValid(equip) && equip != stack) {
if (!equip.isEmpty() && equip != stack) {
ItemStack toPlaceStack = equip.copy();
WorldUtil.setHandItemWithoutAnnoyingSound(player, hand, toPlaceStack);
@ -164,7 +161,7 @@ public class DrillItem extends ItemEnergy {
loadSlotsFromNBT(inv, stack);
for (int i = 0; i < inv.getSlots(); i++) {
ItemStack slotStack = inv.getStackInSlot(i);
if (StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade drillUpgrade) {
if (!slotStack.isEmpty() && slotStack.getItem() instanceof ItemDrillUpgrade drillUpgrade) {
if (drillUpgrade.type == upgrade) {
return slotStack;
}
@ -173,8 +170,9 @@ public class DrillItem extends ItemEnergy {
return ItemStack.EMPTY;
}
@Nonnull
@Override
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
public InteractionResultHolder<ItemStack> use(Level world, @Nonnull Player player, @Nonnull InteractionHand hand) {
if (!world.isClientSide && player.isShiftKeyDown() && hand == InteractionHand.MAIN_HAND) {
player.openMenu(new SimpleMenuProvider((id, inv, p) -> new ContainerDrill(id, inv), Component.literal("")));
// player.openGui(ActuallyAdditions.INSTANCE, GuiHandler.GuiTypes.DRILL.ordinal(), world, (int) player.posX, (int) player.posY, (int) player.posZ);
@ -182,8 +180,9 @@ public class DrillItem extends ItemEnergy {
return new InteractionResultHolder<>(InteractionResult.PASS, player.getItemInHand(hand));
}
@Nonnull
@Override
public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity entityHit, InteractionHand hand) {
public InteractionResult interactLivingEntity(@Nonnull ItemStack stack, @Nonnull Player player, @Nonnull LivingEntity entityHit, @Nonnull InteractionHand hand) {
int use = this.getEnergyUsePerBlock(stack);
if (!(entityHit instanceof Player) || !((Player) entityHit).isCreative()) {
if (this.getEnergyStored(stack) >= use) {
@ -193,15 +192,16 @@ public class DrillItem extends ItemEnergy {
return InteractionResult.SUCCESS;
}
@Nonnull
@Override
public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
public Multimap<Attribute, AttributeModifier> getAttributeModifiers(@Nonnull EquipmentSlot slot, @Nonnull ItemStack stack) {
Multimap<Attribute, AttributeModifier> map = ArrayListMultimap.create();
if (slot == EquipmentSlot.MAINHAND) {
map.put(Attributes.ATTACK_DAMAGE, new AttributeModifier("Drill Modifier", this.getEnergyStored(stack) >= ENERGY_USE
? 8.0F
: 0.1F, AttributeModifier.Operation.ADDITION));
map.put(Attributes.ATTACK_SPEED, new AttributeModifier("Tool Modifier", -2.5F, AttributeModifier.Operation.ADDITION));
map.put(Attributes.ATTACK_SPEED, new AttributeModifier("Tool Modifier", 1.5F, AttributeModifier.Operation.ADDITION));
}
return map;
@ -209,7 +209,7 @@ public class DrillItem extends ItemEnergy {
@Override
public float getDestroySpeed(ItemStack stack, BlockState state) {
public float getDestroySpeed(@Nonnull ItemStack stack, @Nonnull BlockState state) {
return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack)
? (this.hasExtraWhitelist(state.getBlock()) || state.is(ActuallyTags.Blocks.MINEABLE_WITH_DRILL))
? this.getEfficiencyFromUpgrade(stack)
@ -218,7 +218,7 @@ public class DrillItem extends ItemEnergy {
}
@Override
public boolean onBlockStartBreak(ItemStack stack, BlockPos pos, Player player) {
public boolean onBlockStartBreak(@Nonnull ItemStack stack, @Nonnull BlockPos pos, @Nonnull Player player) {
boolean toReturn = false;
int use = this.getEnergyUsePerBlock(stack);
if (this.getEnergyStored(stack) >= use) {
@ -232,11 +232,9 @@ public class DrillItem extends ItemEnergy {
: 1);
}
}
//Block hit
HitResult ray = WorldUtil.getNearestBlockWithDefaultReachDistance(player.level(), player);
if (ray != null && ray.getType() == HitResult.Type.BLOCK) {
BlockHitResult trace = (BlockHitResult) ray;
HitResult ray = player.pick(Util.getReachDistance(player), 1f, false);
if (ray instanceof BlockHitResult trace) {
//Breaks the Blocks
if (!player.isShiftKeyDown() && this.getHasUpgrade(stack, ItemDrillUpgrade.UpgradeType.THREE_BY_THREE)) {
if (this.getHasUpgrade(stack, ItemDrillUpgrade.UpgradeType.FIVE_BY_FIVE)) {
@ -256,7 +254,7 @@ public class DrillItem extends ItemEnergy {
return toReturn;
}
@Override
/* @Override //TODO old one
public boolean isCorrectToolForDrops(ItemStack stack, BlockState state) {
Block block = state.getBlock();
return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack) && (this.hasExtraWhitelist(block) || state.canBeReplaced() || block == Blocks.SNOW_BLOCK || block == Blocks.SNOW || (block == Blocks.OBSIDIAN
@ -274,6 +272,11 @@ public class DrillItem extends ItemEnergy {
: HARVEST_LEVEL >= 2
: HARVEST_LEVEL >= 2
: HARVEST_LEVEL >= 2));
}*/
@Override
public boolean isCorrectToolForDrops(ItemStack stack, BlockState state) {
return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack) && super.isCorrectToolForDrops(stack, state);
}
// @Override
@ -333,7 +336,7 @@ public class DrillItem extends ItemEnergy {
* @return Is the Upgrade applied?
*/
public boolean getHasUpgrade(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade) {
return StackUtil.isValid(this.getHasUpgradeAsStack(stack, upgrade));
return !this.getHasUpgradeAsStack(stack, upgrade).isEmpty();
}
// @Override
@ -499,7 +502,7 @@ public class DrillItem extends ItemEnergy {
}
@Override
public boolean shouldCauseBlockBreakReset(ItemStack oldStack, ItemStack newStack) {
public boolean shouldCauseBlockBreakReset(@Nonnull ItemStack oldStack, @Nonnull ItemStack newStack) {
return !ItemStack.isSameItem(newStack, oldStack);
}
}

View file

@ -12,7 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
@ -111,8 +111,8 @@ public class ItemFillingWand extends ItemEnergy {
public void releaseUsing(ItemStack stack, Level world, LivingEntity entity, int timeLeft) {
if (!world.isClientSide) {
boolean clear = true;
if (entity instanceof Player) {
HitResult result = WorldUtil.getNearestBlockWithDefaultReachDistance(world, (Player) entity);
if (entity instanceof Player player) {
HitResult result = player.pick(Util.getReachDistance(player), 1f, false);
if (result instanceof BlockHitResult) {
CompoundTag compound = stack.getOrCreateTag();

View file

@ -13,7 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleTypes;
@ -49,8 +49,8 @@ public class ItemWaterBowl extends ItemBase {
public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event) {
if (event.getLevel() != null) {
if (CommonConfig.Other.WATER_BOWL.get()) {
if (StackUtil.isValid(event.getItemStack()) && event.getItemStack().getItem() == Items.BOWL) {
HitResult rayTrace = WorldUtil.getNearestBlockWithDefaultReachDistance(event.getLevel(), event.getEntity(), true, false, false);
if (!event.getItemStack().isEmpty() && event.getItemStack().getItem() == Items.BOWL) {
HitResult rayTrace = event.getEntity().pick(Util.getReachDistance(event.getEntity()), 1f, true);
if (rayTrace.getType() != HitResult.Type.BLOCK) {
return;
}
@ -91,7 +91,7 @@ public class ItemWaterBowl extends ItemBase {
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand);
HitResult trace = WorldUtil.getNearestBlockWithDefaultReachDistance(world, player);
HitResult trace = player.pick(8.0D, 1.0F, false);
InteractionResultHolder<ItemStack> result = EventHooks.onBucketUse(player, world, stack, trace);
if (result != null) {
return result;

View file

@ -246,7 +246,7 @@ public abstract class TileEntityBase extends BlockEntity {
}
public boolean canPlayerUse(Player player) {
return player.distanceToSqr(this.getBlockPos().getX() + 0.5D, this.worldPosition.getY() + 0.5D, this.worldPosition.getZ() + 0.5D) <= 64 && !this.isRemoved() && this.level.getBlockEntity(this.worldPosition) == this;
return player.distanceToSqr(this.getBlockPos().getX() + 0.5D, this.getBlockPos().getY() + 0.5D, this.getBlockPos().getZ() + 0.5D) <= 64 && !this.isRemoved() && this.level.getBlockEntity(this.worldPosition) == this;
}
protected boolean sendUpdateWithInterval() {

View file

@ -11,7 +11,10 @@
package de.ellpeck.actuallyadditions.mod.util;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import net.minecraft.world.entity.ai.attributes.AttributeInstance;
import net.minecraft.world.entity.player.Player;
import net.neoforged.fml.loading.FMLLoader;
import net.neoforged.neoforge.common.NeoForgeMod;
public final class Util {
@ -40,4 +43,9 @@ public final class Util {
public static String getMajorModVersion() {
return splitVersion()[1].substring(1);
}
public static double getReachDistance(Player player) {
AttributeInstance attribute = player.getAttribute(NeoForgeMod.BLOCK_REACH.value());
return attribute == null ? 4.5d : attribute.getValue();
}
}

View file

@ -244,38 +244,6 @@ public final class WorldUtil {
return blocks;
}
public static HitResult getNearestPositionWithAir(Level level, Player player, int reach) {
return getMovingObjectPosWithReachDistance(level, player, reach, false, false, true);
}
private static HitResult getMovingObjectPosWithReachDistance(Level level, Player player, double distance, boolean p1, boolean p2, boolean p3) {
float f = player.getXRot();
float f1 = player.getYRot();
double d0 = player.position().x;
double d1 = player.position().y + player.getEyeHeight();
double d2 = player.position().z;
Vec3 vec3 = new Vec3(d0, d1, d2);
float f2 = Mth.cos(-f1 * 0.017453292F - (float) Math.PI);
float f3 = Mth.sin(-f1 * 0.017453292F - (float) Math.PI);
float f4 = -Mth.cos(-f * 0.017453292F);
float f5 = Mth.sin(-f * 0.017453292F);
float f6 = f3 * f4;
float f7 = f2 * f4;
Vec3 vec31 = vec3.add(f6 * distance, f5 * distance, f7 * distance);
//return world.clipWithInteractionOverride(vec3, vec31, p1, p2, p3); //TODO
return new BlockHitResult(Vec3.ZERO, Direction.DOWN, BlockPos.ZERO, false);
}
public static HitResult getNearestBlockWithDefaultReachDistance(Level level, Player player) {
return getNearestBlockWithDefaultReachDistance(level, player, false, true, false);
}
public static HitResult getNearestBlockWithDefaultReachDistance(Level level, Player player, boolean stopOnLiquids, boolean ignoreBlockWithoutBoundingBox, boolean returnLastUncollidableBlock) {
return new BlockHitResult(Vec3.ZERO, Direction.DOWN, BlockPos.ZERO, false); //TODO
//return getMovingObjectPosWithReachDistance(world, player, player.getAttribute(PlayerEntity.REACH_DISTANCE).getAttributeValue(), stopOnLiquids, ignoreBlockWithoutBoundingBox, returnLastUncollidableBlock);
}
public static void setHandItemWithoutAnnoyingSound(Player player, InteractionHand hand, ItemStack stack) {
if (hand == InteractionHand.MAIN_HAND) {
player.getInventory().items.set(player.getInventory().selected, stack);

View file

@ -193,7 +193,7 @@
"block.actuallyadditions.empowered_emeradic_crystal_block": "Empowered Emeradic Crystal Block",
"block.actuallyadditions.empowered_void_crystal_block": "Empowered Void Crystal Block",
"block.actuallyadditions.empowered_enori_crystal_block": "Empowered Enori Crystal Block",
"block.actuallyadditions.miner": "Vertical Digger (wip)",
"block.actuallyadditions.vertical_digger": "Vertical Digger (wip)",
"block.actuallyadditions.firework_box": "Firework Box (wip)",
"block.actuallyadditions.black_quartz_wall": "Black Quartz Wall",
"block.actuallyadditions.black_quartz_stair": "Black Quartz Stairs",
@ -275,13 +275,11 @@
"item.actuallyadditions.drill_light_gray": "Light Gray Drill (wip)",
"item.actuallyadditions.drill_lime": "Lime Drill (wip)",
"item.actuallyadditions.rice": "Rice",
"item.actuallyadditions.food_doughnut": "Doughnut (wip)",
"item.actuallyadditions.rice_dough": "Rice Dough (wip)",
"item.actuallyadditions.food_rice_bread": "Rice Bread (wip)",
"item.actuallyadditions.rice_dough": "Rice Dough",
"item.actuallyadditions.rice_seeds": "Rice Seeds",
"item.actuallyadditions.tiny_coal": "Tiny Coal",
"item.actuallyadditions.tiny_charcoal": "Tiny Charcoal",
"item.actuallyadditions.rice_slimeball": "Rice Slimeball (wip)",
"item.actuallyadditions.rice_slimeball": "Rice Slimeball",
"item.actuallyadditions.single_battery": "Single Battery",
"item.actuallyadditions.double_battery": "Double Battery",
"item.actuallyadditions.triple_battery": "Triple Battery",
@ -316,13 +314,10 @@
"item.actuallyadditions.drill_upgrade_fortune": "Drill Fortune Augment I (wip)",
"item.actuallyadditions.drill_upgrade_fortune_ii": "Drill Fortune Augment II (Gives Fortune III!) (wip)",
"item.actuallyadditions.drill_upgrade_block_placing": "Drill Block Placing Augment (wip)",
"item.actuallyadditions.drill_upgrade_three_by_three": "Drill Mining Augment I (wip)",
"item.actuallyadditions.drill_upgrade_five_by_five": "Drill Mining Augment II (wip)",
"item.actuallyadditions.drill_upgrade_three_by_three": "Drill Area Augment I (wip)",
"item.actuallyadditions.drill_upgrade_five_by_five": "Drill Area Augment II (wip)",
"item.actuallyadditions.dough": "Dough (wip)",
"item.actuallyadditions.paper_cone": "Paper Cone (wip)",
"item.actuallyadditions.knife_blade": "Knife Blade (wip)",
"item.actuallyadditions.knife_handle": "Knife Handle (wip)",
"item.actuallyadditions.black_quartz": "Black Quartz (wip)",
"item.actuallyadditions.black_quartz": "Black Quartz",
"item.actuallyadditions.ring": "Ring",
"item.actuallyadditions.ring.storage": "Blaze Stored (wip)",
"item.actuallyadditions.teleport_staff": "Teleport Staff",
@ -365,12 +360,12 @@
"item.actuallyadditions.lens_of_certain_death": "Lens of Certain Death",
"item.actuallyadditions.lens_of_disenchanting": "Lens of Disenchanting",
"item.actuallyadditions.crate_keeper": "Storage Crate Keeper (wip)",
"item.actuallyadditions.paxel_crystal_red": "Restonia Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_blue": "Palis Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_light_blue": "Diamatine Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_black": "Void Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_white": "Enori Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_green": "Emeradic Crystal AIOT (wip)",
"item.actuallyadditions.paxel_crystal_red": "Restonia Crystal AIOT",
"item.actuallyadditions.paxel_crystal_blue": "Palis Crystal AIOT",
"item.actuallyadditions.paxel_crystal_light_blue": "Diamatine Crystal AIOT",
"item.actuallyadditions.paxel_crystal_black": "Void Crystal AIOT",
"item.actuallyadditions.paxel_crystal_white": "Enori Crystal AIOT)",
"item.actuallyadditions.paxel_crystal_green": "Emeradic Crystal AIOT",
"item.actuallyadditions.food_bacon": "Bacon (wip)",
"item.actuallyadditions.ender_star": "Ender Star (wip)",
"item.actuallyadditions.spawner_changer": "Spawner Changer (wip)",

View file

@ -9,24 +9,24 @@
"from": [1, 1, 1],
"to": [15, 15, 15],
"faces": {
"north": {"uv": [1, 1, 15, 15], "texture": "#base"},
"east": {"uv": [1, 1, 15, 15], "texture": "#base"},
"south": {"uv": [1, 1, 15, 15], "texture": "#base"},
"west": {"uv": [1, 1, 15, 15], "texture": "#base"},
"up": {"uv": [1, 1, 15, 15], "texture": "#base"},
"down": {"uv": [1, 1, 15, 15], "texture": "#base"}
"north": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "north"},
"east": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "east"},
"south": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "south"},
"west": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "west"},
"up": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "up"},
"down": {"uv": [1, 1, 15, 15], "texture": "#base", "cullface": "down"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 1],
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#base"},
"east": {"uv": [0, 15, 1, 16], "texture": "#base"},
"north": {"uv": [0, 15, 16, 16], "texture": "#base", "cullface": "north"},
"east": {"uv": [0, 15, 1, 16], "texture": "#base", "cullface": "east"},
"south": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"},
"west": {"uv": [15, 15, 16, 16], "texture": "#base"},
"west": {"uv": [15, 15, 16, 16], "texture": "#base", "cullface": "west"},
"up": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"},
"down": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"}
"down": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base", "cullface": "down"}
}
},
{
@ -35,11 +35,11 @@
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 23]},
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#base"},
"east": {"uv": [0, 15, 1, 16], "texture": "#base"},
"south": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"},
"west": {"uv": [15, 15, 16, 16], "texture": "#base"},
"east": {"uv": [0, 15, 1, 16], "texture": "#base", "cullface": "east"},
"south": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base", "cullface": "south"},
"west": {"uv": [15, 15, 16, 16], "texture": "#base", "cullface": "west"},
"up": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"},
"down": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base"}
"down": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#base", "cullface": "down"}
}
},
{
@ -47,11 +47,11 @@
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#base"},
"east": {"uv": [0, 0, 1, 1], "texture": "#base"},
"north": {"uv": [0, 0, 16, 1], "texture": "#base", "cullface": "north"},
"east": {"uv": [0, 0, 1, 1], "texture": "#base", "cullface": "east"},
"south": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"},
"west": {"uv": [15, 0, 16, 1], "texture": "#base"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"},
"west": {"uv": [15, 0, 16, 1], "texture": "#base", "cullface": "west"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base", "cullface": "up"},
"down": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"}
}
},
@ -61,10 +61,10 @@
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 23]},
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#base"},
"east": {"uv": [0, 0, 1, 1], "texture": "#base"},
"south": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"},
"west": {"uv": [15, 0, 16, 1], "texture": "#base"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"},
"east": {"uv": [0, 0, 1, 1], "texture": "#base", "cullface": "east"},
"south": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base", "cullface": "south"},
"west": {"uv": [15, 0, 16, 1], "texture": "#base", "cullface": "west"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base", "cullface": "up"},
"down": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#base"}
}
},
@ -73,12 +73,10 @@
"to": [1, 1, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 15, 15, 16], "rotation": 180, "texture": "#base"},
"south": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"west": {"uv": [1, 15, 15, 16], "texture": "#base"},
"west": {"uv": [1, 15, 15, 16], "texture": "#base", "cullface": "west"},
"up": {"uv": [1, 15, 15, 16], "rotation": 90, "texture": "#base"},
"down": {"uv": [1, 15, 15, 16], "rotation": 270, "texture": "#base"}
"down": {"uv": [1, 15, 15, 16], "rotation": 270, "texture": "#base", "cullface": "down"}
}
},
{
@ -86,11 +84,9 @@
"to": [1, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 9]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#base"},
"south": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"west": {"uv": [1, 0, 15, 1], "texture": "#base"},
"up": {"uv": [1, 0, 15, 1], "rotation": 90, "texture": "#base"},
"west": {"uv": [1, 0, 15, 1], "texture": "#base", "cullface": "west"},
"up": {"uv": [1, 0, 15, 1], "rotation": 90, "texture": "#base", "cullface": "up"},
"down": {"uv": [1, 0, 15, 1], "rotation": 270, "texture": "#base"}
}
},
@ -99,12 +95,10 @@
"to": [16, 1, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#base"},
"south": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#base", "cullface": "east"},
"west": {"uv": [1, 0, 15, 1], "texture": "#base"},
"up": {"uv": [1, 0, 15, 1], "rotation": 90, "texture": "#base"},
"down": {"uv": [1, 0, 15, 1], "rotation": 270, "texture": "#base"}
"down": {"uv": [1, 0, 15, 1], "rotation": 270, "texture": "#base", "cullface": "down"}
}
},
{
@ -112,11 +106,9 @@
"to": [16, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 23, 9]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 15, 15, 16], "texture": "#base"},
"south": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"east": {"uv": [1, 15, 15, 16], "texture": "#base", "cullface": "east"},
"west": {"uv": [1, 15, 15, 16], "rotation": 180, "texture": "#base"},
"up": {"uv": [1, 15, 15, 16], "rotation": 270, "texture": "#base"},
"up": {"uv": [1, 15, 15, 16], "rotation": 270, "texture": "#base", "cullface": "up"},
"down": {"uv": [1, 15, 15, 16], "rotation": 90, "texture": "#base"}
}
},
@ -125,12 +117,10 @@
"to": [1, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]},
"faces": {
"north": {"uv": [15, 1, 16, 15], "texture": "#base"},
"north": {"uv": [15, 1, 16, 15], "texture": "#base", "cullface": "north"},
"east": {"uv": [15, 1, 16, 15], "texture": "#base"},
"south": {"uv": [15, 1, 16, 15], "texture": "#base"},
"west": {"uv": [15, 1, 16, 15], "texture": "#base"},
"up": {"uv": [0, 0, 1, 1], "texture": "#base"},
"down": {"uv": [0, 0, 1, 1], "texture": "#base"}
"west": {"uv": [15, 1, 16, 15], "texture": "#base", "cullface": "west"}
}
},
{
@ -140,10 +130,8 @@
"faces": {
"north": {"uv": [0, 1, 1, 15], "texture": "#base"},
"east": {"uv": [0, 1, 1, 15], "texture": "#base"},
"south": {"uv": [0, 1, 1, 15], "texture": "#base"},
"west": {"uv": [0, 1, 1, 15], "texture": "#base"},
"up": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"down": {"uv": [0, 0, 1, 1], "texture": "#missing"}
"south": {"uv": [0, 1, 1, 15], "texture": "#base", "cullface": "south"},
"west": {"uv": [0, 1, 1, 15], "texture": "#base", "cullface": "west"}
}
},
{
@ -152,11 +140,9 @@
"rotation": {"angle": 0, "axis": "y", "origin": [23, 9, 23]},
"faces": {
"north": {"uv": [15, 1, 16, 15], "texture": "#base"},
"east": {"uv": [15, 1, 16, 15], "texture": "#base"},
"south": {"uv": [15, 1, 16, 15], "texture": "#base"},
"west": {"uv": [15, 1, 16, 15], "texture": "#base"},
"up": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"down": {"uv": [0, 0, 1, 1], "texture": "#missing"}
"east": {"uv": [15, 1, 16, 15], "texture": "#base", "cullface": "east"},
"south": {"uv": [15, 1, 16, 15], "texture": "#base", "cullface": "south"},
"west": {"uv": [15, 1, 16, 15], "texture": "#base"}
}
},
{
@ -164,12 +150,10 @@
"to": [16, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 9, 8]},
"faces": {
"north": {"uv": [0, 1, 1, 15], "texture": "#base"},
"east": {"uv": [0, 1, 1, 15], "texture": "#base"},
"north": {"uv": [0, 1, 1, 15], "texture": "#base", "cullface": "north"},
"east": {"uv": [0, 1, 1, 15], "texture": "#base", "cullface": "east"},
"south": {"uv": [0, 1, 1, 15], "texture": "#base"},
"west": {"uv": [0, 1, 1, 15], "texture": "#base"},
"up": {"uv": [0, 0, 1, 1], "texture": "#missing"},
"down": {"uv": [0, 0, 1, 1], "texture": "#missing"}
"west": {"uv": [0, 1, 1, 15], "texture": "#base"}
}
}
],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB