Compare commits

...

17 commits

Author SHA1 Message Date
Mrbysco b69847d159 Add back recipe for Energizer and Enervator 2024-03-11 02:13:58 +01:00
Mrbysco 55c345a78d Remove unused imports 2024-03-11 02:10:31 +01:00
Mrbysco e7e2de68f3 Fix up the Energizer and Enervator 2024-03-11 02:10:19 +01:00
Mrbysco 1bcf01101e Removed old JEI code that has been replaced already 2024-03-11 01:33:37 +01:00
Mrbysco 7bcebe64f9 Add recipe for Crusher and Double Crusher 2024-03-11 01:01:51 +01:00
Mrbysco ef6e52f8a6 Fix up the Crusher and Double Crusher
Datagen Crushing recipes
2024-03-11 00:55:22 +01:00
Flanks255 2a4e966659 Maybe fixing server crash. 2024-03-10 17:41:48 -05:00
Flanks255 be1bb6632a Merge remote-tracking branch 'origin/1.20.4' into 1.20.4 2024-03-10 17:16:28 -05:00
Flanks255 acc80f61d1 Bumped for FC 2024-03-10 17:16:16 -05:00
Mrbysco fff34a3afd Add display name to the FireworkBox BlockEntity 2024-03-10 23:14:28 +01:00
Flanks255 adc276e8b5 Fixed Ranged Collector 2024-03-10 17:10:39 -05:00
Mrbysco a4cc12d993 Restore XP Solidifier GUI
Remove todo about validating Persistent Data as it's correct
2024-03-10 23:00:18 +01:00
Mrbysco 18ac77022e Merge branch '1.20.4' of https://github.com/Ellpeck/ActuallyAdditions into 1.20.4 2024-03-10 22:20:02 +01:00
Mrbysco 6886aca623 Fix the overlay on the Lava Factory Controller
Datagen the recipe for the casing and controller
2024-03-10 22:20:00 +01:00
Flanks255 5db3506179 Bump for fc 2024-03-10 14:02:32 -05:00
Mrbysco 5c13128acf Add a background to the Firework Box GUI and re-position the sliders 2024-03-10 20:00:09 +01:00
Flanks255 f524eccc01 Fixed recipe conflicts.
Fixed fluid placer wasting fluids.
2024-03-10 13:19:11 -05:00
90 changed files with 1664 additions and 373 deletions

View file

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

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-08T17:07:43.7158398 Item Recipes
// 1.20.4 2024-03-10T13:16:06.5711018 Item Recipes
d374edde9294d1a224b4b5610b50117a11328c00 data/actuallyadditions/recipes/advanced_coil.json
f67629e45d152c96f3467a90a67520f78ecf9f07 data/actuallyadditions/recipes/advanced_leaf_blower.json
d65e5a70232fa2f0e74d2a67c1cd4b0e87124242 data/actuallyadditions/recipes/basic_coil.json
@ -87,6 +87,8 @@ f6c73cb2e41a8a21e2fda888b28bf52672b33d2e data/actuallyadditions/recipes/rice_sli
764d4f63e1d978d02419d30d2ad845b914e594c0 data/actuallyadditions/recipes/ring_of_magnetizing.json
fc0a5281fc77edde16f22165e164f73dd28d7fcd data/actuallyadditions/recipes/single_battery.json
cb0454ccb8e918d506a1dd488187453678f82751 data/actuallyadditions/recipes/stone_aiot.json
c57c0ac561f1919f6085f052060ca285a67ac579 data/actuallyadditions/recipes/tagged_slime_block.json
be5e09790d225ca17dfef8089caece4095f3b6cf data/actuallyadditions/recipes/tagged_sticky_piston.json
b4aa29ef0d47b557f354a23cb6ee8ef60d273de3 data/actuallyadditions/recipes/teleport_staff.json
0ec48b429486a03aba107cb8b6dc9e03694ca68f data/actuallyadditions/recipes/tiny_to_charcoal.json
5745a05f877fce254a1990f1e89f80e91846e270 data/actuallyadditions/recipes/tiny_to_coal.json
@ -94,5 +96,3 @@ b4aa29ef0d47b557f354a23cb6ee8ef60d273de3 data/actuallyadditions/recipes/teleport
89c9512eeb746befb1bdc31037baa9bd86220f74 data/actuallyadditions/recipes/triple_battery.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-09T22:59:24.7798372 Recipes
// 1.20.4 2024-03-11T02:13:51.6169998 Recipes
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
7e05cd54092b998dfdbd2221235dd52576ec79eb data/actuallyadditions/recipes/black_quartz_block.json
@ -20,10 +20,14 @@ db1978ab59369dd3c10e719073b7035acf33885c data/actuallyadditions/recipes/black_qu
2e9233449531a074984b443ceef0ad782f82eaed data/actuallyadditions/recipes/chiseled_black_quartz_wall.json
e41876ca63cd64d5a906c87682433179e9fe4de2 data/actuallyadditions/recipes/coal_generator.json
f1bbeaed1616b92ee345860fedb789e0aaa74a0f data/actuallyadditions/recipes/coffee_machine.json
596632db9ab03e62c5866faab49e703c1a8d9bf4 data/actuallyadditions/recipes/crusher.json
e091d7dcfe6a654a122b5f072a133ec656d4b8f7 data/actuallyadditions/recipes/crusher_double.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
87c24522b48b28bcf1996e7df01313fead1c1890 data/actuallyadditions/recipes/energizer.json
f44feb3591a63e24a37bc6bc0463dcd425b29e2b data/actuallyadditions/recipes/enervator.json
b2eefc77a753cbb650a879a9d30d833fc154dc58 data/actuallyadditions/recipes/ethetic_green_slab.json
1171daf9cf5402c9c47a9f2f370d5924ebddef5e data/actuallyadditions/recipes/ethetic_green_stairs.json
0e57ac576603b7c6aeef7709d2e669e3dacbe5f2 data/actuallyadditions/recipes/ethetic_green_wall.json
@ -43,9 +47,12 @@ 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
2c37821d291542d4821842501e07bfad38181553 data/actuallyadditions/recipes/lava_factory_casing.json
76f9eb2b859198eec4c50d992c3715633d5109a8 data/actuallyadditions/recipes/lava_factory_controller.json
73696fd4e851f440a9850485fc9ad03fc63442a9 data/actuallyadditions/recipes/oil_generator.json
8c78ebb9351b98ffe368391a391b90385c0b8b7f data/actuallyadditions/recipes/placer.json
184acfb5fd3799b3fbe35150c67b6530581f8bf1 data/actuallyadditions/recipes/powered_furnace.json
b81a706a5f635d8a63ffd3034c80838dc10699c9 data/actuallyadditions/recipes/ranged_collector.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

@ -1,2 +1,46 @@
// 1.20.4 2024-03-04T22:51:31.5959296 Crushing Recipes
5fa543c707eeb18accd41ca93e1a7a33a4eb44ff data/actuallyadditions/recipes/crushing/iron_crusher.json
// 1.20.4 2024-03-11T00:45:42.8987725 Crushing Recipes
07795b4aba877586e7aa11e6029caad068454978 data/actuallyadditions/recipes/crushing/allium.json
30d7431e146baa3e25afd3db941d8b6352be2b14 data/actuallyadditions/recipes/crushing/azure_bluet.json
928786acb608867ea89632b52104fd051ee004ba data/actuallyadditions/recipes/crushing/black_quartz_ore.json
97f1c1e40394e612ab81d9b682953274e37db309 data/actuallyadditions/recipes/crushing/blaze_rod.json
843270afee002ee27acf7663fa07bee6afc015f6 data/actuallyadditions/recipes/crushing/blue_orchid.json
5fa543c707eeb18accd41ca93e1a7a33a4eb44ff data/actuallyadditions/recipes/crushing/bone.json
fb79df8b27902475a107c891f6dfcfcd83e5addb data/actuallyadditions/recipes/crushing/coal_block.json
8955e3aba3eca7c4de62b08e1b2aa1339360e19a data/actuallyadditions/recipes/crushing/coal_ore.json
6ac7b08799b8996fbefedee184d34b6cfa8d8e6a data/actuallyadditions/recipes/crushing/cobblestone.json
e4214825ce0531be1e63fe9951a341130d05dd85 data/actuallyadditions/recipes/crushing/cornflower.json
0f3b98f6f2ec3521acf9f6fbb281f24302e5552a data/actuallyadditions/recipes/crushing/danedlion.json
a916d475df783d565d879fb3ae08195a2c561474 data/actuallyadditions/recipes/crushing/deepslate_coal_ore.json
6ff5d96d4e0a8214bf7e270bce9d77b427aa3a6e data/actuallyadditions/recipes/crushing/deepslate_diamond_ore.json
14dc3d945a793a11d08834f8814ecf7882f08bd9 data/actuallyadditions/recipes/crushing/deepslate_emerald_ore.json
b90588af31abd2bfff1179144823ee7e24fe98ff data/actuallyadditions/recipes/crushing/deepslate_lapis_ore.json
53d8c4bfbcd7f8347d25c567030c35de015b6ede data/actuallyadditions/recipes/crushing/deepslate_redstone_ore.json
b93fc1e7009a67eae296792186d210d3f82d11b9 data/actuallyadditions/recipes/crushing/diamond_horse_armor.json
268b250ae01bb702128709cdd017a890ca622984 data/actuallyadditions/recipes/crushing/diamond_ore.json
b1a764c5c764a3020957eb06ccf2f6b6150451ea data/actuallyadditions/recipes/crushing/emerald_ore.json
6a018de5653b7c0e30d27c3769126250e21685e5 data/actuallyadditions/recipes/crushing/glowstone.json
60d30a52aa2fac98480d903e344b9bdf8f4bcd4c data/actuallyadditions/recipes/crushing/golden_horse_armor.json
7cee0bad5b769e48b100d877acbcdd6582dc6207 data/actuallyadditions/recipes/crushing/gold_ore.json
b3c9e497ad7fd62ffbc3809e1c195608c00f59dc data/actuallyadditions/recipes/crushing/gravel.json
78a4a0959c8869d6c1e9cedff14c0be142234a07 data/actuallyadditions/recipes/crushing/iron_horse_armor.json
0873773cf161ecbb4d956110240b59e05a558999 data/actuallyadditions/recipes/crushing/iron_ore.json
28999e5d04c2292b6f76eaa51b2c43ec2cd9f9ca data/actuallyadditions/recipes/crushing/lapis_ore.json
f125a9bb8aaae2f727fde1871aa469d43062164e data/actuallyadditions/recipes/crushing/lilac.json
3baa56bb164fe8a412076abce9dcb4cc29028945 data/actuallyadditions/recipes/crushing/lily_of_the_valley.json
17794ebc8c44cf1afb51849c7aed694159ad760e data/actuallyadditions/recipes/crushing/nether_quartz_ore.json
544e9ecdf187c75816c8663470f6fda5eaf23b0b data/actuallyadditions/recipes/crushing/orange_tulip.json
f6c3d3ea4e000061711c3a89127d7ac2296f30b4 data/actuallyadditions/recipes/crushing/oxeye_daisy.json
62f5bdeac7cfe3f168519be8a0c530479762ea80 data/actuallyadditions/recipes/crushing/peony.json
428b3d9751c3a10b46c4e5b5065eccf0f221be1a data/actuallyadditions/recipes/crushing/pink_petals.json
00f49d07951883e76805fba0eb36390f02bcb13d data/actuallyadditions/recipes/crushing/pink_tulip.json
cd0ed556beec27185a114a52e82e50403c307a1a data/actuallyadditions/recipes/crushing/pitcher_plant.json
580ec3402c59182c6854fd5127230b48c377fc79 data/actuallyadditions/recipes/crushing/poppy.json
82f05b8878e72c4eb092007a21c204ec999f3a04 data/actuallyadditions/recipes/crushing/prismarine_shard.json
4772e5059251875c8a5860a6fdfe7f3bca7f7506 data/actuallyadditions/recipes/crushing/redstone_ore.json
61e68bf20aae6e5dbdf2662bd30153e4ad78f6b2 data/actuallyadditions/recipes/crushing/red_tulip.json
06ed082578441481bda5d937f0e1a5f5c6d26c83 data/actuallyadditions/recipes/crushing/rice.json
fea5ac56ae534a4368835e0e2da242f6e468f3e8 data/actuallyadditions/recipes/crushing/rose_bush.json
ea4b8e2f5e0a9312cb64be036c58a339e03d377b data/actuallyadditions/recipes/crushing/sugar_cane.json
5d55a7d91ca5a80b6fa5ba311861b6dd2b18d43f data/actuallyadditions/recipes/crushing/sunflower.json
4204dc494b762b58743bdd5f5d3e8ce04c90eaa4 data/actuallyadditions/recipes/crushing/white_tulip.json
d1abca5b7301750279ff23764c248dae58b40ed0 data/actuallyadditions/recipes/crushing/wither_rose.json

View file

@ -0,0 +1,29 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"item": "actuallyadditions:basic_coil"
},
"C": {
"tag": "forge:cobblestone"
},
"F": {
"item": "minecraft:flint"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"R": {
"item": "actuallyadditions:restonia_crystal"
}
},
"pattern": [
"RFC",
"BIB",
"CFR"
],
"result": {
"item": "actuallyadditions:crusher"
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"C": {
"item": "actuallyadditions:crusher"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"S": {
"tag": "forge:cobblestone"
}
},
"pattern": [
"SAS",
"CIC",
"SAS"
],
"result": {
"item": "actuallyadditions:crusher_double"
}
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:allium"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:magenta_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:azure_bluet"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:light_gray_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "actuallyadditions:black_quartz_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "actuallyadditions:black_quartz"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:blaze_rod"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:blaze_powder"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:blue_orchid"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:light_blue_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:coal_block"
},
"result": [
{
"result": {
"Count": 9,
"id": "minecraft:coal"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:coal_ore"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:coal"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:cobblestone"
},
"result": [
{
"result": {
"Count": 1,
"id": "minecraft:sand"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:cornflower"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:blue_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:dandelion"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:yellow_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:deepslate_coal_ore"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:coal"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:deepslate_diamond_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:diamond"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:deepslate_emerald_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:emerald"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:deepslate_lapis_ore"
},
"result": [
{
"result": {
"Count": 12,
"id": "minecraft:lapis_lazuli"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:deepslate_redstone_ore"
},
"result": [
{
"result": {
"Count": 10,
"id": "minecraft:redstone"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:diamond_horse_armor"
},
"result": [
{
"result": {
"Count": 6,
"id": "minecraft:diamond"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:diamond_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:diamond"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:emerald_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:emerald"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:glowstone"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:glowstone_dust"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:gold_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:raw_gold"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:golden_horse_armor"
},
"result": [
{
"result": {
"Count": 6,
"id": "minecraft:raw_gold"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:gravel"
},
"result": [
{
"result": {
"Count": 1,
"id": "minecraft:flint"
}
},
{
"chance": 0.5,
"result": {
"Count": 1,
"id": "minecraft:flint"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:iron_horse_armor"
},
"result": [
{
"result": {
"Count": 6,
"id": "minecraft:raw_iron"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:iron_ore"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:raw_iron"
}
},
{
"chance": 0.2,
"result": {
"Count": 1,
"id": "minecraft:raw_gold"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:lapis_ore"
},
"result": [
{
"result": {
"Count": 12,
"id": "minecraft:lapis_lazuli"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:lilac"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:magenta_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:lily_of_the_valley"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:white_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:nether_quartz_ore"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:quartz"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:orange_tulip"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:orange_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:oxeye_daisy"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:light_gray_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:peony"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:pink_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:pink_petals"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:pink_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:pink_tulip"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:pink_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:pitcher_plant"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:cyan_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:poppy"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:red_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:prismarine_shard"
},
"result": [
{
"result": {
"Count": 1,
"id": "minecraft:prismarine_crystals"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:red_tulip"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:red_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:redstone_ore"
},
"result": [
{
"result": {
"Count": 10,
"id": "minecraft:redstone"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "actuallyadditions:rice"
},
"result": [
{
"result": {
"Count": 2,
"id": "minecraft:sugar"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:rose_bush"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:red_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:sugar_cane"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:sugar"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:sunflower"
},
"result": [
{
"result": {
"Count": 4,
"id": "minecraft:yellow_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:white_tulip"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:light_gray_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "actuallyadditions:crushing",
"ingredient": {
"item": "minecraft:wither_rose"
},
"result": [
{
"result": {
"Count": 3,
"id": "minecraft:black_dye"
}
},
{
"chance": 0.0,
"result": {
"Count": 0,
"id": "minecraft:air"
}
}
]
}

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"R": {
"item": "actuallyadditions:restonia_crystal"
}
},
"pattern": [
"R R",
"AIA",
"R R"
],
"result": {
"item": "actuallyadditions:energizer"
}
}

View file

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"R": {
"item": "actuallyadditions:restonia_crystal"
}
},
"pattern": [
" R ",
"AIA",
" R "
],
"result": {
"item": "actuallyadditions:enervator"
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "actuallyadditions:iron_casing"
},
"E": {
"item": "actuallyadditions:enori_crystal_block"
}
},
"pattern": [
"ECE"
],
"result": {
"count": 32,
"item": "actuallyadditions:lava_factory_casing"
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "actuallyadditions:advanced_coil"
},
"B": {
"item": "minecraft:lava_bucket"
},
"C": {
"item": "actuallyadditions:iron_casing"
},
"E": {
"item": "actuallyadditions:empowered_enori_crystal_block"
}
},
"pattern": [
"ACA",
"EAE",
"BBB"
],
"result": {
"item": "actuallyadditions:lava_factory_controller"
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "actuallyadditions:iron_casing"
},
"E": {
"tag": "forge:ender_pearls"
},
"H": {
"item": "minecraft:hopper"
},
"V": {
"item": "actuallyadditions:void_crystal"
}
},
"pattern": [
" V ",
"EHE",
" C "
],
"result": {
"item": "actuallyadditions:ranged_collector"
}
}

View file

@ -3,7 +3,7 @@
"category": "misc",
"key": {
"R": {
"item": "actuallyadditions:rice_slimeball"
"tag": "forge:slimeballs"
}
},
"pattern": [

View file

@ -6,7 +6,7 @@
"item": "minecraft:piston"
},
"R": {
"item": "actuallyadditions:rice_slimeball"
"tag": "forge:slimeballs"
}
},
"pattern": [

View file

@ -339,6 +339,66 @@ public class BlockRecipeGenerator extends RecipeProvider {
.pattern("B", "B")
.define('B', ActuallyBlocks.BLACK_QUARTZ.getItem())
.save(recipeOutput);
// Lava Factory Controller
Recipe.shaped(ActuallyBlocks.LAVA_FACTORY_CONTROLLER.getItem())
.pattern("ACA", "EAE", "BBB")
.define('B', Items.LAVA_BUCKET)
.define('A', ActuallyItems.ADVANCED_COIL.get())
.define('E', ActuallyBlocks.EMPOWERED_ENORI_CRYSTAL.get())
.define('C', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
// Lava Casing
Recipe.shaped(ActuallyBlocks.LAVA_FACTORY_CASING.getItem(), 32)
.pattern("ECE")
.define('E', ActuallyBlocks.ENORI_CRYSTAL.get())
.define('C', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
// Ranged Collector
Recipe.shaped(ActuallyBlocks.RANGED_COLLECTOR.getItem())
.pattern(" V ", "EHE", " C ")
.define('V', ActuallyItems.VOID_CRYSTAL.get())
.define('E', Tags.Items.ENDER_PEARLS)
.define('H', Items.HOPPER)
.define('C', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
// Crusher
Recipe.shaped(ActuallyBlocks.CRUSHER.getItem())
.pattern("RFC", "BIB", "CFR")
.define('R', ActuallyItems.RESTONIA_CRYSTAL.get())
.define('F', Items.FLINT)
.define('C', Tags.Items.COBBLESTONE)
.define('I', ActuallyBlocks.IRON_CASING.get())
.define('B', ActuallyItems.BASIC_COIL.get())
.save(recipeOutput);
// Double Crusher
Recipe.shaped(ActuallyBlocks.CRUSHER_DOUBLE.getItem())
.pattern("SAS", "CIC", "SAS")
.define('S', Tags.Items.COBBLESTONE)
.define('A', ActuallyItems.ADVANCED_COIL.get())
.define('C', ActuallyBlocks.CRUSHER.get())
.define('I', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
// Energizer
Recipe.shaped(ActuallyBlocks.ENERGIZER.getItem())
.pattern("R R", "AIA", "R R")
.define('R', ActuallyItems.RESTONIA_CRYSTAL.get())
.define('A', ActuallyItems.ADVANCED_COIL.get())
.define('I', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
// Enervator
Recipe.shaped(ActuallyBlocks.ENERVATOR.getItem())
.pattern(" R ", "AIA", " R ")
.define('R', ActuallyItems.RESTONIA_CRYSTAL.get())
.define('A', ActuallyItems.ADVANCED_COIL.get())
.define('I', ActuallyBlocks.IRON_CASING.get())
.save(recipeOutput);
}
public static class Recipe {

View file

@ -1,8 +1,11 @@
package de.ellpeck.actuallyadditions.data;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.util.NoAdvRecipeOutput;
import net.minecraft.core.NonNullList;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.RecipeProvider;
@ -27,8 +30,134 @@ public class CrushingRecipeGenerator extends RecipeProvider {
protected void buildRecipes(@Nonnull RecipeOutput output) {
var recipeOutput = new NoAdvRecipeOutput(output);
new CrushingBuilder(Ingredient.of(Items.BONE), new CrushingRecipe.CrushingResult(new ItemStack(Items.BONE_MEAL, 6), 1.0f))
.save(recipeOutput, "bone");
new CrushingBuilder(Ingredient.of(Items.SUGAR_CANE), new CrushingRecipe.CrushingResult(new ItemStack(Items.SUGAR, 3), 1.0f))
.save(recipeOutput, "sugar_cane");
new CrushingBuilder(Ingredient.of(Items.BLAZE_ROD), new CrushingRecipe.CrushingResult(new ItemStack(Items.BLAZE_POWDER, 3), 1.0f))
.save(recipeOutput, "blaze_rod");
CrushingRecipe recipe = new CrushingRecipe(Ingredient.of(Items.BONE), new ItemStack(Items.BONE_MEAL, 6), 1.0f, ItemStack.EMPTY, 0.0f);
recipeOutput.accept(new ResourceLocation(ActuallyAdditions.MODID, "crushing/iron_crusher"), recipe, null);
new CrushingBuilder(Ingredient.of(Items.DANDELION), new CrushingRecipe.CrushingResult(new ItemStack(Items.YELLOW_DYE, 3), 1.0f))
.save(recipeOutput, "danedlion");
new CrushingBuilder(Ingredient.of(Items.POPPY), new CrushingRecipe.CrushingResult(new ItemStack(Items.RED_DYE, 3), 1.0f))
.save(recipeOutput, "poppy");
new CrushingBuilder(Ingredient.of(Items.BLUE_ORCHID), new CrushingRecipe.CrushingResult(new ItemStack(Items.LIGHT_BLUE_DYE, 3), 1.0f))
.save(recipeOutput, "blue_orchid");
new CrushingBuilder(Ingredient.of(Items.ALLIUM), new CrushingRecipe.CrushingResult(new ItemStack(Items.MAGENTA_DYE, 3), 1.0f))
.save(recipeOutput, "allium");
new CrushingBuilder(Ingredient.of(Items.AZURE_BLUET), new CrushingRecipe.CrushingResult(new ItemStack(Items.LIGHT_GRAY_DYE, 3), 1.0f))
.save(recipeOutput, "azure_bluet");
new CrushingBuilder(Ingredient.of(Items.RED_TULIP), new CrushingRecipe.CrushingResult(new ItemStack(Items.RED_DYE, 3), 1.0f))
.save(recipeOutput, "red_tulip");
new CrushingBuilder(Ingredient.of(Items.ORANGE_TULIP), new CrushingRecipe.CrushingResult(new ItemStack(Items.ORANGE_DYE, 3), 1.0f))
.save(recipeOutput, "orange_tulip");
new CrushingBuilder(Ingredient.of(Items.WHITE_TULIP), new CrushingRecipe.CrushingResult(new ItemStack(Items.LIGHT_GRAY_DYE, 3), 1.0f))
.save(recipeOutput, "white_tulip");
new CrushingBuilder(Ingredient.of(Items.PINK_TULIP), new CrushingRecipe.CrushingResult(new ItemStack(Items.PINK_DYE, 3), 1.0f))
.save(recipeOutput, "pink_tulip");
new CrushingBuilder(Ingredient.of(Items.PINK_PETALS), new CrushingRecipe.CrushingResult(new ItemStack(Items.PINK_DYE, 3), 1.0f))
.save(recipeOutput, "pink_petals");
new CrushingBuilder(Ingredient.of(Items.OXEYE_DAISY), new CrushingRecipe.CrushingResult(new ItemStack(Items.LIGHT_GRAY_DYE, 3), 1.0f))
.save(recipeOutput, "oxeye_daisy");
new CrushingBuilder(Ingredient.of(Items.CORNFLOWER), new CrushingRecipe.CrushingResult(new ItemStack(Items.BLUE_DYE, 3), 1.0f))
.save(recipeOutput, "cornflower");
new CrushingBuilder(Ingredient.of(Items.LILY_OF_THE_VALLEY), new CrushingRecipe.CrushingResult(new ItemStack(Items.WHITE_DYE, 3), 1.0f))
.save(recipeOutput, "lily_of_the_valley");
new CrushingBuilder(Ingredient.of(Items.WITHER_ROSE), new CrushingRecipe.CrushingResult(new ItemStack(Items.BLACK_DYE, 3), 1.0f))
.save(recipeOutput, "wither_rose");
new CrushingBuilder(Ingredient.of(Items.SUNFLOWER), new CrushingRecipe.CrushingResult(new ItemStack(Items.YELLOW_DYE, 4), 1.0f))
.save(recipeOutput, "sunflower");
new CrushingBuilder(Ingredient.of(Items.LILAC), new CrushingRecipe.CrushingResult(new ItemStack(Items.MAGENTA_DYE, 4), 1.0f))
.save(recipeOutput, "lilac");
new CrushingBuilder(Ingredient.of(Items.ROSE_BUSH), new CrushingRecipe.CrushingResult(new ItemStack(Items.RED_DYE, 4), 1.0f))
.save(recipeOutput, "rose_bush");
new CrushingBuilder(Ingredient.of(Items.PEONY), new CrushingRecipe.CrushingResult(new ItemStack(Items.PINK_DYE, 4), 1.0f))
.save(recipeOutput, "peony");
new CrushingBuilder(Ingredient.of(Items.PITCHER_PLANT), new CrushingRecipe.CrushingResult(new ItemStack(Items.CYAN_DYE, 4), 1.0f))
.save(recipeOutput, "pitcher_plant");
new CrushingBuilder(Ingredient.of(Items.REDSTONE_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.REDSTONE, 10), 1.0f))
.save(recipeOutput, "redstone_ore");
new CrushingBuilder(Ingredient.of(Items.DEEPSLATE_REDSTONE_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.REDSTONE, 10), 1.0f))
.save(recipeOutput, "deepslate_redstone_ore");
new CrushingBuilder(Ingredient.of(Items.LAPIS_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.LAPIS_LAZULI, 12), 1.0f))
.save(recipeOutput, "lapis_ore");
new CrushingBuilder(Ingredient.of(Items.DEEPSLATE_LAPIS_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.LAPIS_LAZULI, 12), 1.0f))
.save(recipeOutput, "deepslate_lapis_ore");
new CrushingBuilder(Ingredient.of(Items.COAL_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.COAL, 3), 1.0f))
.save(recipeOutput, "coal_ore");
new CrushingBuilder(Ingredient.of(Items.DEEPSLATE_COAL_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.COAL, 3), 1.0f))
.save(recipeOutput, "deepslate_coal_ore");
new CrushingBuilder(Ingredient.of(Items.COAL_BLOCK), new CrushingRecipe.CrushingResult(new ItemStack(Items.COAL, 9), 1.0f))
.save(recipeOutput, "coal_block");
new CrushingBuilder(Ingredient.of(Items.NETHER_QUARTZ_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.QUARTZ, 3), 1.0f))
.save(recipeOutput, "nether_quartz_ore");
new CrushingBuilder(Ingredient.of(Items.COBBLESTONE), new CrushingRecipe.CrushingResult(new ItemStack(Items.SAND, 1), 1.0f))
.save(recipeOutput, "cobblestone");
new CrushingBuilder(Ingredient.of(Items.GRAVEL), new CrushingRecipe.CrushingResult(new ItemStack(Items.FLINT, 1), 1.0f))
.addResult2(new CrushingRecipe.CrushingResult(new ItemStack(Items.FLINT, 1), 0.5f))
.save(recipeOutput, "gravel");
new CrushingBuilder(Ingredient.of(ActuallyItems.RICE), new CrushingRecipe.CrushingResult(new ItemStack(Items.SUGAR, 2), 1.0f))
.save(recipeOutput, "rice");
new CrushingBuilder(Ingredient.of(Items.GLOWSTONE), new CrushingRecipe.CrushingResult(new ItemStack(Items.GLOWSTONE_DUST, 4), 1.0f))
.save(recipeOutput, "glowstone");
new CrushingBuilder(Ingredient.of(Items.DIAMOND_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.DIAMOND, 2), 1.0f))
.save(recipeOutput, "diamond_ore");
new CrushingBuilder(Ingredient.of(Items.DEEPSLATE_DIAMOND_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.DIAMOND, 2), 1.0f))
.save(recipeOutput, "deepslate_diamond_ore");
new CrushingBuilder(Ingredient.of(Items.EMERALD_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.EMERALD, 2), 1.0f))
.save(recipeOutput, "emerald_ore");
new CrushingBuilder(Ingredient.of(Items.DEEPSLATE_EMERALD_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.EMERALD, 2), 1.0f))
.save(recipeOutput, "deepslate_emerald_ore");
new CrushingBuilder(Ingredient.of(Items.PRISMARINE_SHARD), new CrushingRecipe.CrushingResult(new ItemStack(Items.PRISMARINE_CRYSTALS, 1), 1.0f))
.save(recipeOutput, "prismarine_shard");
new CrushingBuilder(Ingredient.of(ActuallyBlocks.BLACK_QUARTZ_ORE.get()), new CrushingRecipe.CrushingResult(new ItemStack(ActuallyItems.BLACK_QUARTZ.get(), 2), 1.0f))
.save(recipeOutput, "black_quartz_ore");
//TODO: Think about the recipes that returned crushed ores before and what to replace them with
new CrushingBuilder(Ingredient.of(Items.IRON_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.RAW_IRON, 2), 1.0f))
.addResult2(new CrushingRecipe.CrushingResult(new ItemStack(Items.RAW_GOLD, 1), 0.2f))
.save(recipeOutput, "iron_ore");
new CrushingBuilder(Ingredient.of(Items.IRON_HORSE_ARMOR), new CrushingRecipe.CrushingResult(new ItemStack(Items.RAW_IRON, 6), 1.0f))
.save(recipeOutput, "iron_horse_armor");
new CrushingBuilder(Ingredient.of(Items.GOLDEN_HORSE_ARMOR), new CrushingRecipe.CrushingResult(new ItemStack(Items.RAW_GOLD, 6), 1.0f))
.save(recipeOutput, "golden_horse_armor");
new CrushingBuilder(Ingredient.of(Items.DIAMOND_HORSE_ARMOR), new CrushingRecipe.CrushingResult(new ItemStack(Items.DIAMOND, 6), 1.0f))
.save(recipeOutput, "diamond_horse_armor");
new CrushingBuilder(Ingredient.of(Items.GOLD_ORE), new CrushingRecipe.CrushingResult(new ItemStack(Items.RAW_GOLD, 2), 1.0f))
.save(recipeOutput, "gold_ore");
}
public static class CrushingBuilder {
private final Ingredient ingredient;
private final NonNullList<CrushingRecipe.CrushingResult> results = NonNullList.withSize(2, CrushingRecipe.CrushingResult.EMPTY);
public CrushingBuilder(Ingredient ingredient, CrushingRecipe.CrushingResult result) {
this.ingredient = ingredient;
this.results.set(0, result);
}
public CrushingBuilder addResult2(CrushingRecipe.CrushingResult result) {
this.results.set(1, result);
return this;
}
public void save(RecipeOutput consumer, ResourceLocation name) {
if (results.size() != 2)
throw new IllegalStateException("invalid result count: " + results.size() + ", recipe: " + name.toString());
CrushingRecipe recipe = new CrushingRecipe(ingredient, results);
consumer.accept(name, recipe, null);
}
public void save(RecipeOutput consumer, String name) {
ResourceLocation res = new ResourceLocation(ActuallyAdditions.MODID, "crushing/" + name);
if (results.size() != 2)
throw new IllegalStateException("invalid result count: " + results.size() + ", recipe: " + name.toString());
CrushingRecipe recipe = new CrushingRecipe(ingredient, results);
consumer.accept(res, recipe, null);
}
}
}

View file

@ -489,18 +489,18 @@ public class ItemRecipeGenerator extends RecipeProvider {
.define('I', Items.IRON_HELMET)
.save(recipeOutput);
// Sticky Piston from rice slime
// Sticky Piston from tagged slime balls
Recipe.shaped(Items.STICKY_PISTON)
.pattern("R", "P")
.define('R', ActuallyItems.RICE_SLIMEBALL.get())
.define('R', Tags.Items.SLIMEBALLS)
.define('P', Items.PISTON)
.save(recipeOutput);
.save(recipeOutput, new ResourceLocation(ActuallyAdditions.MODID, "tagged_sticky_piston"));
// Slime block from rice slime balls
// Slime block from tagged balls
Recipe.shaped(Items.SLIME_BLOCK)
.pattern("RRR", "RRR", "RRR")
.define('R', ActuallyItems.RICE_SLIMEBALL.get())
.save(recipeOutput);
.define('R', Tags.Items.SLIMEBALLS)
.save(recipeOutput, new ResourceLocation(ActuallyAdditions.MODID, "tagged_slime_block"));
//Shards
addShard(recipeOutput, ActuallyItems.VOID_CRYSTAL_SHARD, ActuallyItems.VOID_CRYSTAL);

View file

@ -17,7 +17,7 @@ import java.util.concurrent.CompletableFuture;
public class ItemTagsGenerator extends ItemTagsProvider {
public ItemTagsGenerator(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> lookupProvider,
TagsProvider<Block> blockTagProvider, ExistingFileHelper existingFileHelper) {
TagsProvider<Block> blockTagProvider, ExistingFileHelper existingFileHelper) {
super(packOutput, lookupProvider, blockTagProvider.contentsGetter(), ActuallyAdditions.MODID, existingFileHelper);
}

View file

@ -100,7 +100,7 @@ public final class ActuallyBlocks {
public static final AABlockReg<BlockFeeder, AABlockItem, TileEntityFeeder> FEEDER = new AABlockReg<>("feeder", BlockFeeder::new, (b) -> new AABlockItem(b, defaultBlockItemProperties), TileEntityFeeder::new);
public static final AABlockReg<BlockCrusher, AABlockItem, TileEntityCrusher> CRUSHER = new AABlockReg<>("crusher", () -> new BlockCrusher(false),
(b) -> new AABlockItem.BlockEntityEnergyItem(b, defaultBlockItemProperties), TileEntityCrusher::new);
public static final AABlockReg<BlockCrusher, AABlockItem, TileEntityCrusher> CRUSHER_DOUBLE = new AABlockReg<>("crusher_double", () -> new BlockCrusher(false),
public static final AABlockReg<BlockCrusher, AABlockItem, TileEntityCrusher> CRUSHER_DOUBLE = new AABlockReg<>("crusher_double", () -> new BlockCrusher(true),
(b) -> new AABlockItem.BlockEntityEnergyItem(b, defaultBlockItemProperties), TileEntityCrusherDouble::new);
public static final AABlockReg<BlockEnergizer, AABlockItem, TileEntityEnergizer> ENERGIZER = new AABlockReg<>("energizer", () -> new BlockEnergizer(true),

View file

@ -14,11 +14,10 @@ import com.mojang.blaze3d.platform.Window;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.base.DirectionalBlock;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLavaFactoryController;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
@ -66,9 +65,9 @@ public class BlockLavaFactoryController extends DirectionalBlock.Container imple
if (factory != null) {
int state = factory.isMultiblock();
if (state == TileEntityLavaFactoryController.NOT_MULTI) {
StringUtil.drawSplitString(minecraft.font, I18n.get("tooltip." + ActuallyAdditions.MODID + ".factory.notPart.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 5, 200, 0xFFFFFF, true);
guiGraphics.drawWordWrap(minecraft.font, Component.translatable("tooltip." + ActuallyAdditions.MODID + ".factory.notPart.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 5, 200, 0xFFFFFF);
} else if (state == TileEntityLavaFactoryController.HAS_AIR || state == TileEntityLavaFactoryController.HAS_LAVA) {
StringUtil.drawSplitString(minecraft.font, I18n.get("tooltip." + ActuallyAdditions.MODID + ".factory.works.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 5, 200, 0xFFFFFF, true);
guiGraphics.drawWordWrap(minecraft.font, Component.translatable("tooltip." + ActuallyAdditions.MODID + ".factory.working.desc"), resolution.getGuiScaledWidth() / 2 + 5, resolution.getGuiScaledHeight() / 2 + 5, 200, 0xFFFFFF);
}
}
}

View file

@ -23,9 +23,15 @@ import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
public final class PlayerData {
private static PlayerSave clientData = null;
public static PlayerSave getDataFromPlayer(Player player) {
WorldData worldData = WorldData.get((ServerLevel) player.getCommandSenderWorld());
if (!(player.getCommandSenderWorld() instanceof ServerLevel)) {
if (clientData == null) {
clientData = new PlayerSave(player.getUUID());
}
return clientData;
}
WorldData worldData = WorldData.get(player.getCommandSenderWorld());
ConcurrentHashMap<UUID, PlayerSave> data = worldData.playerSaveData;
UUID id = player.getUUID();

View file

@ -10,20 +10,24 @@
package de.ellpeck.actuallyadditions.mod.inventory;
import com.mojang.datafixers.util.Pair;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnergizer;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.neoforged.neoforge.capabilities.Capabilities;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
@ -76,13 +80,11 @@ public class ContainerEnergizer extends AbstractContainerMenu {
return (itemstack.isEmpty() || player.isCreative() || !EnchantmentHelper.hasBindingCurse(itemstack)) && super.mayPickup(player);
}
// TODO: [port] add back
// @Override
// @OnlyIn(Dist.CLIENT)
// public String getSlotTexture() {
// return Armor.EMPTY_SLOT_NAMES[slot.getIndex()];
// }
@Nullable
@Override
public Pair<ResourceLocation, ResourceLocation> getNoItemIcon() {
return Pair.of(InventoryMenu.BLOCK_ATLAS, InventoryMenu.TEXTURE_EMPTY_SLOTS[slot.getIndex()]);
}
});
}
}

View file

@ -10,19 +10,23 @@
package de.ellpeck.actuallyadditions.mod.inventory;
import com.mojang.datafixers.util.Pair;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnervator;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.capabilities.Capabilities;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
@ -64,13 +68,11 @@ public class ContainerEnervator extends AbstractContainerMenu {
return StackUtil.isValid(stack) && stack.getItem() instanceof ArmorItem;
}
// TODO: [port] add this back
// @Override
// @OnlyIn(Dist.CLIENT)
// public String getSlotTexture() {
// return ItemArmor.EMPTY_SLOT_NAMES[slot.getIndex()];
// }
@Nullable
@Override
public Pair<ResourceLocation, ResourceLocation> getNoItemIcon() {
return Pair.of(InventoryMenu.BLOCK_ATLAS, InventoryMenu.TEXTURE_EMPTY_SLOTS[slot.getIndex()]);
}
});
}
}

View file

@ -13,7 +13,6 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityRangedCollector;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@ -22,6 +21,7 @@ import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import javax.annotation.Nonnull;
import java.util.Objects;
public class ContainerRangedCollector extends AbstractContainerMenu {
@ -57,8 +57,9 @@ public class ContainerRangedCollector extends AbstractContainerMenu {
}
}
@Nonnull
@Override
public ItemStack quickMoveStack(Player player, int slot) {
public ItemStack quickMoveStack(@Nonnull Player player, int slot) {
int inventoryStart = 18;
int inventoryEnd = inventoryStart + 26;
int hotbarStart = inventoryEnd + 1;
@ -87,7 +88,7 @@ public class ContainerRangedCollector extends AbstractContainerMenu {
return ItemStack.EMPTY;
}
if (!StackUtil.isValid(newStack)) {
if (newStack.isEmpty()) {
theSlot.set(ItemStack.EMPTY);
} else {
theSlot.setChanged();
@ -104,7 +105,7 @@ public class ContainerRangedCollector extends AbstractContainerMenu {
}
@Override
public void clicked(int slotId, int dragType, ClickType clickTypeIn, Player player) {
public void clicked(int slotId, int dragType, @Nonnull ClickType clickTypeIn, @Nonnull Player player) {
if (SlotFilter.checkFilter(this, slotId, player)) {
return; //TODO: Check if this is correct, used to return ItemStack.EMPTY
} else {
@ -113,7 +114,7 @@ public class ContainerRangedCollector extends AbstractContainerMenu {
}
@Override
public boolean stillValid(Player player) {
public boolean stillValid(@Nonnull Player player) {
return this.collector.canPlayerUse(player);
}
}

View file

@ -12,7 +12,9 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCrusher;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
@ -62,7 +64,6 @@ public class CrusherContainer extends AbstractContainerMenu {
@Override
public ItemStack quickMoveStack(Player player, int slot) {
/*
int inventoryStart = this.isDouble
? 6
: 3;
@ -79,7 +80,7 @@ public class CrusherContainer extends AbstractContainerMenu {
//Slots in Inventory to shift from
if (slot == TileEntityCrusher.SLOT_OUTPUT_1_1 || slot == TileEntityCrusher.SLOT_OUTPUT_1_2 || this.isDouble && (slot == TileEntityCrusher.SLOT_OUTPUT_2_1 || slot == TileEntityCrusher.SLOT_OUTPUT_2_2)) {
if (!this.moveItemStackTo(newStack, inventoryStart, hotbarEnd + 1, true)) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
theSlot.onQuickCraft(newStack, currentStack);
}
@ -90,10 +91,10 @@ public class CrusherContainer extends AbstractContainerMenu {
if (!this.moveItemStackTo(newStack, TileEntityCrusher.SLOT_INPUT_1, TileEntityCrusher.SLOT_INPUT_1 + 1, false)) {
if (this.isDouble) {
if (!this.moveItemStackTo(newStack, TileEntityCrusher.SLOT_INPUT_2, TileEntityCrusher.SLOT_INPUT_2 + 1, false)) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
} else {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
}
}
@ -101,30 +102,29 @@ public class CrusherContainer extends AbstractContainerMenu {
else if (slot >= inventoryStart && slot <= inventoryEnd) {
if (!this.moveItemStackTo(newStack, hotbarStart, hotbarEnd + 1, false)) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
} else if (slot >= inventoryEnd + 1 && slot < hotbarEnd + 1 && !this.moveItemStackTo(newStack, inventoryStart, inventoryEnd + 1, false)) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
} else if (!this.moveItemStackTo(newStack, inventoryStart, hotbarEnd + 1, false)) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
if (!StackUtil.isValid(newStack)) {
theSlot.set(StackUtil.getEmpty());
theSlot.set(ItemStack.EMPTY);
} else {
theSlot.setChanged();
}
if (newStack.getCount() == currentStack.getCount()) {
return StackUtil.getEmpty();
return ItemStack.EMPTY;
}
theSlot.onTake(player, newStack);
return currentStack;
}
*/
return ItemStack.EMPTY;
}

View file

@ -84,7 +84,7 @@ public class CrusherScreen extends AAScreen<CrusherContainer> {
this.energy.render(guiGraphics, x, y);
if (this.isDouble && this.buttonAutoSplit.isMouseOver(x,y)) {
guiGraphics.drawString(font, Component.translatable("info.actuallyadditions.gui.autosplititems." + (tileGrinder.isAutoSplit?"on":"off")).withStyle(ChatFormatting.BOLD), x , y, 0xffffff, false);
guiGraphics.drawString(font, Component.translatable("info.actuallyadditions.gui.autosplititems." + (tileGrinder.isAutoSplit?"on":"off")).withStyle(ChatFormatting.BOLD), x , y, 0xffffff);
}
}
@ -93,7 +93,7 @@ public class CrusherScreen extends AAScreen<CrusherContainer> {
guiGraphics.blit(AssetUtil.GUI_INVENTORY_LOCATION, this.leftPos, this.topPos + 93, 0, 0, 176, 86);
ResourceLocation usedLoc = this.isDouble ? RES_LOC_DOUBLE : RES_LOC;
guiGraphics.blit(AssetUtil.GUI_INVENTORY_LOCATION, this.leftPos, this.topPos, 0, 0, 176, 93);
guiGraphics.blit(usedLoc, this.leftPos, this.topPos, 0, 0, 176, 93);
if (this.tileGrinder.firstCrushTime > 0) {
int i = this.tileGrinder.getFirstTimeToScale(23);

View file

@ -11,19 +11,15 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.network.PacketClientToServer;
import de.ellpeck.actuallyadditions.mod.network.PacketHandler;
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractButton;
import net.minecraft.client.gui.components.Button;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.neoforge.network.PacketDistributor;
import java.util.ArrayList;
import java.util.List;
@ -37,19 +33,19 @@ public class FilterSettingsGui {
public Button whitelistButton;
public Button modButton;
public FilterSettingsGui(FilterSettings settings, int x, int y, Consumer<AbstractButton> buttonConsumer, int idOffset) {
public FilterSettingsGui(FilterSettings settings, int x, int y, Consumer<AbstractButton> buttonConsumer, Consumer<Integer> clickConsumer, int idOffset) {
this.theSettings = settings;
this.whitelistButton = Button.builder(Component.literal("WH"), $ -> {
theSettings.isWhitelist = !theSettings.isWhitelist;
buttonClicked(idOffset);
clickConsumer.accept(idOffset);
})
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.whitelistButton);
y += 14;
this.modButton = Button.builder(Component.literal("MO"), $ -> {
theSettings.respectMod = !theSettings.respectMod;
buttonClicked(idOffset + 1);
clickConsumer.accept(idOffset + 1);
})
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.modButton);
@ -57,13 +53,13 @@ public class FilterSettingsGui {
this.tick();
}
public void buttonClicked(int id) {
/* public void buttonClicked(int id) {
CompoundTag data = new CompoundTag();
data.putInt("ButtonID", id);
data.putInt("PlayerID", Minecraft.getInstance().player.getId());
data.putString("WorldID", Minecraft.getInstance().level.dimension().location().toString());
PacketDistributor.SERVER.noArg().send(new PacketClientToServer(data, PacketHandler.GUI_BUTTON_TO_CONTAINER_HANDLER));
}
}*/
public void tick() {
this.whitelistButton.setMessage(Component.literal("WH").withStyle(this.theSettings.isWhitelist

View file

@ -10,7 +10,6 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerFireworkBox;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFireworkBox;
@ -18,8 +17,8 @@ import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractSliderButton;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Inventory;
import net.neoforged.api.distmarker.Dist;
@ -31,13 +30,15 @@ import java.text.NumberFormat;
@OnlyIn(Dist.CLIENT)
public class GuiFireworkBox extends AbstractContainerScreen<ContainerFireworkBox> {
private static final ResourceLocation RES_LOC = AssetUtil.getGuiLocation("gui_firework_box");
protected final TileEntityFireworkBox tile;
public GuiFireworkBox(ContainerFireworkBox screenContainer, Inventory inv, Component titleIn) {
super(screenContainer, inv, titleIn);
this.tile = screenContainer.fireworkbox;
this.imageWidth = 300;
this.imageHeight = 120;
this.imageWidth = 302;
this.imageHeight = 130;
}
@Override
@ -45,30 +46,31 @@ public class GuiFireworkBox extends AbstractContainerScreen<ContainerFireworkBox
super.init();
DecimalFormat intFormatter = new DecimalFormat("0");
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop(), Component.literal("Value Play"), 0F, 5F, this.tile.intValuePlay, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 0)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop() + 20, Component.literal("Average Charge Amount"), 1F, 4F, this.tile.chargeAmount, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 1)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop() + 40, Component.literal("Average Flight Time"), 1F, 3F, this.tile.flightTime, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 2)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop() + 60, Component.literal("Effect Chance"), 0F, 1F, this.tile.trailOrFlickerChance, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 3)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop() + 80, Component.literal("Flicker/Trail Ratio"), 0F, 1F, this.tile.flickerChance, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 4)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft(), this.getGuiTop() + 100, Component.literal("Color Amount"), 1, 6, this.tile.colorAmount, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 5)));
int left = this.getGuiLeft() + 2;
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 2, Component.literal("Value Play"), 0F, 5F, this.tile.intValuePlay, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 0)));
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 23, Component.literal("Average Charge Amount"), 1F, 4F, this.tile.chargeAmount, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 1)));
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 44, Component.literal("Average Flight Time"), 1F, 3F, this.tile.flightTime, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 2)));
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 65, Component.literal("Effect Chance"), 0F, 1F, this.tile.trailOrFlickerChance, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 3)));
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 86, Component.literal("Flicker/Trail Ratio"), 0F, 1F, this.tile.flickerChance, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 4)));
this.addRenderableWidget(new CustomSlider(left, this.getGuiTop() + 107, Component.literal("Color Amount"), 1, 6, this.tile.colorAmount, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 5)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop(), Component.literal("Small Ball"), 0F, 1F, this.tile.typeChance0, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 6)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop() + 20, Component.literal("Large Ball"), 0F, 1F, this.tile.typeChance1, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 7)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop() + 40, Component.literal("Star Shape"), 0F, 1F, this.tile.typeChance2, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 8)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop() + 60, Component.literal("Creeper Shape"), 0F, 1F, this.tile.typeChance3, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 9)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop() + 80, Component.literal("Burst"), 0F, 1F, this.tile.typeChance4, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 10)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 2, Component.literal("Small Ball"), 0F, 1F, this.tile.typeChance0, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 6)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 23, Component.literal("Large Ball"), 0F, 1F, this.tile.typeChance1, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 7)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 44, Component.literal("Star Shape"), 0F, 1F, this.tile.typeChance2, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 8)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 65, Component.literal("Creeper Shape"), 0F, 1F, this.tile.typeChance3, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 9)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 86, Component.literal("Burst"), 0F, 1F, this.tile.typeChance4, null, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 10)));
this.addRenderableWidget(new CustomSlider(this.getGuiLeft() + 150, this.getGuiTop() + 100, Component.literal("Area of Effect"), 0, 4, this.tile.areaOfEffect, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 11)));
this.addRenderableWidget(new CustomSlider(left + 150, this.getGuiTop() + 107, Component.literal("Area of Effect"), 0, 4, this.tile.areaOfEffect, intFormatter, (slider) -> PacketHandlerHelper.sendNumberPacket(this.tile, slider.getValue(), 11)));
}
@Override
protected void renderLabels(GuiGraphics guiGraphics, int pMouseX, int pMouseY) {
AssetUtil.displayNameString(guiGraphics, this.font, this.getXSize(), -10, I18n.get("container." + ActuallyAdditions.MODID + ".fireworkBox"));
guiGraphics.drawString(font, this.title, (int)(this.getXSize() / 2f - font.width(this.title) / 2f), -10, 0xFFFFFF, false);
}
@Override
protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int x, int y) {
guiGraphics.blit(RES_LOC, this.leftPos, this.topPos, 0, 0, this.getXSize(), this.getYSize(), 512, 512);
}
@Override
@ -88,7 +90,7 @@ public class GuiFireworkBox extends AbstractContainerScreen<ContainerFireworkBox
protected final CustomSlider.OnApply onApply;
private final double stepSize = 0;
public CustomSlider(int x, int y, Component message, double min, double max, double defaultValue, DecimalFormat format, CustomSlider.OnApply onApply) {
super(x, y, 150, 20, message, defaultValue);
super(x, y, 148, 20, message, defaultValue);
this.sliderName = message;
this.min = min;
this.max = max;

View file

@ -12,14 +12,19 @@ package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerRangedCollector;
import de.ellpeck.actuallyadditions.mod.network.PacketClientToServer;
import de.ellpeck.actuallyadditions.mod.network.PacketHandler;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityRangedCollector;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.neoforge.network.PacketDistributor;
import javax.annotation.Nonnull;
@ -43,14 +48,14 @@ public class GuiRangedCollector extends AAScreen<ContainerRangedCollector> {
public void init() {
super.init();
//this.filter = new FilterSettingsGui(this.collector.filter, this.leftPos + 3, this.topPos + 6, this.buttonList);
this.filter = new FilterSettingsGui(this.collector.filter, this.leftPos + 3, this.topPos + 6, this::addRenderableWidget, this::buttonClicked, 0);
}
@Override
public void render(@Nonnull GuiGraphics guiGraphics, int x, int y, float f) {
super.render(guiGraphics, x, y, f);
//this.filter.drawHover(matrices, x, y);
this.filter.drawHover(guiGraphics, x, y);
}
@Override
@ -68,9 +73,16 @@ public class GuiRangedCollector extends AAScreen<ContainerRangedCollector> {
guiGraphics.blit(RES_LOC, this.leftPos, this.topPos, 0, 0, 176, 86);
}
public void buttonClicked(int id) {
CompoundTag data = new CompoundTag();
data.putInt("ButtonID", id);
data.putInt("PlayerID", Minecraft.getInstance().player.getId());
data.putString("WorldID", Minecraft.getInstance().level.dimension().location().toString());
data.putInt("X", this.collector.getBlockPos().getX());
data.putInt("Y", this.collector.getBlockPos().getY());
data.putInt("Z", this.collector.getBlockPos().getZ());
PacketDistributor.SERVER.noArg().send(new PacketClientToServer(data, PacketHandler.GUI_BUTTON_TO_TILE_HANDLER));
}
// @Override
// public void actionPerformed(Button button) {
// PacketHandlerHelper.sendButtonPacket(this.collector, button.id);
// }
}

View file

@ -12,9 +12,11 @@ package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerXPSolidifier;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityXPSolidifier;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Inventory;
@ -38,35 +40,43 @@ public class GuiXPSolidifier extends AAScreen<ContainerXPSolidifier> {
@Override
public void init() {
super.init();
//
// Button buttonOne = new GuiInputter.SmallerButton(this.leftPos + 62, this.topPos + 44, new StringTextComponent("1"), btn -> {
// });
// Button buttonFive = new GuiInputter.SmallerButton(this.leftPos + 80, this.topPos + 44, new StringTextComponent("5"), btn -> {
// });
// Button buttonTen = new GuiInputter.SmallerButton(this.leftPos + 99, this.topPos + 44, new StringTextComponent("10"), btn -> {
// });
// Button buttonTwenty = new GuiInputter.SmallerButton(this.leftPos + 62, this.topPos + 61, new StringTextComponent("20"), btn -> {
// });
// Button buttonThirty = new GuiInputter.SmallerButton(this.leftPos + 80, this.topPos + 61, new StringTextComponent("30"), btn -> {
// });
// Button buttonForty = new GuiInputter.SmallerButton(this.leftPos + 99, this.topPos + 61, new StringTextComponent("40"), btn -> {
// });
// Button buttonFifty = new GuiInputter.SmallerButton(this.leftPos + 62, this.topPos + 78, new StringTextComponent("50"), btn -> {
// });
// Button buttonSixtyFour = new GuiInputter.SmallerButton(this.leftPos + 80, this.topPos + 78, new StringTextComponent("64"), btn -> {
// });
// Button buttonAll = new GuiInputter.SmallerButton(this.leftPos + 99, this.topPos + 78, new StringTextComponent("All"), btn -> {
// });
//
// this.addButton(buttonOne);
// this.addButton(buttonFive);
// this.addButton(buttonTen);
// this.addButton(buttonTwenty);
// this.addButton(buttonThirty);
// this.addButton(buttonForty);
// this.addButton(buttonFifty);
// this.addButton(buttonSixtyFour);
// this.addButton(buttonAll);
Button buttonOne = this.addRenderableWidget(Button.builder(Component.literal("1"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 0);
this.solidifier.onButtonPressed(0, minecraft.player);
}).bounds(this.leftPos + 62, this.topPos + 44, 16, 16).build());
Button buttonFive = this.addRenderableWidget(Button.builder(Component.literal("5"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 1);
this.solidifier.onButtonPressed(1, minecraft.player);
}).bounds(this.leftPos + 80, this.topPos + 44, 16, 16).build());
Button buttonTen = this.addRenderableWidget(Button.builder(Component.literal("10"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 2);
this.solidifier.onButtonPressed(2, minecraft.player);
}).bounds(this.leftPos + 99, this.topPos + 44, 16, 16).build());
Button buttonTwenty = this.addRenderableWidget(Button.builder(Component.literal("20"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 3);
this.solidifier.onButtonPressed(3, minecraft.player);
}).bounds(this.leftPos + 62, this.topPos + 61, 16, 16).build());
Button buttonThirty = this.addRenderableWidget(Button.builder(Component.literal("30"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 4);
this.solidifier.onButtonPressed(4, minecraft.player);
}).bounds(this.leftPos + 80, this.topPos + 61, 16, 16).build());
Button buttonForty = this.addRenderableWidget(Button.builder(Component.literal("40"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 5);
this.solidifier.onButtonPressed(5, minecraft.player);
}).bounds(this.leftPos + 99, this.topPos + 61, 16, 16).build());
Button buttonFifty = this.addRenderableWidget(Button.builder(Component.literal("50"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 6);
this.solidifier.onButtonPressed(6, minecraft.player);
}).bounds(this.leftPos + 62, this.topPos + 78, 16, 16).build());
Button buttonSixtyFour = this.addRenderableWidget(Button.builder(Component.literal("64"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 7);
this.solidifier.onButtonPressed(7, minecraft.player);
}).bounds(this.leftPos + 80, this.topPos + 78, 16, 16).build());
Button buttonAll = this.addRenderableWidget(Button.builder(Component.literal("All"), btn -> {
PacketHandlerHelper.sendButtonPacket(this.solidifier, 8);
this.solidifier.onButtonPressed(8, minecraft.player);
}).bounds(this.leftPos + 99, this.topPos + 78, 16, 16).build());
}
@Override
@ -77,13 +87,6 @@ public class GuiXPSolidifier extends AAScreen<ContainerXPSolidifier> {
guiGraphics.blit(RES_LOC, this.leftPos, this.topPos, 0, 0, 176, 93);
guiGraphics.drawCenteredString(this.font, Integer.toString(this.solidifier.amount), this.leftPos + 88, this.topPos + 30, 0xFFFFFF);
guiGraphics.drawCenteredString(this.font, Integer.toString(this.solidifier.amount), this.leftPos + 88, this.topPos + 34, 0xFFFFFF);
}
// @Override
// public void actionPerformed(Button button) {
// PacketHandlerHelper.sendButtonPacket(this.solidifier, button.id);
//
// this.solidifier.onButtonPressed(button.id, Minecraft.getInstance().player);
// }
}

View file

@ -51,7 +51,7 @@ public class SackGui extends AAScreen<SackContainer> {
public void init() {
super.init();
this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 137, this.topPos + 10, this::addRenderableWidget, 1);
this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 137, this.topPos + 10, this::addRenderableWidget, this::buttonClicked, 1);
this.buttonAutoInsert = Button.builder(
Component.literal("I")

View file

@ -13,10 +13,12 @@ package de.ellpeck.actuallyadditions.mod.jei;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.crafting.*;
import de.ellpeck.actuallyadditions.mod.inventory.gui.CrusherScreen;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineCategory;
import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherCategory;
import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.fermenting.FermentingCategory;
import de.ellpeck.actuallyadditions.mod.jei.laser.LaserRecipeCategory;
@ -49,6 +51,7 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
public static final RecipeType<LaserRecipe> LASER = RecipeType.create(ActuallyAdditions.MODID, "laser", LaserRecipe.class);
public static final RecipeType<EmpowererRecipe> EMPOWERER = RecipeType.create(ActuallyAdditions.MODID, "empowerer", EmpowererRecipe.class);
public static final RecipeType<CoffeeIngredientRecipe> COFFEE_MACHINE = RecipeType.create(ActuallyAdditions.MODID, "coffee_machine", CoffeeIngredientRecipe.class);
public static final RecipeType<CrushingRecipe> CRUSHING = RecipeType.create(ActuallyAdditions.MODID, "crushing", CrushingRecipe.class);
@Override
public void registerCategories(IRecipeCategoryRegistration registry) {
@ -59,6 +62,7 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
registry.addRecipeCategories(new EmpowererRecipeCategory(helpers.getGuiHelper()));
registry.addRecipeCategories(new CoffeeMachineCategory(helpers.getGuiHelper()));
registry.addRecipeCategories(new PressingCategory(helpers.getGuiHelper()));
registry.addRecipeCategories(new CrusherCategory(helpers.getGuiHelper()));
}
@Override
@ -70,11 +74,9 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.EMPOWERER.getItem()), EMPOWERER);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.COFFEE_MACHINE.getItem()), COFFEE_MACHINE);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.CANOLA_PRESS.getItem()), PRESSING);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.CRUSHER.getItem()), CRUSHING);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.CRUSHER_DOUBLE.getItem()), CRUSHING);
// registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinder.get()), CrusherRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinderDouble.get()), CrusherRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockAtomicReconstructor.get()), ReconstructorRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockEmpowerer.get()), EmpowererRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(ActuallyItems.itemBooklet.get()), BookletRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCompost.get()), CompostRecipeCategory.NAME);
}
@ -88,13 +90,15 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
registry.addRecipes(EMPOWERER, level.getRecipeManager().getAllRecipesFor(ActuallyRecipes.Types.EMPOWERING.get()).stream().map(RecipeHolder::value).toList());
registry.addRecipes(COFFEE_MACHINE, level.getRecipeManager().getAllRecipesFor(ActuallyRecipes.Types.COFFEE_INGREDIENT.get()).stream().map(RecipeHolder::value).toList());
registry.addRecipes(PRESSING, level.getRecipeManager().getAllRecipesFor(ActuallyRecipes.Types.PRESSING.get()).stream().map(RecipeHolder::value).toList());
registry.addRecipes(CRUSHING, level.getRecipeManager().getAllRecipesFor(ActuallyRecipes.Types.CRUSHING.get()).stream().map(RecipeHolder::value).toList());
//registry.addRecipes(ActuallyAdditionsAPI.BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA, BookletRecipeCategory.NAME);
//registry.addRecipes(ActuallyAdditionsAPI.CRUSHER_RECIPES, CrusherRecipeCategory.NAME);
}
@Override
public void registerGuiHandlers(IGuiHandlerRegistration registration) {
registration.addRecipeClickArea(GuiCoffeeMachine.class, 53, 42, 22, 16, COFFEE_MACHINE);
registration.addRecipeClickArea(CrusherScreen.class, 80, 40, 24, 22, CRUSHING);
registration.addRecipeClickArea(CrusherScreen.CrusherDoubleScreen.class, 51, 40, 74, 22, CRUSHING);
registration.addRecipeClickArea(GuiFurnaceDouble.class, 51, 40, 74, 22, RecipeTypes.SMELTING);
}
@ -110,12 +114,6 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
// registry.handleRecipes(CompostRecipe.class, CompostRecipeWrapper::new, CompostRecipeCategory.NAME);
//
//
//
// registry.addRecipeClickArea(GuiCoffeeMachine.class, 53, 42, 22, 16, CoffeeMachineRecipeCategory.NAME);
// registry.addRecipeClickArea(GuiGrinder.class, 80, 40, 24, 22, CrusherRecipeCategory.NAME);
// registry.addRecipeClickArea(GuiGrinder.GuiGrinderDouble.class, 51, 40, 74, 22, CrusherRecipeCategory.NAME);
// registry.addRecipeClickArea(GuiFurnaceDouble.class, 51, 40, 74, 22, VanillaRecipeCategoryUid.SMELTING);
//
// IIngredientBlacklist blacklist = helpers.getIngredientBlacklist();
// blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockRice.get()));
// blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockCanola.get()));

View file

@ -0,0 +1,64 @@
package de.ellpeck.actuallyadditions.mod.jei.crusher;
import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe;
import de.ellpeck.actuallyadditions.mod.jei.JEIActuallyAdditionsPlugin;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.gui.drawable.IDrawableStatic;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.recipe.RecipeType;
import mezz.jei.api.recipe.category.IRecipeCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
public class CrusherCategory implements IRecipeCategory<CrushingRecipe> {
private final IDrawableStatic background;
public CrusherCategory(IGuiHelper helper) {
this.background = helper.drawableBuilder(AssetUtil.getGuiLocation("gui_grinder"), 60, 13, 56, 79).setTextureSize(256,256).build();
}
@Override
public RecipeType<CrushingRecipe> getRecipeType() {
return JEIActuallyAdditionsPlugin.CRUSHING;
}
@Override
public Component getTitle() {
return Component.translatable("container.actuallyadditions.crusher");
}
@Override
public IDrawable getBackground() {
return background;
}
@Override
public IDrawable getIcon() {
return null;
}
@Override
public void setRecipe(IRecipeLayoutBuilder builder, CrushingRecipe recipe, IFocusGroup focuses) {
builder.addSlot(RecipeIngredientRole.INPUT, 20, 8).addIngredients(recipe.getInput());
builder.addSlot(RecipeIngredientRole.OUTPUT, 8, 56).addItemStack(recipe.getOutputOne());
if (!recipe.getOutputTwo().isEmpty()) {
builder.addSlot(RecipeIngredientRole.OUTPUT, 32, 56).addItemStack(recipe.getOutputTwo());
}
}
@Override
public void draw(CrushingRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics guiGraphics, double mouseX, double mouseY) {
IRecipeCategory.super.draw(recipe, recipeSlotsView, guiGraphics, mouseX, mouseY);
Minecraft mc = Minecraft.getInstance();
if (!recipe.getOutputTwo().isEmpty()) {
guiGraphics.drawString(mc.font, (int)(recipe.getSecondChance() * 100) + "%", 60, 60, 4210752, false);
}
}
}

View file

@ -1,68 +0,0 @@
///*
// * This file ("CrusherRecipeCategory.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.jei.crusher;
//
//import java.util.Arrays;
//
//import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
//import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
//import de.ellpeck.actuallyadditions.mod.util.StackUtil;
//import de.ellpeck.actuallyadditions.mod.util.StringUtil;
//import mezz.jei.api.IGuiHelper;
//import mezz.jei.api.gui.IDrawable;
//import mezz.jei.api.gui.IRecipeLayout;
//import mezz.jei.api.ingredients.IIngredients;
//import mezz.jei.api.recipe.IRecipeCategory;
//
//public class CrusherRecipeCategory implements IRecipeCategory<CrusherRecipeWrapper> {
//
// public static final String NAME = "actuallyadditions.crushing";
//
// private final IDrawable background;
//
// public CrusherRecipeCategory(IGuiHelper helper) {
// this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_grinder"), 60, 13, 56, 79);
// }
//
// @Override
// public String getUid() {
// return NAME;
// }
//
// @Override
// public String getTitle() {
// return StringUtil.localize("container.nei." + NAME + ".name");
// }
//
// @Override
// public String getModName() {
// return ActuallyAdditions.NAME;
// }
//
// @Override
// public IDrawable getBackground() {
// return this.background;
// }
//
// @Override
// public void setRecipe(IRecipeLayout recipeLayout, CrusherRecipeWrapper wrapper, IIngredients ingredients) {
// recipeLayout.getItemStacks().init(0, true, 19, 7);
// recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.theRecipe.getInput().getMatchingStacks()));
//
// recipeLayout.getItemStacks().init(1, false, 7, 55);
// recipeLayout.getItemStacks().set(1, wrapper.theRecipe.getOutputOne());
//
// if (StackUtil.isValid(wrapper.theRecipe.getOutputTwo())) {
// recipeLayout.getItemStacks().init(2, false, 31, 55);
// recipeLayout.getItemStacks().set(2, wrapper.theRecipe.getOutputTwo());
// }
// }
//}

View file

@ -1,72 +0,0 @@
///*
// * This file ("CrusherRecipeWrapper.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.jei.crusher;
//
//import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
//import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe;
//import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
//import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
//import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
//import de.ellpeck.actuallyadditions.mod.util.StackUtil;
//import de.ellpeck.actuallyadditions.mod.util.StringUtil;
//import mezz.jei.api.ingredients.IIngredients;
//import mezz.jei.api.ingredients.VanillaTypes;
//import net.minecraft.client.Minecraft;
//import net.minecraft.item.ItemStack;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//
//public class CrusherRecipeWrapper extends RecipeWrapperWithButton {
//
// public final CrusherRecipe theRecipe;
//
// public CrusherRecipeWrapper(CrusherRecipe recipe) {
// this.theRecipe = recipe;
// }
//
// @Override
// public void getIngredients(IIngredients ingredients) {
// ingredients.setInputs(VanillaTypes.ITEM, Arrays.asList(this.theRecipe.getInput().getMatchingStacks()));
//
// List<ItemStack> list = new ArrayList<>();
// list.add(this.theRecipe.getOutputOne());
// if (StackUtil.isValid(this.theRecipe.getOutputTwo())) {
// list.add(this.theRecipe.getOutputTwo());
// }
// ingredients.setOutputs(VanillaTypes.ITEM, list);
// }
//
// @Override
// public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
// if (StackUtil.isValid(this.theRecipe.getOutputTwo())) {
// minecraft.fontRenderer.drawString(this.theRecipe.getSecondChance() + "%", 60, 60, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false);
// }
//
// super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
// }
//
// @Override
// public int getButtonX() {
// return -5;
// }
//
// @Override
// public int getButtonY() {
// return 26;
// }
//
// @Override
// public IBookletPage getPage() {
// return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockGrinder));
// }
//}

View file

@ -100,85 +100,89 @@ public class TileEntityCrusher extends TileEntityInventoryBase implements IButto
public static <T extends BlockEntity> void serverTick(Level level, BlockPos pos, BlockState state, T t) {
if (t instanceof TileEntityCrusher tile) {
tile.serverTick();
}
}
if (tile.isDouble && tile.isAutoSplit) {
TileEntityPoweredFurnace.autoSplit(tile.inv, SLOT_INPUT_1, SLOT_INPUT_2);
@Override
protected void serverTick() {
super.serverTick();
if (isDouble && isAutoSplit) {
TileEntityPoweredFurnace.autoSplit(inv, SLOT_INPUT_1, SLOT_INPUT_2);
}
boolean crushed = false;
boolean canCrushOnFirst = canCrushOn(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2);
boolean canCrushOnSecond = false;
if (isDouble) {
canCrushOnSecond = canCrushOn(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2);
}
boolean shouldPlaySound = false;
if (canCrushOnFirst) {
if (storage.getEnergyStored() >= ENERGY_USE) {
if (firstCrushTime % 20 == 0) {
shouldPlaySound = true;
}
firstCrushTime++;
if (firstCrushTime >= getMaxCrushTime()) {
finishCrushing(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2);
firstCrushTime = 0;
}
storage.extractEnergyInternal(ENERGY_USE, false);
}
crushed = storage.getEnergyStored() >= ENERGY_USE;
} else {
firstCrushTime = 0;
}
boolean crushed = false;
boolean canCrushOnFirst = tile.canCrushOn(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2);
boolean canCrushOnSecond = false;
if (tile.isDouble) {
canCrushOnSecond = tile.canCrushOn(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2);
}
boolean shouldPlaySound = false;
if (canCrushOnFirst) {
if (tile.storage.getEnergyStored() >= ENERGY_USE) {
if (tile.firstCrushTime % 20 == 0) {
if (isDouble) {
if (canCrushOnSecond) {
if (storage.getEnergyStored() >= ENERGY_USE) {
if (secondCrushTime % 20 == 0) {
shouldPlaySound = true;
}
tile.firstCrushTime++;
if (tile.firstCrushTime >= tile.getMaxCrushTime()) {
tile.finishCrushing(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2);
tile.firstCrushTime = 0;
secondCrushTime++;
if (secondCrushTime >= getMaxCrushTime()) {
finishCrushing(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2);
secondCrushTime = 0;
}
tile.storage.extractEnergyInternal(ENERGY_USE, false);
storage.extractEnergyInternal(ENERGY_USE, false);
}
crushed = tile.storage.getEnergyStored() >= ENERGY_USE;
crushed = storage.getEnergyStored() >= ENERGY_USE;
} else {
tile.firstCrushTime = 0;
secondCrushTime = 0;
}
}
if (tile.isDouble) {
if (canCrushOnSecond) {
if (tile.storage.getEnergyStored() >= ENERGY_USE) {
if (tile.secondCrushTime % 20 == 0) {
shouldPlaySound = true;
}
tile.secondCrushTime++;
if (tile.secondCrushTime >= tile.getMaxCrushTime()) {
tile.finishCrushing(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2);
tile.secondCrushTime = 0;
}
tile.storage.extractEnergyInternal(ENERGY_USE, false);
}
crushed = tile.storage.getEnergyStored() >= ENERGY_USE;
} else {
tile.secondCrushTime = 0;
}
}
boolean current = getBlockState().getValue(BlockStateProperties.LIT);
boolean changeTo = current;
if (lastCrushed != crushed) {
changeTo = crushed;
}
if (isRedstonePowered) {
changeTo = true;
}
if (!crushed && !isRedstonePowered) {
changeTo = false;
}
boolean current = state.getValue(BlockStateProperties.LIT);
boolean changeTo = current;
if (tile.lastCrushed != crushed) {
changeTo = crushed;
}
if (tile.isRedstonePowered) {
changeTo = true;
}
if (!crushed && !tile.isRedstonePowered) {
changeTo = false;
}
if (changeTo != current) {
level.setBlockAndUpdate(getBlockPos(), getBlockState().setValue(BlockStateProperties.LIT, changeTo));
}
if (changeTo != current) {
level.setBlockAndUpdate(pos, state.setValue(BlockStateProperties.LIT, changeTo));
}
lastCrushed = crushed;
tile.lastCrushed = crushed;
if ((lastEnergy != storage.getEnergyStored() || lastFirstCrush != firstCrushTime || lastSecondCrush != secondCrushTime || isAutoSplit != lastAutoSplit) && sendUpdateWithInterval()) {
lastEnergy = storage.getEnergyStored();
lastFirstCrush = firstCrushTime;
lastSecondCrush = secondCrushTime;
lastAutoSplit = isAutoSplit;
}
if ((tile.lastEnergy != tile.storage.getEnergyStored() || tile.lastFirstCrush != tile.firstCrushTime || tile.lastSecondCrush != tile.secondCrushTime || tile.isAutoSplit != tile.lastAutoSplit) && tile.sendUpdateWithInterval()) {
tile.lastEnergy = tile.storage.getEnergyStored();
tile.lastFirstCrush = tile.firstCrushTime;
tile.lastSecondCrush = tile.secondCrushTime;
tile.lastAutoSplit = tile.isAutoSplit;
}
if (shouldPlaySound) {
level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), AASounds.CRUSHER.get(), SoundSource.BLOCKS, 0.025F, 1.0F);
}
if (shouldPlaySound) {
level.playSound(null, getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ(), AASounds.CRUSHER.get(), SoundSource.BLOCKS, 0.025F, 1.0F);
}
}
@ -199,7 +203,7 @@ public class TileEntityCrusher extends TileEntityInventoryBase implements IButto
ItemStack inputStack = this.inv.getStackInSlot(theInput);
if (!inputStack.isEmpty()) {
Optional<RecipeHolder<CrushingRecipe>> recipeOpt = getRecipeForInput(inputStack);
if (!recipeOpt.isPresent()) {
if (recipeOpt.isEmpty()) {
return false;
}
CrushingRecipe recipe = recipeOpt.get().value();
@ -220,7 +224,7 @@ public class TileEntityCrusher extends TileEntityInventoryBase implements IButto
public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput) {
Optional<RecipeHolder<CrushingRecipe>> recipeOpt = getRecipeForInput(this.inv.getStackInSlot(theInput));
if (!recipeOpt.isPresent()) {
if (recipeOpt.isEmpty()) {
return;
}
CrushingRecipe recipe = recipeOpt.get().value();

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
@ -34,4 +35,9 @@ public class TileEntityCrusherDouble extends TileEntityCrusher {
tile.serverTick();
}
}
@Override
public Component getDisplayName() {
return Component.translatable("container.actuallyadditions.crusher_double");
}
}

View file

@ -64,7 +64,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements Menu
if (t instanceof TileEntityEnergizer tile) {
tile.serverTick();
if (StackUtil.isValid(tile.inv.getStackInSlot(0)) && !StackUtil.isValid(tile.inv.getStackInSlot(1))) {
if (!tile.inv.getStackInSlot(0).isEmpty() && tile.inv.getStackInSlot(1).isEmpty()) {
if (tile.storage.getEnergyStored() > 0) {
Optional<IEnergyStorage> capability = Optional.ofNullable(tile.inv.getStackInSlot(0).getCapability(Capabilities.EnergyStorage.ITEM, null));
@ -109,7 +109,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements Menu
@Override
public Component getDisplayName() {
return Component.empty();
return Component.translatable("container.actuallyadditions.energizer");
}
@Nullable

View file

@ -14,7 +14,6 @@ import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerEnervator;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
@ -63,7 +62,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
if (t instanceof TileEntityEnervator tile) {
tile.serverTick();
if (StackUtil.isValid(tile.inv.getStackInSlot(0)) && !StackUtil.isValid(tile.inv.getStackInSlot(1))) {
if (!tile.inv.getStackInSlot(0).isEmpty() && tile.inv.getStackInSlot(1).isEmpty()) {
if (tile.storage.getEnergyStored() < tile.storage.getMaxEnergyStored()) {
Optional<IEnergyStorage> capability = Optional.ofNullable(tile.inv.getStackInSlot(0).getCapability(Capabilities.EnergyStorage.ITEM, null));
@ -129,7 +128,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
@Override
public Component getDisplayName() {
return Component.empty();
return Component.translatable("container.actuallyadditions.enervator");
}
@Nullable

View file

@ -294,7 +294,7 @@ public class TileEntityFireworkBox extends TileEntityBase implements IEnergyDisp
@Override
public Component getDisplayName() {
return Component.empty();
return Component.translatable("container.actuallyadditions.fireworkBox");
}
@Nullable

View file

@ -36,7 +36,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.FluidType;
import net.neoforged.neoforge.fluids.IFluidBlock;
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
import javax.annotation.Nonnull;
@ -116,7 +115,7 @@ public class TileEntityFluidCollector extends TileEntityBase implements ISharing
Block fluid = stack.getFluid().defaultFluidState().createLegacyBlock().getBlock();
if (fluid != null) {
BlockPos offsetPos = this.worldPosition.relative(sideToManipulate);
boolean placeable = !(blockToBreak instanceof IFluidBlock) && blockToBreak.defaultBlockState().canBeReplaced();
boolean placeable = !stateToBreak.getFluidState().isSource() && blockToBreak.defaultBlockState().canBeReplaced();
if (placeable) {
this.tank.drainInternal(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.EXECUTE);
// TODO: [port] validate this check is still valid.

View file

@ -31,6 +31,7 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
@ -111,17 +112,17 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement
@Override
public void onButtonPressed(int buttonID, Player player) {
//this.filter.onButtonPressed(buttonID);
} //TODO
this.filter.onButtonPressed(buttonID);
}
@Override
public Component getDisplayName() {
return Component.empty();
return Component.translatable("container.actuallyadditions.rangedCollector");
}
@Nullable
@Override
public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, Player player) {
public AbstractContainerMenu createMenu(int windowId, @Nonnull Inventory playerInventory, @Nonnull Player player) {
return new ContainerRangedCollector(windowId, playerInventory, this);
}
}

View file

@ -159,7 +159,6 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
List<ExperienceOrb> orbs = level.getEntitiesOfClass(ExperienceOrb.class, new AABB(pos.getX() - range, pos.getY() - range, pos.getZ() - range, pos.getX() + 1 + range, pos.getY() + 1 + range, pos.getZ() + 1 + range));
if (orbs != null && !orbs.isEmpty()) {
for (ExperienceOrb orb : orbs) {
// TODO: [port] validate the getPersistentData is correct
if (orb != null && orb.isAlive() && !orb.getPersistentData().getBoolean(ActuallyAdditions.MODID + "FromSolidified")) {
tile.singlePointAmount += orb.getValue();
orb.discard();
@ -223,7 +222,7 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
@Override
public Component getDisplayName() {
return Component.empty();
return Component.translatable("container.actuallyadditions.experienceSolidifier");
}
@Nullable

View file

@ -2,4 +2,5 @@ public net.minecraft.world.damagesource.DamageSources *() # DamageSources
public net.minecraft.world.damagesource.DamageSources damageTypes
public-f net.minecraft.data.recipes.RecipeProvider getName()Ljava/lang/String;
public-f net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList list
public net.minecraft.world.item.crafting.ShapedRecipe pattern # pattern
public net.minecraft.world.item.crafting.ShapedRecipe pattern
public net.minecraft.world.inventory.InventoryMenu TEXTURE_EMPTY_SLOTS

View file

@ -106,16 +106,16 @@
"block.actuallyadditions.smooth_black_quartz_block": "Smooth Black Quartz",
"block.actuallyadditions.black_quartz_brick_block": "Black Quartz Bricks",
"block.actuallyadditions.feeder": "Automatic Feeder (wip)",
"block.actuallyadditions.crusher": "Crusher (wip)",
"block.actuallyadditions.crusher_double": "Double Crusher (wip)",
"block.actuallyadditions.crusher": "Crusher",
"block.actuallyadditions.crusher_double": "Double Crusher",
"block.actuallyadditions.powered_furnace": "Powered Furnace",
"block.actuallyadditions.fishing_net": "Fishing Net (wip)",
"block.actuallyadditions.heat_collector": "Heat Collector (wip)",
"block.actuallyadditions.item_repairer": "Item Repairer (wip)",
"block.actuallyadditions.wood_casing": "Wood Casing (wip)",
"block.actuallyadditions.greenhouse_glass": "Greenhouse Glass (wip)",
"block.actuallyadditions.energizer": "Energizer (wip)",
"block.actuallyadditions.enervator": "Enervator (wip)",
"block.actuallyadditions.energizer": "Energizer",
"block.actuallyadditions.enervator": "Enervator",
"block.actuallyadditions.rice": "Rice Plant",
"block.actuallyadditions.coal_generator": "Coal Generator",
"block.actuallyadditions.lamp_controller": "Lamp Controller (wip)",
@ -142,8 +142,8 @@
"block.actuallyadditions.phantom_liquiface": "Phantom Liquiface (wip)",
"block.actuallyadditions.phantom_placer": "Phantom Placer (wip)",
"block.actuallyadditions.phantom_breaker": "Phantom Breaker (wip)",
"block.actuallyadditions.lava_factory_controller": "Lava Factory Controller (wip)",
"block.actuallyadditions.lava_factory_casing": "Lava Casing (wip)",
"block.actuallyadditions.lava_factory_controller": "Lava Factory Controller",
"block.actuallyadditions.lava_factory_casing": "Lava Casing",
"block.actuallyadditions.fluid_placer": "Fluid Placer",
"block.actuallyadditions.fluid_collector": "Fluid Collector",
"block.actuallyadditions.phantom_booster": "Phantom Booster (wip)",
@ -169,10 +169,10 @@
"block.actuallyadditions.ender_casing": "Ender Casing",
"block.actuallyadditions.flax": "Flax Plant",
"block.actuallyadditions.coffee_machine": "Coffee Maker",
"block.actuallyadditions.xp_solidifier": "Experience Solidifier (wip)",
"block.actuallyadditions.xp_solidifier": "Experience Solidifier",
"block.actuallyadditions.leaf_generator": "Leaf-Eating Generator (wip)",
"block.actuallyadditions.long_range_breaker": "Long-Range Breaker (wip)",
"block.actuallyadditions.ranged_collector": "Ranged Collector (wip)",
"block.actuallyadditions.ranged_collector": "Ranged Collector",
"block.actuallyadditions.laser_relay": "Energy Laser Relay (wip)",
"block.actuallyadditions.laser_relay_advanced": "Advanced Energy Laser Relay (wip)",
"block.actuallyadditions.laser_relay_extreme": "Extreme Energy Laser Relay (wip)",
@ -407,7 +407,7 @@
"tooltip.actuallyadditions.phantom.notConnected.desc": "This isn't connected to anything!",
"tooltip.actuallyadditions.phantom.blockInfo.desc": "The connected Block is %s at %s, %s, %s that is %s Blocks away.",
"tooltip.actuallyadditions.factory.notPart.desc": "The Controller isn't part of the right Multi-Block! Look at the Controller's Description!",
"tooltip.actuallyadditions.factory.works.desc": "This Lava Factory is complete and can produce Lava!",
"tooltip.actuallyadditions.factory.working": "This Lava Factory is complete and can produce Lava!",
"tooltip.actuallyadditions.oredictName.desc": "OreDictionary Entries",
"tooltip.actuallyadditions.noOredictNameAvail.desc": "None",
"tooltip.actuallyadditions.codeName.desc": "Code Name",
@ -471,8 +471,8 @@
"info.actuallyadditions.gui.respectOredictHard": "Hard Respecting OreDictionary",
"info.actuallyadditions.gui.respectOredictInfo.one": "The item being passed only has to contain §2only one§r of the OreDictionary tags of the item in the filter.",
"info.actuallyadditions.gui.respectOredictInfo.all": "The item being passed has to contain §2all§r of the OreDictionary tags of the item in the filter.",
"info.actuallyadditions.gui.autoSplitItems.on": "Auto-Split Items On",
"info.actuallyadditions.gui.autoSplitItems.off": "Auto-Split Items Off",
"info.actuallyadditions.gui.autosplititems.on": "Auto-Split Items On",
"info.actuallyadditions.gui.autosplititems.off": "Auto-Split Items Off",
"info.actuallyadditions.gui.inbound": "INBOUND",
"info.actuallyadditions.gui.outbound": "OUTBOUND",
"info.actuallyadditions.gui.coffee": "Coffee",
@ -585,6 +585,7 @@
"container.actuallyadditions.laserRelayFluids": "Fluid Laser Relay",
"container.actuallyadditions.distributorItem": "Item Distributor",
"container.actuallyadditions.fireworkBox": "Firework Box",
"container.actuallyadditions.experienceSolidifier": "Experience Solidifier",
"_comment": "Update Information",
"info.actuallyadditions.update.generic": "[{\"text\":\"There is an Update for \"},{\"text\":\"Actually Additions \",\"color\":\"dark_green\"},{\"text\":\"available!\",\"color\":\"none\"}]",
"info.actuallyadditions.update.versionCompare": "[{\"text\":\"Current Version: \"},{\"text\":\"%s\",\"color\":\"dark_red\"},{\"text\":\", newest Version: \",\"color\":\"none\"},{\"text\":\"%s\",\"color\":\"dark_green\"}]",

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB