This commit is contained in:
HuTao今天吃什么 2022-09-24 10:37:04 +08:00
parent fce6e7566f
commit b3b5915e0b
60 changed files with 1156 additions and 284 deletions

View File

@ -24,8 +24,8 @@ a11e55f651479912f38def68d408d3365bff4e6b assets/extrabotany/blockstates/moonligh
5b4b6c301ff57c7d4006e79654cac0e1e68cbe60 assets/extrabotany/blockstates/serenitian.json
31853f21bb80a913ba27e5053a843459b3d7d37d assets/extrabotany/blockstates/sunshine_lily.json
98ef3075f38b46cec1ea7720d159ad1109096786 assets/extrabotany/blockstates/tinkle_flower.json
a29c2f730bcb61caaf0c92879e75d3d9d77cfe1b assets/extrabotany/lang/en_us.json
7ee7554ea07e308ff0bf7c0f09f8b5cc6772db71 assets/extrabotany/lang/zh_cn.json
ac80536b8d37a37b0649fcd79e95de21159599a0 assets/extrabotany/lang/en_us.json
97837d04086b4a89896499ccbb3d1b89aa685da0 assets/extrabotany/lang/zh_cn.json
477b72a89fa3546590428dd7d8d4528c711a98dc assets/extrabotany/models/block/annoying_flower.json
2f2803ccc1532c712c13241790c9ec65fb61a97d assets/extrabotany/models/block/bell_flower.json
a559d107783c691b559872c498455ac4ebebb363 assets/extrabotany/models/block/block_orichalcos.json
@ -132,7 +132,8 @@ fc451b65c395f143892d51353b7603a8c850c426 assets/extrabotany/models/item/miku_boo
a19c79a070422b71bb32dad4faf26bb49884bcae assets/extrabotany/models/item/miku_chest.json
2e781d0a22153788fa06d7899f9f38ae512939aa assets/extrabotany/models/item/miku_helm.json
c4b8495aa3f27caf81ed3257196939a172a13284 assets/extrabotany/models/item/miku_legs.json
ed31cb3a8268a11b196b888eedbcc99e053a509d assets/extrabotany/models/item/mini_toranado_rod.json
13f71be8687b5fce53a1bb3653b3a37f74cb9236 assets/extrabotany/models/item/mini_tornado_rod.json
fe93cb4d86c475c8fcf0a23f1921712fc96d4927 assets/extrabotany/models/item/mini_tornado_rod_active.json
580ba289bda4ca1ca851c973f2cfb32da7d5ad29 assets/extrabotany/models/item/moon_pendant.json
b121d617776ea778fa80dc7e710449d8c8785287 assets/extrabotany/models/item/moonlight_lily.json
f6e460fc3bda4c7548e63ce601cae371388e2b08 assets/extrabotany/models/item/nature_orb.json
@ -142,6 +143,7 @@ af65b9c23d16abf1b7f7ba0d2da51f92ce9313e4 assets/extrabotany/models/item/orichalc
fcadaa014a6a124abdc6fa883f808b93f0a54523 assets/extrabotany/models/item/peace_amulet.json
fb6846707537d5111ef95a4ac0158536858d574e assets/extrabotany/models/item/photonium.json
6ab40e2d52de764254d0ee4894949c74cfa0a64b assets/extrabotany/models/item/potato_chip.json
969a7d793ea8e7fe38855a86de85d61ab1b985d6 assets/extrabotany/models/item/power_frame.json
5a84fb54f03f3f89e7fd465a6944a7a3ee4b1aa6 assets/extrabotany/models/item/power_glove.json
404b528f49333504c95a99875cf259242cc45798 assets/extrabotany/models/item/primo_gem.json
04ebab889851547cda5d992891f76d82a4e66d6b assets/extrabotany/models/item/puredaisy_pendant.json
@ -225,17 +227,23 @@ bd553a13427b90964796ff12fb7e48b1aa109b61 data/curios/tags/items/necklace.json
e2758e90c4da670b13d6a2d6e38ae29c53b1202a data/extrabotany/advancements/main/armorset_shadowwarrior.json
0d82a5d0344faabd46ffc9b566a6a1f690b9291a data/extrabotany/advancements/main/armorsetshootingguardian.json
7649bc19615508e346059b36fd4b91cd443c570c data/extrabotany/advancements/main/bloody_enchantress_use.json
f377ae5bca82f9710722ed0749ed38f18024cc95 data/extrabotany/advancements/main/core_god_craft.json
84704dc1829e629b39af11e2a69def1cc70a2530 data/extrabotany/advancements/main/ego_defeat.json
0a63b5178dccb5032144345a730ac05f7003d701 data/extrabotany/advancements/main/ego_defeat_lexicon.json
da09871465f19a8b2695301783bbc8439fea073f data/extrabotany/advancements/main/excaliber_craft.json
b33275d3480530b74fcbd5311ba2f2523ffaf48a data/extrabotany/advancements/main/failnaught_craft.json
9d1ba4d252e696569b4129ec5e2d8238f8bcc287 data/extrabotany/advancements/main/first_fractal_craft.json
8890330abd0a23751b6dabdc64292bdcf7350939 data/extrabotany/advancements/main/mana_reader_craft.json
cb701e79d5a7865d256e00ce17f7bee4e454672a data/extrabotany/advancements/main/moon_pendant_craft.json
d8d1d96e2f320c17fc1479362f6ec7ccff327556 data/extrabotany/advancements/main/nature_orb_craft.json
afcf4c00305ababbd2cbd3a90ac3f544c52a8c2b data/extrabotany/advancements/main/nightmare_fuel_eat.json
1ddcda1fa682beef150fde99d201e52a0931cfb8 data/extrabotany/advancements/main/nightmarefuel_eat_lexicon.json
95ab8eedd8f3273a7853c9284dddde0c5b01d4dc data/extrabotany/advancements/main/power_frame_craft.json
25d454539b287281dd9a8ae30f3db1843771f8cb data/extrabotany/advancements/main/rod_of_discord_craft.json
3627f208aefa732ff333b64a8ceb982b2e00a137 data/extrabotany/advancements/main/root.json
2b1156483c09a1cb940613335b9edd852019fd03 data/extrabotany/advancements/main/sages_mana_ring_craft.json
69c5abb47a77cbbec0d44a4be4c8e6340695adfd data/extrabotany/advancements/main/spirit_fragment_craft.json
241c95be9267075c6aaffb4844b6cdea9c7cbd78 data/extrabotany/advancements/main/sun_ring_craft.json
91d83bd82cb2519fc071ff46e193bf39d5a56b55 data/extrabotany/advancements/main/the_chaos_craft.json
810e157e41b49c008271774aa4356e99fe4f0c3f data/extrabotany/advancements/main/the_universe_craft.json
c461a4194a293530ca1d2d2774fa9d16e8dc10d8 data/extrabotany/advancements/main/thechaos_craft_lexicon.json
@ -298,14 +306,15 @@ eee4a14b24a3a6b8c1956a105b3248816e94b735 data/extrabotany/recipes/mana_infusion/
7bd581e436ce8e6c70a18268c4c4fcd73aab174f data/extrabotany/recipes/mana_infusion/enderpearl.json
8058f01a751b5758cf67df75b7abb439325397f1 data/extrabotany/recipes/mana_infusion/fried_chicken.json
fbee8a693cddf83c7457a107115e2b92abdf9660 data/extrabotany/recipes/mana_infusion/livingwood_shortbow.json
a904f9a8798c52a6aa73ba114f620f07140ad8d1 data/extrabotany/recipes/mana_infusion/mana_shortarrow.json
510c68c4a23e7ad8be6155be86625253a36985f5 data/extrabotany/recipes/mana_infusion/mana_shortarrow.json
b931da338af5ca86b5e44eb98cbacff6cf1113f9 data/extrabotany/recipes/mana_infusion/mini_tornado_rod.json
f40b6bfaed56e613770773ffe23cdfd40f88a6d7 data/extrabotany/recipes/mana_infusion/nether_rack.json
f5e78d715ea2359f1a3db33da9b5f41aa2b7edfc data/extrabotany/recipes/mana_infusion/nightmare_fuel.json
71b739d78ba5ae1fba7ee0657fa5053b3cbaf28b data/extrabotany/recipes/mana_infusion/quartz_ore.json
ea55eb923c5bd880a902395b8a7dba134c53538a data/extrabotany/recipes/mana_infusion/shulker_shell.json
b72c8c92edabdbd78bbb6154eafcb03668696f7d data/extrabotany/recipes/mana_infusion/soul_sand.json
3eceaa1d975ecd58ebb5f7199abe348bd56a8c95 data/extrabotany/recipes/mana_infusion/totem_of_undying.json
114e818c308027a193b41c1950774eaff3f7e221 data/extrabotany/recipes/petal_apothecary/annoying_flower.json
bd9a8dedf78ce5b93424bc68722cfab00282adbb data/extrabotany/recipes/petal_apothecary/annoying_flower.json
02f99cdaa13f2acb4f81cd91f84dd8e8a8b1fb70 data/extrabotany/recipes/petal_apothecary/bell_flower.json
fafe1a78c7a5e021604fcda8e5904ac0c63b25d9 data/extrabotany/recipes/petal_apothecary/bloody_enchantress.json
217d2d560b739d1b85388d894aac179c553f9c86 data/extrabotany/recipes/petal_apothecary/gemini_orchid.json
@ -348,7 +357,7 @@ f9e327aee09b26510876ea273075f9b8aea34cb3 data/minecraft/advancements/recipes/ext
120d84045e37eee8410932b417b3a37d985124bd data/minecraft/advancements/recipes/extrabotany/crystal_to_gem6.json
22defd34df0da7cfed69953db906a91a487043e3 data/minecraft/advancements/recipes/extrabotany/crystal_to_gem7.json
d024086e06f60af0959db77122a5a0595ceb380e data/minecraft/advancements/recipes/extrabotany/crystal_to_gem8.json
f1c5d67a0326087f1fe5a0472cd6d143645df229 data/minecraft/advancements/recipes/extrabotany/dimension_catalyst.json
73bde869786082a34e860486c3140bf3667d9f48 data/minecraft/advancements/recipes/extrabotany/dimension_catalyst.json
2029aec6fc66b91f7ce3604b25f380c0ad690ff4 data/minecraft/advancements/recipes/extrabotany/dirt_shield.json
d6f0804c4c8be25385949cccd6000f742e5084fe data/minecraft/advancements/recipes/extrabotany/element_rune.json
3d66248666521092df22c17e48aec6cc0940b320 data/minecraft/advancements/recipes/extrabotany/elementium_shield.json
@ -386,6 +395,7 @@ d68ae94282c5441ce3801bce9142ec916d96ecb1 data/minecraft/advancements/recipes/ext
ceaee10f01f9363846c13ead2ab75885dc673398 data/minecraft/advancements/recipes/extrabotany/orichalcos.json
1483a63a1bf1210c0677e6a2441e93dedf4b6027 data/minecraft/advancements/recipes/extrabotany/peace_amulet.json
ae9566b0f8faf12f1794ec77daa7eca0e1957658 data/minecraft/advancements/recipes/extrabotany/photonium.json
c07cef1251da453f1e46d22aefefd0aa9ac522e2 data/minecraft/advancements/recipes/extrabotany/power_frame.json
baed377893aa0527a1d4548d86515112d715811f data/minecraft/advancements/recipes/extrabotany/puredaisy_pendant.json
33124afa7cec560a86a5d66b42d1157e2e5206dd data/minecraft/advancements/recipes/extrabotany/redscarf.json
3bf3f31995f57b62a6901803e116e2d486a3446f data/minecraft/advancements/recipes/extrabotany/rodofdiscord.json
@ -466,6 +476,7 @@ d40c15e385db125c2c71aaa72c2bedc14019e584 data/minecraft/recipes/nature_orb.json
34d89a2b9a99e1b69641ec5cdf8679bc796fc361 data/minecraft/recipes/orichalcos.json
701dea5335b90ca083753fc810678fa398770583 data/minecraft/recipes/peace_amulet.json
d8a28c1e3771834095085350a1208bee0f52d3f0 data/minecraft/recipes/photonium.json
365a198ba9aff61b6c75a6f66ede212babe13b4a data/minecraft/recipes/power_frame.json
34c5521d60a8d1cb76eda415e9694e7196c58790 data/minecraft/recipes/puredaisy_pendant.json
34c12d5ad6ec95825afc79834150b45ab141b815 data/minecraft/recipes/redscarf.json
37fc86aa228cea8c29def69ee960c04677d88454 data/minecraft/recipes/rodofdiscord.json

View File

@ -25,8 +25,12 @@
"advancement.extrabotany:mana_reader_craft.title": "Satisfaction",
"advancement.extrabotany:moon_pendant_craft.desc": "Obtain Heart of Corrupted Moon",
"advancement.extrabotany:moon_pendant_craft.title": "Crystalline",
"advancement.extrabotany:nature_orb_craft.desc": "Obtain Nature Orb",
"advancement.extrabotany:nature_orb_craft.title": "\u96E8\u5922\u697C",
"advancement.extrabotany:nightmare_fuel_eat.desc": "Eat a Nightmare Fuel (Unbelievable)",
"advancement.extrabotany:nightmare_fuel_eat.title": "Deep Dark Fantasy",
"advancement.extrabotany:power_frame_craft.desc": "Obtain Power Frame",
"advancement.extrabotany:power_frame_craft.title": "Letter Song",
"advancement.extrabotany:rod_of_discord_craft.desc": "Craft Rod of Discord",
"advancement.extrabotany:rod_of_discord_craft.title": "NOT Discord!",
"advancement.extrabotany:root.desc": "Don't have a good day, have a great day",
@ -72,6 +76,7 @@
"block.extrabotany.moonlight_lily.reference": "May you find all you have lost",
"block.extrabotany.omni_violet": "Omniviolet",
"block.extrabotany.omni_violet.reference": "Need not to know",
"block.extrabotany.power_frame": "Power Frame",
"block.extrabotany.reikar_orchid": "Reikar Orchid",
"block.extrabotany.reikar_orchid.reference": "Game Crash",
"block.extrabotany.serenitian": "Serenitian",
@ -158,11 +163,13 @@
"extrabotany.entry.mini_item": "\u7F29\u5C0F\u5DE5\u5177",
"extrabotany.entry.moon_pendant": "Heart of Corrupted Moon",
"extrabotany.entry.moonlight_lily": "Moonlight Lily",
"extrabotany.entry.nature_orb": "Nature Orb",
"extrabotany.entry.nightmarefuel": "Nightmare Fuel",
"extrabotany.entry.omni_violet": "Omniviolet",
"extrabotany.entry.peace_amulet": "Peace Amulet",
"extrabotany.entry.photonium": "Photonium",
"extrabotany.entry.potato_chip": "Potato Chip",
"extrabotany.entry.power_frame": "Power Frame",
"extrabotany.entry.powerglove": "Power Glove",
"extrabotany.entry.puredaisy_pendant": "Pure Daisy Pendant",
"extrabotany.entry.reikarorchid": "Reikar Lily",
@ -243,7 +250,7 @@
"extrabotany.page.excaliber1": "",
"extrabotany.page.failnaught0": "The $(item)Failnaught$(0) uses $(thing)Mana$(0) to shoot magic arrows which pierce through enemies and deal damage to the creatures in the area. The longer you draw the bow, the more damage it will deal.",
"extrabotany.page.failnaught1": "A hundred shots, a hundred bullseyes.",
"extrabotany.page.forest_book0": "With $(item)Golden Apple$(0) and the power of Nature, you can craft $(item)Aranyaka$(0). Right click will cost 8 $(thing)HP$(0) to let you gain 5 $(thing)Golden Hearts$(0) and Effect $(thing)Remember$(0) for 5 seconds. After 5 seconds, every $(thing)Golden Heart$(0) will be converted into 1.6 $(thing)hp$(0), capped at 5 hearts.",
"extrabotany.page.forest_book0": "With $(item)Golden Apple$(0) and the power of Nature, you can craft $(item)Aranyaka$(0). Right click will cost 6 $(thing)HP$(0) to let you gain 6 $(thing)Golden Hearts$(0) and Effect $(thing)Remember$(0) for 5 seconds. After 5 seconds, every $(thing)Golden Heart$(0) will be converted into 1 $(thing)HP$(0), capped at 6 hearts.",
"extrabotany.page.forest_book1": "\"Hello,\" \"Thank You,\" and the Final \"Goodbye\".",
"extrabotany.page.frostring0": "The $(item)Frost Star$(0) freezes large areas of water and lava. It also applies slowness creatures looked at by the wearer.",
"extrabotany.page.frostring1": "I am the frozen heart of the Scourge!",
@ -309,6 +316,9 @@
"extrabotany.page.moon_pendant1": "Broken Rime's Echo",
"extrabotany.page.moonlight_lily0": "Moonlight Lily generates $(thing)Mana$(0) at night, but it is not very efficient. Please note that it will decay after working for 3 days in minecraft.",
"extrabotany.page.moonlight_lily1": "Sowing of the fool.",
"extrabotany.page.nature_orb0": "The $(item)Nature Orb$(0) can store Natural Breath, a magical power which protects the carrier. Blessing of Mana will provide you with mana, Blessing of Regeneration will speed up your regeneration and Blessing of Senro will drive away bad effects on you. To collect Natural Breath it needs to be placed in Power Frame and a ritualistic multiblock structure around Power Frame is needed.",
"extrabotany.page.nature_orb1": "Not a Blood Orb.",
"extrabotany.page.nature_orb2": "",
"extrabotany.page.nightmarefuel0": "$(item)Nightmare Fuel$(0) is the aggregation of the nightmare, you will suffer after eating it, but it may be the beginning of a sweet dream. Elves may be interested in this. (Warning: instant damage III will cause 24 damage to player!)",
"extrabotany.page.nightmarefuel1": "The brain trembles.",
"extrabotany.page.omni_violet0": "According to a saying, knowledge is power. The $(item)Omniviolet$(0) converts Books or Written Books into $(thing)Mana$(0). To increase the amount of mana generated, Bookshelves(or something else with enchanting power) can be placed around the Omniviolet in a similar fashion to an Enchantment Table. Too close or too far will make bookshelves useless. Mana output can be increased 300% than before.",
@ -325,6 +335,8 @@
"extrabotany.page.photonium7": "Goblin Slayer Boots",
"extrabotany.page.potato_chip0": "$(item)Potato Chip$(0) functions almost the same as Totem of Undying. When you are taking deadly damage, it will trigger, consume mana to recover you. It has 60s cool down and will cost a great amount of $(thing)mana$(0).",
"extrabotany.page.potato_chip1": "",
"extrabotany.page.power_frame0": "Place a mana item or $(item)Nature Orb$(0) in the Power Frame, and the Power Frame will extract mana from the mana pool above and transfer to the item.",
"extrabotany.page.power_frame1": "",
"extrabotany.page.powerglove0": "$(item)Power Glove$(0) allows you to auto leftclick at maximum attack speed if you keep pressing your mouse. It also slightly increase your attack speed.",
"extrabotany.page.powerglove1": "",
"extrabotany.page.puredaisy_pendant0": "By holding a $(item)Pure Daisy Pendant$(0) and right-clicking a block, you can instantly transform blocks like a $(item)Pure Daisy$(0), at the cost of a little mana. The more you use it, the more it cools down, even if you find some methods to repair it.",
@ -426,11 +438,13 @@
"item.extrabotany.maid_legs": "Pleiades Combat Maid Skirt",
"item.extrabotany.mana_drink": "Mana Cocktail",
"item.extrabotany.mana_reader": "Mana Reader",
"item.extrabotany.mana_shortarrow": "Mana Shortarrow",
"item.extrabotany.manasteel_shield": "Mana Steel Shield",
"item.extrabotany.miku_boots": "Starry Idol Boots",
"item.extrabotany.miku_chest": "Starry Idol Suit",
"item.extrabotany.miku_helm": "Starry Idol Headgear",
"item.extrabotany.miku_legs": "Starry Idol Skirt",
"item.extrabotany.mini_tornado_rod": "Shortrod of Skies",
"item.extrabotany.moon_pendant": "Heart of Corrupted Moon",
"item.extrabotany.nature_orb": "Nature Orb",
"item.extrabotany.nightmare_fuel": "Nightmare Fuel",

View File

@ -25,8 +25,12 @@
"advancement.extrabotany:mana_reader_craft.title": "Satisfaction",
"advancement.extrabotany:moon_pendant_craft.desc": "\u83B7\u5F97\u8680\u6708\u4E4B\u5FC3",
"advancement.extrabotany:moon_pendant_craft.title": "Crystalline",
"advancement.extrabotany:nature_orb_craft.desc": "\u83B7\u5F97\u81EA\u7136\u8574\u606F\u5B9D\u73E0",
"advancement.extrabotany:nature_orb_craft.title": "\u96E8\u5922\u697C",
"advancement.extrabotany:nightmare_fuel_eat.desc": "\u98DF\u7528\u4E00\u4E2A\u68A6\u9B47\u71C3\u6599(\u8FD9\u771F\u7684\u80FD\u5403\u5417)",
"advancement.extrabotany:nightmare_fuel_eat.title": "Deep Dark Fantasy",
"advancement.extrabotany:power_frame_craft.desc": "\u83B7\u5F97\u529B\u91CF\u6846\u67B6",
"advancement.extrabotany:power_frame_craft.title": "Letter Song",
"advancement.extrabotany:rod_of_discord_craft.desc": "\u5408\u6210\u4E0D\u8C10\u4F20\u9001\u6756",
"advancement.extrabotany:rod_of_discord_craft.title": "\u4E0D\u662FDiscord",
"advancement.extrabotany:root.desc": "\u4E0D\u8981\u9519\u8FC7\u4ECA\u5929\uFF0C\u53BB\u8FC7\u597D\u6BCF\u4E00\u5929",
@ -72,6 +76,7 @@
"block.extrabotany.moonlight_lily.reference": "\u613F\u4F60\u80FD\u627E\u5230\u6240\u6709\u5931\u53BB\u7684\u4E1C\u897F",
"block.extrabotany.omni_violet": "\u5168\u77E5\u747E",
"block.extrabotany.omni_violet.reference": "\u6211\u77E5\u4E07\u7269",
"block.extrabotany.power_frame": "\u529B\u91CF\u6846\u67B6",
"block.extrabotany.reikar_orchid": "\u96F7\u5361\u5170",
"block.extrabotany.reikar_orchid.reference": "\u6E38\u620F\u5D29\u6E83",
"block.extrabotany.serenitian": "\u6C38\u5BC2\u9F99\u80C6",
@ -158,11 +163,13 @@
"extrabotany.entry.mini_item": "\u7F29\u5C0F\u5DE5\u5177",
"extrabotany.entry.moon_pendant": "\u8680\u6708\u4E4B\u5FC3",
"extrabotany.entry.moonlight_lily": "\u6708\u5149\u767E\u5408",
"extrabotany.entry.nature_orb": "\u81EA\u7136\u8574\u606F\u5B9D\u73E0",
"extrabotany.entry.nightmarefuel": "\u68A6\u9B47\u71C3\u6599",
"extrabotany.entry.omni_violet": "\u5168\u77E5\u747E",
"extrabotany.entry.peace_amulet": "\u548C\u5E73\u53CB\u597D\u4E4B\u8BC1",
"extrabotany.entry.photonium": "\u5149\u5B50\u952D",
"extrabotany.entry.potato_chip": "\u85AF\u7247",
"extrabotany.entry.power_frame": "\u529B\u91CF\u6846\u67B6",
"extrabotany.entry.powerglove": "\u5F3A\u529B\u624B\u5957",
"extrabotany.entry.puredaisy_pendant": "\u767D\u96CF\u83CA\u9879\u94FE",
"extrabotany.entry.reikarorchid": "\u96F7\u5361\u5170",
@ -243,7 +250,7 @@
"extrabotany.page.excaliber1": "",
"extrabotany.page.failnaught0": "$(item)\u767E\u4E2D\u5F13$(0)\u53EF\u4EE5\u6D88\u8017\u9B54\u529B\u53D1\u5C04\u51FA\u4E00\u652F\u80FD\u591F\u8D2F\u7A7F\u654C\u4EBA\u7684\u7BAD\u77E2\uFF0C\u8FD9\u652F\u7BAD\u80FD\u5BF9\u5468\u56F4\u8F83\u5927\u8303\u56F4\u654C\u4EBA\u9020\u6210\u4F24\u5BB3\u3002\u84C4\u529B\u65F6\u95F4\u8D8A\u4E45\uFF0C\u7BAD\u77E2\u7684\u4F24\u5BB3\u5C31\u8D8A\u9AD8\uFF0C\u98DE\u884C\u8DDD\u79BB\u4E5F\u8D8A\u957F\u3002",
"extrabotany.page.failnaught1": "\u767E\u53D1\u767E\u4E2D\u3002",
"extrabotany.page.forest_book0": "\u5C06$(item)\u91D1\u82F9\u679C$(0)\u548C\u81EA\u7136\u7684\u529B\u91CF\u704C\u6CE8\u8FDB\u4E66\u672C\u53EF\u4EE5\u5236\u4F5C$(item)\u68EE\u6797\u4E66$(0)\u3002\u53F3\u51FB\u4F1A\u53D7\u52308\u70B9$(thing)\u771F\u5B9E\u4F24\u5BB3$(0)\u5E76\u83B7\u5F9710\u70B9$(thing)\u751F\u547D\u5438\u6536$(0)\u548C5\u79D2\u949F\u7684$(thing)\u94ED\u8BB0$(0)\u6548\u679C\u30025\u79D2\u540E\u6D88\u8017\u6700\u591A5\u9897\u91D1\u5FC3\u56DE\u590D\u6700\u591A8\u751F\u547D\u503C\u3002",
"extrabotany.page.forest_book0": "\u5C06$(item)\u91D1\u82F9\u679C$(0)\u548C\u81EA\u7136\u7684\u529B\u91CF\u704C\u6CE8\u8FDB\u4E66\u672C\u53EF\u4EE5\u5236\u4F5C$(item)\u68EE\u6797\u4E66$(0)\u3002\u53F3\u51FB\u4F1A\u53D7\u52306\u70B9$(thing)\u771F\u5B9E\u4F24\u5BB3$(0)\u5E76\u83B7\u5F9712\u70B9$(thing)\u751F\u547D\u5438\u6536$(0)\u548C5\u79D2\u949F\u7684$(thing)\u94ED\u8BB0$(0)\u6548\u679C\u30025\u79D2\u540E\u6D88\u8017\u6700\u591A6\u9897\u91D1\u5FC3\u56DE\u590D\u6700\u591A6\u751F\u547D\u503C\u3002",
"extrabotany.page.forest_book1": "\u201C\u4F60\u597D\u201D\uFF0C\u201C\u8C22\u8C22\u201D\uFF0C\u6700\u540E\u662F\u201C\u518D\u89C1\u201D\u3002",
"extrabotany.page.frostring0": "$(item)\u971C\u51BB\u4E4B\u661F$(0)\u80FD\u8BA9\u88C5\u5907\u8005\u884C\u8D70\u65F6\u51BB\u7ED3\u811A\u4E0B\u5927\u8303\u56F4\u7684\u6C34\u548C\u5CA9\u6D46\uFF0C\u5E76\u4F1A\u4F7F\u5C0F\u8303\u56F4\u5185\u88C5\u5907\u8005\u6240\u89C6\u7684\u751F\u7269\u5927\u5E45\u51CF\u901F\u3002",
"extrabotany.page.frostring1": "\u6211\u662F\u5929\u707E\u7684\u51B0\u51BB\u4E4B\u5FC3\u3002",
@ -311,6 +318,9 @@
"extrabotany.page.moon_pendant1": "\u7834\u51B0\u8E0F\u96EA\u7684\u56DE\u97F3",
"extrabotany.page.moonlight_lily0": "\u62E5\u6709\u80FD\u5728\u591C\u665A\u4EA7\u751F$(thing)\u9B54\u529B$(0)\u7684\u80FD\u529B\uFF0C\u4F46\u4EA7\u80FD\u6548\u7387\u5E76\u4E0D\u53EF\u89C2\u3002\u4F1A\u57283\u4E2Aminecraft\u65E5\u540E\u67AF\u840E\u3002",
"extrabotany.page.moonlight_lily1": "\u611A\u8005\u7684\u64AD\u79CD\u3002",
"extrabotany.page.nature_orb0": "$(item)\u81EA\u7136\u8574\u606F\u5B9D\u73E0$(0)\u53EF\u4EE5\u50A8\u5B58\u81EA\u7136\u4E4B\u606F\uFF0C\u5229\u7528\u81EA\u7136\u7684\u529B\u91CF\u6765\u5B88\u62A4\u643A\u5E26\u8005\u3002\u9B54\u529B\u7684\u52A0\u62A4\u4F1A\u63D0\u4F9B\u9B54\u529B\uFF0C\u518D\u751F\u7684\u52A0\u62A4\u4F1A\u52A0\u5FEB\u751F\u547D\u6062\u590D\uFF0C\u68EE\u7F57\u7684\u52A0\u62A4\u4F1A\u6E05\u9664\u8D1F\u9762\u72B6\u6001\u3002\u4F60\u9700\u8981\u642D\u5EFA\u4E00\u4E2A\u591A\u65B9\u5757\u7ED3\u6784\u6765\u4E3A\u81EA\u7136\u8574\u606F\u5B9D\u73E0\u5145\u80FD\uFF0C\u7ED3\u6784\u4E2D\u9B54\u529B\u6C60\u4E2D\u7684\u9B54\u529B\u53EF\u4EE5\u52A0\u5FEB\u8FD9\u4E00\u8FDB\u5EA6\u3002",
"extrabotany.page.nature_orb1": "\u4E0D\u662F\u6C14\u8840\u5B9D\u73E0\u3002",
"extrabotany.page.nature_orb2": "",
"extrabotany.page.nightmarefuel0": "$(item)\u68A6\u9B47\u71C3\u6599$(0)\u662F\u5669\u68A6\u7684\u96C6\u5408\u4F53\uFF0C\u98DF\u7528\u540E\u4F1A\u906D\u9047\u4E0D\u5E78\uFF0C\u4F46\u4E5F\u53EF\u80FD\u662F\u7F8E\u68A6\u7684\u5F00\u59CB\u3002\u7CBE\u7075\u4EEC\u53EF\u80FD\u4E5F\u4F1A\u5BF9\u8FD9\u79CD\u4E1C\u897F\u611F\u5174\u8DA3\u3002\uFF08\u8B66\u544A\uFF1A\u77AC\u95F4\u4F24\u5BB3III\u4F1A\u9020\u621024\u70B9\u4F24\u5BB3\uFF01\uFF09",
"extrabotany.page.nightmarefuel1": "\u5927\u8111\u5728\u98A4\u6296\u3002",
"extrabotany.page.omni_violet0": "\u77E5\u8BC6\u5C31\u662F\u529B\u91CF\uFF0C$(item)\u5168\u77E5\u747E$(0)\u80FD\u591F\u5C06\u4E66\u672C\u6216\u6210\u4E66\u8F6C\u5316\u4E3A$(thing)\u9B54\u529B$(0)\u3002 \u5982\u679C\u4F60\u5728\u5176\u5468\u56F4\u6309\u9644\u9B54\u53F0\u65B9\u5F0F\u6446\u653E\u4E0A\u4E66\u67B6\u6216\u8005\u80FD\u591F\u66FF\u4EE3\u4E66\u67B6\u7684\u65B9\u5757\u7684\u8BDD\u80FD\u591F\u8D77\u5230\u50AC\u5316\u5242\u7684\u6548\u679C\uFF0C\u589E\u52A0\u5176\u4EA7\u9B54\u6548\u7387\u3002\u4E66\u67B6\u79BB\u5F97\u592A\u8FD1\u6216\u592A\u8FDC\u5747\u4E0D\u4F1A\u4EA7\u751F\u6548\u679C\u3002\u9B54\u529B\u4EA7\u51FA\u6700\u591A\u8FBE\u5230\u539F\u6765\u7684\u56DB\u500D\u3002",
@ -327,6 +337,8 @@
"extrabotany.page.photonium7": "\u54E5\u5E03\u6797\u6740\u624B\u9774\u5B50",
"extrabotany.page.potato_chip0": "$(item)\u85AF\u7247$(0)\u62E5\u6709\u7740\u548C\u4E0D\u6B7B\u56FE\u817E\u7C7B\u4F3C\u7684\u6548\u679C\u3002\u88C5\u5907\u540E\uFF0C\u5728\u53D7\u5230\u81F4\u6B7B\u4F24\u5BB3\u65F6\u4F1A\u6FC0\u6D3B\uFF0C\u6D88\u8017\u9B54\u529B\u83B7\u5F97\u591A\u79CD\u589E\u76CA\u5E76\u56DE\u590D\u751F\u547D\u81F35\u70B9\u3002\u8FD9\u4E00\u6548\u679C\u6709\u4E00\u5B9A\u7684\u51B7\u5374\u65F6\u95F4\uFF0C\u5E76\u4E14\u4F1A\u6D88\u8017\u5927\u91CF\u7684\u9B54\u529B\u3002",
"extrabotany.page.potato_chip1": "",
"extrabotany.page.power_frame0": "\u5C06\u9B54\u529B\u7269\u54C1\u6216\u8005$(item)\u81EA\u7136\u8574\u606F\u5B9D\u73E0$(0)\u653E\u5165$(item)\u529B\u91CF\u6846\u67B6$(0)\u4E2D\uFF0C\u529B\u91CF\u6846\u67B6\u4F1A\u62BD\u53D6\u4E0A\u65B9\u9B54\u529B\u6C60\u7684\u9B54\u529B\u6765\u4E3A\u5176\u5145\u80FD\u3002",
"extrabotany.page.power_frame1": "",
"extrabotany.page.powerglove0": "\u88C5\u5907$(item)\u5F3A\u529B\u624B\u5957$(0)\u540E\uFF0C\u6441\u4F4F\u9F20\u6807\u5DE6\u952E\u4F1A\u81EA\u52A8\u4EE5\u6700\u9AD8\u653B\u901F\u8FDB\u884C\u653B\u51FB\u3002",
"extrabotany.page.powerglove1": "",
"extrabotany.page.puredaisy_pendant0": "\u624B\u6301$(item)\u767D\u96CF\u83CA\u9879\u94FE$(0)\u53F3\u51FB\u65B9\u5757\u4E0E$(item)\u767D\u96CF\u83CA$(0)\u6548\u679C\u76F8\u540C\uFF0C\u4F46\u8FD9\u4E00\u8FC7\u7A0B\u9700\u8981\u6D88\u8017\u5C11\u91CF\u9B54\u529B\uFF0C\u5E76\u4E14\u968F\u7740\u4F7F\u7528\u6B21\u6570\u7684\u589E\u52A0\uFF0C\u51B7\u5374\u65F6\u95F4\u4E5F\u4F1A\u53D8\u957F\u3002\u5373\u4F7F\u91C7\u7528\u67D0\u4E9B\u65B9\u6CD5\u4FEE\u590D\u5B83\u7684\u8010\u4E45\u4E5F\u662F\u5982\u6B64\u3002",
@ -428,11 +440,13 @@
"item.extrabotany.maid_legs": "\u6634\u661F\u56E2\u6218\u6597\u5973\u4EC6\u88D9\u7532",
"item.extrabotany.mana_drink": "\u9B54\u529B\u9E21\u5C3E\u9152",
"item.extrabotany.mana_reader": "\u9B54\u529B\u8BFB\u53D6\u5668",
"item.extrabotany.mana_shortarrow": "\u9B54\u529B\u77ED\u7BAD",
"item.extrabotany.manasteel_shield": "\u9B54\u529B\u94A2\u76FE\u724C",
"item.extrabotany.miku_boots": "\u661F\u7A7A\u6B4C\u59EC\u978B\u5B50",
"item.extrabotany.miku_chest": "\u661F\u7A7A\u6B4C\u59EC\u670D",
"item.extrabotany.miku_helm": "\u661F\u7A7A\u6B4C\u59EC\u5934\u9970",
"item.extrabotany.miku_legs": "\u661F\u7A7A\u6B4C\u59EC\u88D9\u7532",
"item.extrabotany.mini_tornado_rod": "\u5929\u7A7A\u77ED\u6756",
"item.extrabotany.moon_pendant": "\u8680\u6708\u4E4B\u5FC3",
"item.extrabotany.nature_orb": "\u81EA\u7136\u8574\u606F\u5B9D\u73E0",
"item.extrabotany.nightmare_fuel": "\u68A6\u9B47\u71C3\u6599",

View File

@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "extrabotany:item/mini_toranado_rod"
}
}

View File

@ -0,0 +1,14 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "extrabotany:item/mini_tornado_rod"
},
"overrides": [
{
"predicate": {
"botania:active": 1.0
},
"model": "extrabotany:item/mini_tornado_rod_active"
}
]
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "extrabotany:item/mini_tornado_rod_active"
}
}

View File

@ -0,0 +1,3 @@
{
"parent": "extrabotany:block/power_frame"
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/ego_defeat",
"display": {
"icon": {
"item": "extrabotany:core_god"
},
"title": {
"translate": "advancement.extrabotany:core_god_craft.title"
},
"description": {
"translate": "advancement.extrabotany:core_god_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"core_god_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:core_god"
]
}
]
}
}
},
"requirements": [
[
"core_god_craft"
]
]
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/ego_defeat",
"display": {
"icon": {
"item": "extrabotany:moon_pendant"
},
"title": {
"translate": "advancement.extrabotany:moon_pendant_craft.title"
},
"description": {
"translate": "advancement.extrabotany:moon_pendant_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"moon_pendant_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:moon_pendant"
]
}
]
}
}
},
"requirements": [
[
"moon_pendant_craft"
]
]
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/the_chaos_craft",
"display": {
"icon": {
"item": "extrabotany:nature_orb"
},
"title": {
"translate": "advancement.extrabotany:nature_orb_craft.title"
},
"description": {
"translate": "advancement.extrabotany:nature_orb_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"nature_orb_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:nature_orb"
]
}
]
}
}
},
"requirements": [
[
"nature_orb_craft"
]
]
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/the_chaos_craft",
"display": {
"icon": {
"item": "extrabotany:power_frame"
},
"title": {
"translate": "advancement.extrabotany:power_frame_craft.title"
},
"description": {
"translate": "advancement.extrabotany:power_frame_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"power_frame_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:power_frame"
]
}
]
}
}
},
"requirements": [
[
"power_frame_craft"
]
]
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/ego_defeat",
"display": {
"icon": {
"item": "extrabotany:sages_mana_ring"
},
"title": {
"translate": "advancement.extrabotany:sages_mana_ring_craft.title"
},
"description": {
"translate": "advancement.extrabotany:sages_mana_ring_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"sages_mana_ring_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:sages_mana_ring"
]
}
]
}
}
},
"requirements": [
[
"sages_mana_ring_craft"
]
]
}

View File

@ -0,0 +1,37 @@
{
"parent": "extrabotany:main/ego_defeat",
"display": {
"icon": {
"item": "extrabotany:sun_ring"
},
"title": {
"translate": "advancement.extrabotany:sun_ring_craft.title"
},
"description": {
"translate": "advancement.extrabotany:sun_ring_craft.desc"
},
"frame": "task",
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"criteria": {
"sun_ring_craft": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"extrabotany:sun_ring"
]
}
]
}
}
},
"requirements": [
[
"sun_ring_craft"
]
]
}

View File

@ -1,7 +1,7 @@
{
"type": "botania:mana_infusion",
"input": {
"item": "extrabotany:mana_shortarrow"
"tag": "minecraft:arrows"
},
"output": {
"item": "extrabotany:mana_shortarrow"

View File

@ -0,0 +1,10 @@
{
"type": "botania:mana_infusion",
"input": {
"item": "botania:tornado_rod"
},
"output": {
"item": "extrabotany:mini_tornado_rod"
},
"mana": 500
}

View File

@ -5,31 +5,25 @@
},
"ingredients": [
{
"tag": "botania:petals/purple"
"tag": "botania:petals/green"
},
{
"tag": "botania:petals/purple"
"tag": "botania:petals/pink"
},
{
"tag": "botania:petals/blue"
"tag": "botania:petals/pink"
},
{
"tag": "botania:petals/blue"
"tag": "botania:petals/white"
},
{
"item": "botania:life_essence"
"tag": "botania:petals/white"
},
{
"item": "botania:rune_mana"
},
{
"item": "botania:rune_sloth"
},
{
"item": "botania:rune_greed"
},
{
"item": "botania:redstone_root"
"item": "extrabotany:spirit_frag"
}
]
}

View File

@ -6,7 +6,7 @@
]
},
"criteria": {
"alchemycatalyst": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
@ -27,7 +27,7 @@
},
"requirements": [
[
"alchemycatalyst",
"has_item",
"has_the_recipe"
]
]

View File

@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"minecraft:power_frame"
]
},
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"botania:pixie_dust"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "minecraft:power_frame"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
]
}

View File

@ -0,0 +1,23 @@
{
"type": "minecraft:crafting_shaped",
"group": "extrabotany",
"pattern": [
"aaa",
"gxg",
"aaa"
],
"key": {
"x": {
"item": "botania:livingrock"
},
"a": {
"tag": "botania:manasteel_ingots"
},
"g": {
"item": "botania:pixie_dust"
}
},
"result": {
"item": "extrabotany:power_frame"
}
}

View File

@ -3,6 +3,7 @@ package chick.extrabotany.api.cap;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.CapabilityToken;
import vazkii.botania.api.mana.IManaItem;
/**
* it has nothing now lol
@ -10,5 +11,6 @@ import net.minecraftforge.common.capabilities.CapabilityToken;
public class ExtraBotanyCapabilities
{
public static final Capability<IPassiveFlowerCap> PASSIVE_FLOWER = CapabilityManager.get(new CapabilityToken<>() {});
public static final Capability<IManaItem> NATURE_ORB = CapabilityManager.get(new CapabilityToken<>() {});
}

View File

@ -4,10 +4,15 @@ import chick.extrabotany.ExtraBotany;
import chick.extrabotany.common.blocks.DimensionCatalyst;
import chick.extrabotany.common.blocks.PowerFrame;
import chick.extrabotany.common.libs.LibBlockNames;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Material;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
@ -37,7 +42,7 @@ public class ModBlocks
public static final RegistryObject<Block> BLOCK_ORICHALCOS = BLOCKS.register(LibBlockNames.BLOCK_ORICHALCOS, () -> new Block(BlockBehaviour.Properties.of(Material.HEAVY_METAL).requiresCorrectToolForDrops().strength(4f, 12f)));
public static final RegistryObject<Item> BLOCK_ORICHALCOS_ITEM = fromBlock(BLOCK_ORICHALCOS);
public static final RegistryObject<Block> POWER_FRAME = BLOCKS.register(LibBlockNames.POWER_FRAME, () -> new PowerFrame(BlockBehaviour.Properties.of(Material.GLASS).requiresCorrectToolForDrops().strength(1f, 4f)));
public static final RegistryObject<Block> POWER_FRAME = BLOCKS.register(LibBlockNames.POWER_FRAME, () -> new PowerFrame(BlockBehaviour.Properties.of(Material.GLASS).sound(SoundType.GLASS).noOcclusion().isValidSpawn((a, b, c, d) -> false).lightLevel((state) -> 15).isRedstoneConductor((a, b, c) -> false).isSuffocating((a, b, c) -> false).isViewBlocking((a, b, c) -> false).requiresCorrectToolForDrops().strength(0.5f, 4f)));
public static final RegistryObject<Item> POWER_FRAME_ITEM = fromBlock(POWER_FRAME);
@ -58,4 +63,5 @@ public class ModBlocks
{
return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ITEM_PROPERTIES));
}
}

View File

@ -9,8 +9,11 @@ import net.minecraft.world.level.ItemLike;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import vazkii.botania.common.item.equipment.tool.bow.ItemLivingwoodBow;
import vazkii.botania.common.item.rod.ItemTornadoRod;
import vazkii.botania.network.TriConsumer;
import static vazkii.botania.common.lib.ResourceLocationHelper.prefix;
@OnlyIn(Dist.CLIENT)
public class ModItemProperties
{
@ -43,5 +46,7 @@ public class ModItemProperties
ClampedItemPropertyFunction blocking = (stack, level, entity, seed) -> entity != null && entity.isUsingItem() && entity.getUseItem() == stack ? 1.0F : 0.0F;
consumer.accept(ModItems.MANASTEEL_SHIELD.get(), new ResourceLocation("blocking"), blocking);
consumer.accept(ModItems.ELEMENT_SHIELD.get(), new ResourceLocation("blocking"), blocking);
consumer.accept(ModItems.MINI_TORNADO_ROD.get(), prefix("active"), (stack, world, living, seed) -> ItemTornadoRod.isFlying(stack) ? 1 : 0);
}
}

View File

@ -153,7 +153,7 @@ public class ModItems
public static final RegistryObject<Item> MANASTEEL_SHIELD = register(LibItemNames.MANASTEEL_SHIELD, () -> new ManaSteelShield(stackTo1()));
public static final RegistryObject<Item> ELEMENT_SHIELD = register(LibItemNames.ELEMENT_SHIELD, () -> new ElementSteelShield(stackTo1()));
public static final RegistryObject<Item> MINI_TORANADO_ROD = register(LibItemNames.MINI_TORANADO_ROD, () -> new MiniToranadoRod(stackTo1()));
public static final RegistryObject<Item> MINI_TORNADO_ROD = register(LibItemNames.MINI_TORNADO_ROD, () -> new MiniTornadoRod(stackTo1()));
public static final RegistryObject<Item> ROD_OF_DISCORD = register(LibItemNames.ROD_OF_DISCORD, () -> new RodOfDiscord(stackTo1()));
public static final RegistryObject<Item> SHADOW_WARRIOR_HELM = register(LibItemNames.SHADOWWARRIOR_HELM, () -> new ShadowWarriorArmor(EquipmentSlot.HEAD, stackTo1()));
public static final RegistryObject<Item> SHADOW_WARRIOR_CHEST = register(LibItemNames.SHADOWWARRIOR_CHEST, () -> new ShadowWarriorArmor(EquipmentSlot.CHEST, stackTo1()));

View File

@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import vazkii.botania.api.mana.ManaItemHandler;
import vazkii.botania.common.helper.ItemNBTHelper;
import vazkii.botania.common.item.equipment.bauble.ItemBauble;
import vazkii.botania.common.item.equipment.bauble.ItemManaRing;
import java.util.List;
@ -33,6 +34,7 @@ public class NatureOrb extends ItemBauble
}
public static final String TAG_XP = "xp";
//Same as ManaRing
public static final int MAX_XP = 500000;
@Override
@ -60,7 +62,7 @@ public class NatureOrb extends ItemBauble
stacks.add(new ItemStack(this));
ItemStack full = new ItemStack(this);
setXP(full, getMaxXP());
ItemManaRing.setMana(full, MAX_XP);
stacks.add(full);
}
}
@ -99,39 +101,6 @@ public class NatureOrb extends ItemBauble
}
}
@Override
public boolean isBarVisible(@NotNull ItemStack stack)
{
return true;
}
@Override
public int getBarWidth(@NotNull ItemStack stack)
{
//I am sure it is int lol
return (int) Math.round(13.0D - (double) getXP(stack) * 13.0D / (double) getMaxXP());
}
public int getBarColor(@NotNull ItemStack stack)
{
double stackMaxDamage = (double) getMaxXP();
double f = Math.max(0.0D, (stackMaxDamage - (double) getXP(stack)) / stackMaxDamage);
return Mth.hsvToRgb((float) f / 3.0F, 1.0F, 1.0F);
}
public boolean addXP(ItemStack stack, int xp)
{
if (getXP(stack) >= getMaxXP())
return false;
setXP(stack, Math.min(Math.max(getXP(stack) + xp, 0), getMaxXP()));
return true;
}
public void setXP(ItemStack stack, int xp)
{
ItemNBTHelper.setInt(stack, TAG_XP, xp);
}
public int getXP(ItemStack stack)
{
return ItemNBTHelper.getInt(stack, TAG_XP, 0);
@ -151,7 +120,7 @@ public class NatureOrb extends ItemBauble
.distinct().forEach(potion ->
{
player.removeEffect(potion);
addXP(stack, -50);
//addXP(stack, -50);
((ServerLevel) player.level).getChunkSource().broadcastAndSend(player, new ClientboundRemoveMobEffectPacket(player.getId(), potion));
});
}

View File

@ -10,6 +10,8 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import vazkii.botania.api.block.IWandHUD;
import vazkii.botania.common.block.tile.TileAnimatedTorch;
import vazkii.botania.xplat.IXplatAbstractions;
import java.util.HashMap;
@ -42,4 +44,9 @@ public class ModTiles
r.accept(e.getValue(), e.getKey());
}
}
public static void registerWandHudCaps(vazkii.botania.common.block.tile.ModTiles.BECapConsumer<IWandHUD> consumer)
{
consumer.accept(be -> new TilePowerFrame.WandHud((TilePowerFrame) be), ModTiles.POWER_FRAME);
}
}

View File

@ -1,15 +1,28 @@
package chick.extrabotany.common.blocks;
import chick.extrabotany.common.ModItems;
import chick.extrabotany.common.blocks.tile.TilePowerFrame;
import net.minecraft.core.BlockPos;
import net.minecraft.world.Containers;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable;
import vazkii.botania.api.internal.VanillaPacketDispatcher;
import vazkii.botania.common.block.BlockModWaterloggable;
import vazkii.botania.common.block.tile.TileSimpleInventory;
import vazkii.botania.common.helper.InventoryHelper;
import vazkii.botania.xplat.IXplatAbstractions;
public class PowerFrame extends BlockModWaterloggable implements EntityBlock
{
@ -18,21 +31,39 @@ public class PowerFrame extends BlockModWaterloggable implements EntityBlock
super(prop);
}
@Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit)
{
TilePowerFrame frame = (TilePowerFrame) level.getBlockEntity(pos);
ItemStack stack = player.getItemInHand(hand);
if (frame != null)
{
if (player.isShiftKeyDown())
{
InventoryHelper.withdrawFromInventory(frame, player);
VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame);
return InteractionResult.SUCCESS;
} else if (!stack.isEmpty() && (IXplatAbstractions.INSTANCE.findManaItem(stack) != null || stack.is(ModItems.NATURE_ORB.get())))
{
boolean result = frame.addItem(player, stack, hand);
VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame);
return result ? InteractionResult.SUCCESS : InteractionResult.PASS;
}
}
return InteractionResult.PASS;
}
@Nullable
@Override
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type)
{
return createTickerHelper(type, ModTiles.POWER_FRAME, TilePowerFrame::serverTick);
/*
if (!level.isClientSide)
{//TODO:THE 2nd type is the type in ModTiles
{
return createTickerHelper(type, ModTiles.POWER_FRAME, TilePowerFrame::serverTick);
} else
{
return createTickerHelper(type, ModTiles.POWER_FRAME, TilePowerFrame::clientTick);
}
*/
}
@Nullable
@ -41,4 +72,19 @@ public class PowerFrame extends BlockModWaterloggable implements EntityBlock
{
return new TilePowerFrame(pos, state);
}
@Override
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving)
{
if (state.getBlock() != newState.getBlock())
{
BlockEntity te = level.getBlockEntity(pos);
if (te instanceof TileSimpleInventory t)
{
Containers.dropContents(level, pos, t.getItemHandler());
}
super.onRemove(state, level, pos, newState, isMoving);
}
}
}

View File

@ -10,7 +10,6 @@ import net.minecraft.ChatFormatting;
import net.minecraft.Util;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.player.Player;
@ -104,7 +103,7 @@ public class TileDimensionCatalyst extends TileMod
isActive = cmp.getBoolean(TAG_IS_ACTIVE);
}
public boolean chouJiang(Player player, ItemStack stack, List<WeightCategory> categoryList, Map<WeightCategory, Float> chanceList)
public boolean wish(Player player, ItemStack stack, List<WeightCategory> categoryList, Map<WeightCategory, Float> chanceList)
{
if (!level.isClientSide)
{

View File

@ -3,44 +3,37 @@ package chick.extrabotany.common.blocks.tile;
import chick.extrabotany.common.ModItems;
import chick.extrabotany.common.baubles.NatureOrb;
import chick.extrabotany.common.blocks.ModTiles;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.SimpleContainer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.entity.TickingBlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.client.model.data.IModelData;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import org.jetbrains.annotations.NotNull;
import vazkii.botania.api.block.IWandable;
import vazkii.botania.api.BotaniaAPIClient;
import vazkii.botania.api.block.IWandHUD;
import vazkii.botania.api.internal.VanillaPacketDispatcher;
import vazkii.botania.api.mana.IManaItem;
import vazkii.botania.client.core.handler.ClientTickHandler;
import vazkii.botania.client.fx.WispParticleData;
import vazkii.botania.common.block.ModBlocks;
import vazkii.botania.common.block.tile.TileRuneAltar;
import vazkii.botania.common.block.tile.TileSimpleInventory;
import vazkii.botania.common.block.tile.mana.TilePool;
import vazkii.botania.xplat.IXplatAbstractions;
import vazkii.patchouli.api.IMultiblock;
import vazkii.patchouli.api.PatchouliAPI;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.function.Supplier;
public class TilePowerFrame extends TileSimpleInventory implements IWandable
public class TilePowerFrame extends TileSimpleInventory
{
public TilePowerFrame(BlockPos pos, BlockState state)
{
@ -49,6 +42,9 @@ public class TilePowerFrame extends TileSimpleInventory implements IWandable
public static final int TRANSFER_SPEED = 1000;
protected static final String TAG_TRANSFERRING = "tag_transferring";
protected boolean is_transferring;
private static final String[][] PATTERN_ADV = new String[][]{
{
"P_____P",
@ -73,9 +69,8 @@ public class TilePowerFrame extends TileSimpleInventory implements IWandable
public static final Supplier<IMultiblock> MULTIBLOCK_ADV = (() -> PatchouliAPI.get().makeMultiblock(
PATTERN_ADV,
'P', ModBlocks.naturaPylon,
'0', ModBlocks.dragonstoneBlock,
'0', chick.extrabotany.common.ModBlocks.POWER_FRAME.get(),
'M', ModBlocks.manaPool));
//TODO:方块替换
public static final BlockPos[] POOL_LOCATIONS = {
new BlockPos(3, 0, 3), new BlockPos(-3, 0, 3), new BlockPos(3, 0, -3), new BlockPos(-3, 0, -3)
@ -102,7 +97,7 @@ public class TilePowerFrame extends TileSimpleInventory implements IWandable
public boolean addItem(@Nullable Player player, ItemStack stack, @Nullable InteractionHand hand)
{
if (!(stack.getItem() instanceof IManaItem) && stack.getItem() != ModItems.NATURE_ORB.get())
if (IXplatAbstractions.INSTANCE.findManaItem(stack) == null && stack.getItem() != ModItems.NATURE_ORB.get())
{
return false;
}
@ -129,91 +124,23 @@ public class TilePowerFrame extends TileSimpleInventory implements IWandable
return true;
}
public static void clientTick(Level level, BlockPos worldPosition, BlockState state, TilePowerFrame self)
@Override
public void writePacketNBT(CompoundTag tag)
{
super.writePacketNBT(tag);
tag.putBoolean(TAG_TRANSFERRING, is_transferring);
}
public static void serverTick(Level level, BlockPos worldPosition, BlockState state, TilePowerFrame self)
@Override
public void readPacketNBT(CompoundTag tag)
{
super.readPacketNBT(tag);
is_transferring = tag.getBoolean(TAG_TRANSFERRING);
}
int redstoneSignal = 0;
for (Direction dir : Direction.values())
{
redstoneSignal = Math.max(redstoneSignal, level.getSignal(worldPosition.relative(dir), dir));
}
boolean transfering = false;
int ritual = 0;
if (MULTIBLOCK_ADV.get().validate(level, worldPosition) != null)
{
ritual = 1;
}
int speed = TRANSFER_SPEED * (1 + ritual);
ItemStack stack = self.getItemHandler().getItem(0);
if (!stack.isEmpty())
{
var item = IXplatAbstractions.INSTANCE.findManaItem(stack);
if (item != null)
{
if (level.getBlockEntity(worldPosition.offset(0, 1, 0)) instanceof TilePool p)
{
if (redstoneSignal == 0)
{
int manaToGet = Math.min(speed, p.getCurrentMana());
int space = Math.max(0, item.getMaxMana() - item.getMana());
int current = Math.min(space, manaToGet);
if (!level.isClientSide)
{
p.receiveMana(-current);
item.addMana(current);
}
if (current > 0)
transfering = true;
} else
{
int manaToGet = Math.min(speed, item.getMana());
int space = Math.max(0, p.manaCap - p.getCurrentMana());
int current = Math.min(space, manaToGet);
if (!level.isClientSide)
{
p.receiveMana(current);
item.addMana(-current);
}
if (current > 0)
transfering = true;
}
}
} else if (stack.getItem() instanceof NatureOrb orb && ritual > 0)
{
//nature orb充能
int xp = (int) Math.pow(4, ritual);
if (!level.isClientSide)
orb.addXP(stack, xp);
if (orb.getXP(stack) < orb.getMaxXP())
transfering = true;
for (BlockPos offset : POOL_LOCATIONS)
{
BlockEntity tile = level.getBlockEntity(worldPosition.offset(offset));
if (tile instanceof TilePool pool)
{
if (pool.getCurrentMana() >= 10)
{
pool.receiveMana(-10);
orb.addXP(stack, 2);
}
}
}
}
}
if (level.isClientSide && ritual >= 1 && transfering)
public static void clientTick(Level level, BlockPos worldPosition, BlockState state, TilePowerFrame self)
{
if (self.is_transferring && MULTIBLOCK_ADV.get().validate(level, worldPosition) != null)
{
Vec3 pos = Vec3.atCenterOf(worldPosition.offset(0, 0.5, 0));
for (BlockPos arr : POOL_LOCATIONS)
@ -241,16 +168,112 @@ public class TilePowerFrame extends TileSimpleInventory implements IWandable
}
}
@Nonnull
@Override
public AABB getRenderBoundingBox()
public static void serverTick(Level level, BlockPos worldPosition, BlockState state, TilePowerFrame self)
{
return INFINITE_EXTENT_AABB;
int redstoneSignal = 0;
for (Direction dir : Direction.values())
{
redstoneSignal = Math.max(redstoneSignal, level.getSignal(worldPosition.relative(dir), dir));
}
int speed = TRANSFER_SPEED;
if (MULTIBLOCK_ADV.get().validate(level, worldPosition) != null)
{
speed *= 2;
}
ItemStack stack = self.getItemHandler().getItem(0);
if (!stack.isEmpty())
{
var manaItem = IXplatAbstractions.INSTANCE.findManaItem(stack);
int chargeModifier = 100;
if (manaItem == null)
{
manaItem = chick.extrabotany.xplat.IXplatAbstractions.INSTANCE.findNatureOrb(stack);
chargeModifier = 1;
}
if (manaItem != null)
{
if (level.getBlockEntity(worldPosition.offset(0, 1, 0)) instanceof TilePool p)
{
int current;
if (redstoneSignal == 0)
{
int manaToGet = Math.min(speed, p.getCurrentMana());
int space = Math.max(0, manaItem.getMaxMana() - manaItem.getMana());
current = Math.min(space, manaToGet);
} else
{
int manaToGet = Math.min(speed, manaItem.getMana());
int space = Math.max(0, p.manaCap - p.getCurrentMana());
current = -Math.min(space, manaToGet);
}
p.receiveMana(-current * chargeModifier / 100);
manaItem.addMana(current * chargeModifier / 100);
if (current > 0)
{
self.setTransferring(true);
}
}
}
}
}
public void setTransferring(boolean is_transferring)
{
setChanged();
this.is_transferring = is_transferring;
}
@Override
public boolean onUsedByWand(@Nullable Player player, ItemStack stack, Direction side)
public void setChanged()
{
return false;
super.setChanged();
if (level != null && !level.isClientSide)
{
VanillaPacketDispatcher.dispatchTEToNearbyPlayers(this);
}
}
public static class WandHud implements IWandHUD
{
private final TilePowerFrame frame;
public WandHud(TilePowerFrame frame)
{
this.frame = frame;
}
@Override
public void renderHUD(PoseStack ms, Minecraft mc)
{
String name = new ItemStack(frame.getBlockState().getBlock()).getHoverName().getString();
int color = 0x1e90ff;
var stack = frame.getItemHandler().getItem(0);
int curr = 0;
int max = 500000;
var manaItem = IXplatAbstractions.INSTANCE.findManaItem(stack);
if (manaItem != null)
{
curr = manaItem.getMana();
max = manaItem.getMaxMana();
} else if (stack.getItem() instanceof NatureOrb orb)
{
curr = orb.getXP(stack);
}
BotaniaAPIClient.instance().drawSimpleManaHUD(ms, color, curr, max, name);
RenderSystem.setShaderColor(1F, 1F, 1F, 1F);
}
}
}

View File

@ -23,9 +23,14 @@ public class Remember extends MobEffect
{
if (living instanceof Player player)
{
float amount = Math.min(player.getAbsorptionAmount(), (amp + 1) * 10F);
player.heal(amount * 0.8F);
float amount = Math.min(player.getAbsorptionAmount(), getRememberMaxAbsorptionPerLevel(amp));
player.heal(amount / 2F);
player.setAbsorptionAmount(player.getAbsorptionAmount() - amount);
}
}
public static float getRememberMaxAbsorptionPerLevel(int amp)
{
return (amp + 1) * 12F;
}
}

View File

@ -4,7 +4,6 @@ import chick.extrabotany.api.BonusHelper;
import chick.extrabotany.api.WeightCategory;
import chick.extrabotany.common.ModItems;
import chick.extrabotany.common.blocks.tile.TileDimensionCatalyst;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
@ -85,7 +84,7 @@ public class Fates extends Item
var blockentity = ctx.getLevel().getBlockEntity(ctx.getClickedPos());
if (blockentity instanceof TileDimensionCatalyst dimensionCatalyst)
{
return dimensionCatalyst.chouJiang(ctx.getPlayer(), ctx.getItemInHand(), categoryList, chanceMap)
return dimensionCatalyst.wish(ctx.getPlayer(), ctx.getItemInHand(), categoryList, chanceMap)
? InteractionResult.SUCCESS
: InteractionResult.FAIL;
}

View File

@ -17,6 +17,7 @@ public class LibAdvancementNames
public static final String ROD_OF_DISCORD_CRAFT = "rod_of_discord_craft";
public static final String NATURE_ORB_CRAFT = "nature_orb_craft";
public static final String POWER_FRAME_CRAFT = "power_frame_craft";
public static final String BLOODY_ENCHANTRESS_USE = "bloody_enchantress_use";
public static final String TINKLE_FLOWER_USE = "tinkle_flower_use";

View File

@ -90,7 +90,7 @@ public class LibItemNames
public static String LIVINGWOOD_SHORTBOW = "livingwood_shortbow";
public static String CRYSTAL_SHORTBOW = "crystal_shortbow";
public static String MINI_TORANADO_ROD = "mini_toranado_rod";
public static String MINI_TORNADO_ROD = "mini_tornado_rod";
public static String ROD_OF_DISCORD = "rod_of_discord";
public static String SHADOWWARRIOR_HELM = "shadowwarrior_helm";
public static String SHADOWWARRIOR_CHEST = "shadowwarrior_chest";

View File

@ -2,6 +2,7 @@ package chick.extrabotany.common.tools.others;
import chick.extrabotany.common.ModEffects;
import chick.extrabotany.common.base.DamageHandler;
import chick.extrabotany.common.effects.Remember;
import net.minecraft.stats.Stats;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
@ -27,18 +28,22 @@ public class ForestBook extends Item
var stack = player.getItemInHand(hand);
if (!level.isClientSide && player.getHealth() > 0)
{
if (!player.hasEffect(ModEffects.REMEMBER.get()))
player.addEffect(new MobEffectInstance(ModEffects.REMEMBER.get(), getEffectTicks(), 0));
var num = Remember.getRememberMaxAbsorptionPerLevel(0);
if (player.getAbsorptionAmount() < num)
{
player.addEffect(new MobEffectInstance(ModEffects.REMEMBER.get(), 5 * 20, 0));
if (player.getAbsorptionAmount() < 10F)
{
DamageHandler.INSTANCE.doDamage(player, DamageSource.MAGIC, 8.0F, DamageHandler.INSTANCE.CREATIVE + DamageHandler.INSTANCE.BYPASS_INVUL + DamageHandler.INSTANCE.BYPASS_MAGIC + DamageHandler.INSTANCE.BYPASS_ABSORB);
player.setAbsorptionAmount(10.0F);
player.awardStat(Stats.ITEM_USED.get(this));
return InteractionResultHolder.success(stack);
}
DamageHandler.INSTANCE.doDamage(player, DamageSource.MAGIC, 6.0F, DamageHandler.INSTANCE.BYPASS_INVUL + DamageHandler.INSTANCE.BYPASS_MAGIC + DamageHandler.INSTANCE.BYPASS_ABSORB);
player.setAbsorptionAmount(num);
player.getCooldowns().addCooldown(this, getEffectTicks() / 20);
return InteractionResultHolder.success(stack);
}
}
return InteractionResultHolder.fail(stack);
}
protected int getEffectTicks()
{
return 5 * 20;
}
}

View File

@ -1,12 +1,8 @@
package chick.extrabotany.common.tools.others;
import chick.extrabotany.ExtraBotany;
import net.minecraft.Util;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
@ -21,61 +17,78 @@ import vazkii.botania.common.item.rod.ItemTornadoRod;
import javax.annotation.Nonnull;
public class MiniToranadoRod extends ItemTornadoRod
public class MiniTornadoRod extends ItemTornadoRod
{
public MiniToranadoRod(Properties props)
public MiniTornadoRod(Properties props)
{
super(props);
}
protected static final int MAX_COUNTER = 20;
protected static final int MAX_COUNTER = 10;
protected static final String TAG_FLYING = "flying";
protected static final String TAG_FLYCOUNTER = "flyCounter";
protected static final int COST = 60;
@NotNull
@Override
public InteractionResultHolder<ItemStack> use(Level world, Player player, @NotNull InteractionHand hand)
{
ItemStack stack = player.getItemInHand(hand);
if (getFlyCounter(stack) == 0 && ManaItemHandler.instance().requestManaExactForTool(stack, player, COST, false))
{
ManaItemHandler.instance().requestManaExactForTool(stack, player, COST, true);
setFlying(stack, true);
player.fallDistance = 0F;
double my = ManaItemHandler.instance().hasProficiency(player, stack) ? 2 : 1;
Vec3 oldMot = player.getDeltaMovement();
if (player.isFallFlying())
{
Vec3 lookDir = player.getLookAngle();
player.setDeltaMovement(new Vec3(lookDir.x() * my, lookDir.y() * my, lookDir.z() * my));
} else
{
player.setDeltaMovement(new Vec3(oldMot.x(), my, oldMot.z()));
}
player.playSound(ModSounds.airRod, 1F, 1F);
for (int i = 0; i < 5; i++)
{
WispParticleData data = WispParticleData.wisp(0.35F + (float) Math.random() * 0.1F, 0.25F, 0.25F, 0.25F);
world.addParticle(data, player.getX(), player.getY(), player.getZ(),
0.2F * (float) (Math.random() - 0.5),
-0.01F * (float) Math.random(),
0.2F * (float) (Math.random() - 0.5));
}
return InteractionResultHolder.success(stack);
}
return InteractionResultHolder.pass(stack);
}
@Override
public void inventoryTick(ItemStack stack, Level world, Entity ent, int slot, boolean active)
{
if (ent instanceof Player player)
{
boolean damaged = getFlyCounter(stack) > 0;
boolean held = player.getMainHandItem() == stack || player.getOffhandItem() == stack;
if (damaged && !isFlying(stack))
{
setFlyCounter(stack, getFlyCounter(stack) - 1);
}
if (isFlying(stack))
{
if (held)
setFlyCounter(stack, getFlyCounter(stack) + 1);
if (getFlyCounter(stack) == MAX_COUNTER)
{
player.fallDistance = 0F;
double my = ManaItemHandler.instance().hasProficiency(player, stack) ? 1.6 : 0.8;
Vec3 oldMot = player.getDeltaMovement();
if (player.isFallFlying())
{
Vec3 lookDir = player.getLookAngle();
player.setDeltaMovement(new Vec3(lookDir.x() * my, lookDir.y() * my, lookDir.z() * my));
} else
{
player.setDeltaMovement(new Vec3(oldMot.x(), my, oldMot.z()));
}
player.playSound(ModSounds.airRod, 1F, 1F);
for (int i = 0; i < 5; i++)
{
WispParticleData data = WispParticleData.wisp(0.35F + (float) Math.random() * 0.1F, 0.25F, 0.25F, 0.25F);
world.addParticle(data, player.getX(), player.getY(), player.getZ(),
0.2F * (float) (Math.random() - 0.5),
-0.01F * (float) Math.random(),
0.2F * (float) (Math.random() - 0.5));
}
setFlying(stack, false);
}
setFlyCounter(stack, MAX_COUNTER);
setFlying(stack, false);
}
if (damaged)

View File

@ -1,6 +1,7 @@
package chick.extrabotany.datagen;
import chick.extrabotany.ExtraBotany;
import chick.extrabotany.common.ModBlocks;
import chick.extrabotany.common.ModEntities;
import chick.extrabotany.common.ModItems;
import chick.extrabotany.common.blocks.ModSubtiles;
@ -147,6 +148,17 @@ public class ModAdvancementProvider extends AdvancementProvider
.parent(thechaos_craft)
.addCriterion(LibAdvancementNames.ROD_OF_DISCORD_CRAFT, onPickup(ModItems.ROD_OF_DISCORD.get()))
.save(consumer, mainId(LibAdvancementNames.ROD_OF_DISCORD_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModItems.NATURE_ORB.get(), LibAdvancementNames.NATURE_ORB_CRAFT, FrameType.TASK))
.parent(thechaos_craft)
.addCriterion(LibAdvancementNames.NATURE_ORB_CRAFT, onPickup(ModItems.NATURE_ORB.get()))
.save(consumer, mainId(LibAdvancementNames.NATURE_ORB_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModBlocks.POWER_FRAME.get(), LibAdvancementNames.POWER_FRAME_CRAFT, FrameType.TASK))
.parent(thechaos_craft)
.addCriterion(LibAdvancementNames.POWER_FRAME_CRAFT, onPickup(ModBlocks.POWER_FRAME.get()))
.save(consumer, mainId(LibAdvancementNames.POWER_FRAME_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModSubtiles.bloodyenchantress, LibAdvancementNames.BLOODY_ENCHANTRESS_USE, FrameType.TASK))
.parent(thechaos_craft)
@ -189,6 +201,26 @@ public class ModAdvancementProvider extends AdvancementProvider
.parent(ego_defeat)
.addCriterion("the_universe", onPickup(ModItems.THE_UNIVERSE.get()))
.save(consumer, mainId(LibAdvancementNames.THE_UNIVERSE_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModItems.SAGES_MANA_RING.get(), LibAdvancementNames.SAGES_MANA_RING_CRAFT, FrameType.TASK))
.parent(ego_defeat)
.addCriterion(LibAdvancementNames.SAGES_MANA_RING_CRAFT, onPickup(ModItems.SAGES_MANA_RING.get()))
.save(consumer, mainId(LibAdvancementNames.SAGES_MANA_RING_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModItems.CORE_GOD.get(), LibAdvancementNames.CORE_GOD_CRAFT, FrameType.TASK))
.parent(ego_defeat)
.addCriterion(LibAdvancementNames.CORE_GOD_CRAFT, onPickup(ModItems.CORE_GOD.get()))
.save(consumer, mainId(LibAdvancementNames.CORE_GOD_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModItems.SUN_RING.get(), LibAdvancementNames.SUN_RING_CRAFT, FrameType.TASK))
.parent(ego_defeat)
.addCriterion(LibAdvancementNames.SUN_RING_CRAFT, onPickup(ModItems.SUN_RING.get()))
.save(consumer, mainId(LibAdvancementNames.SUN_RING_CRAFT));
Advancement.Builder.advancement()
.display(simple(ModItems.MOON_PENDANT.get(), LibAdvancementNames.MOON_PENDANT_CRAFT, FrameType.TASK))
.parent(ego_defeat)
.addCriterion(LibAdvancementNames.MOON_PENDANT_CRAFT, onPickup(ModItems.MOON_PENDANT.get()))
.save(consumer, mainId(LibAdvancementNames.MOON_PENDANT_CRAFT));
/*
// Parent: root

View File

@ -37,6 +37,7 @@ public class ModItemModels extends ItemModelProvider
.filter(p -> !(p instanceof ProjectileWeaponItem))
.toList());
//write in ModItemOverrideModel
list.remove(ModItems.MINI_TORNADO_ROD.get());
list.remove(ModItems.COCK_TAIL.get());
//write by hand
list.remove(ModItems.UNIVERSAL_PETAL.get());
@ -70,7 +71,6 @@ public class ModItemModels extends ItemModelProvider
}
} else if (b instanceof BlockItem)
{
if (!path.startsWith("power_frame"))
withExistingParent(path, modLoc("block/" + path));
}
}

View File

@ -9,14 +9,12 @@ import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.HashCache;
import net.minecraft.data.models.model.ModelLocationUtils;
import net.minecraft.data.models.model.ModelTemplate;
import net.minecraft.data.models.model.TextureMapping;
import net.minecraft.data.models.model.TextureSlot;
import net.minecraft.data.models.model.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import org.jetbrains.annotations.NotNull;
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.common.lib.LibMisc;
import vazkii.botania.data.util.ModelWithOverrides;
import vazkii.botania.data.util.OverrideHolder;
import vazkii.botania.mixin.AccessorTextureSlot;
@ -35,6 +33,8 @@ public class ModItemOverrideModels implements DataProvider
private static final TextureSlot LAYER1 = AccessorTextureSlot.make("layer1");
private static final ModelTemplate GENERATED_1 = new ModelTemplate(Optional.of(new ResourceLocation("item/generated")), Optional.empty(), TextureSlot.LAYER0, LAYER1);
private static final ModelWithOverrides GENERATED_OVERRIDES_1 = new ModelWithOverrides(new ResourceLocation("item/generated"), TextureSlot.LAYER0, LAYER1);
private static final ModelWithOverrides HANDHELD_OVERRIDES = new ModelWithOverrides(new ResourceLocation("item/handheld"), TextureSlot.LAYER0);
private final DataGenerator generator;
public ModItemOverrideModels(DataGenerator generator)
@ -89,5 +89,21 @@ public class ModItemOverrideModels implements DataProvider
TextureMapping.layer0(chick.extrabotany.common.ModItems.EMPTY_BOTTLE.get()).put(LAYER1, TextureMapping.getItemTexture(chick.extrabotany.common.ModItems.COCK_TAIL.get(), "_0")),
flaskOverrides,
consumer);
items.remove(chick.extrabotany.common.ModItems.COCK_TAIL.get());
singleHandheldSuffixOverride(chick.extrabotany.common.ModItems.MINI_TORNADO_ROD.get(), "_active", new ResourceLocation(LibMisc.MOD_ID,"active"), 1.0, consumer);
}
private static void singleHandheldOverride(Item item, ResourceLocation overrideModel, ResourceLocation predicate, double value, BiConsumer<ResourceLocation, Supplier<JsonElement>> consumer) {
ModelTemplates.FLAT_HANDHELD_ITEM.create(overrideModel, TextureMapping.layer0(overrideModel), consumer);
HANDHELD_OVERRIDES.create(ModelLocationUtils.getModelLocation(item),
TextureMapping.layer0(item),
new OverrideHolder()
.add(overrideModel, Pair.of(predicate, value)),
consumer);
}
private static void singleHandheldSuffixOverride(Item item, String suffix, ResourceLocation predicate, double value, BiConsumer<ResourceLocation, Supplier<JsonElement>> consumer) {
singleHandheldOverride(item, ModelLocationUtils.getModelLocation(item, suffix), predicate, value, consumer);
}
}

View File

@ -22,7 +22,7 @@ import java.util.List;
import java.util.Map;
import java.util.function.Function;
import static chick.extrabotany.forge.client.CapabilityInit.PASSIVE_FLOWER;
import static chick.extrabotany.forge.CommonCapabilityInit.PASSIVE_FLOWER;
import static vazkii.botania.common.block.subtile.generating.SubTileHydroangeas.TAG_PASSIVE_DECAY_TICKS;
public class ModLootTables extends BlockLootProvider

View File

@ -39,15 +39,19 @@ public class EN_USLanguageProvider extends LanguageProvider
add(ModItems.MANA_READER.get(), "Mana Reader");
add(ModItems.ROD_OF_DISCORD.get(), "Rod of Discord");
add(ModItems.MINI_TORNADO_ROD.get(), "Shortrod of Skies");
add(ModItems.THE_CHAOS.get(), "The Chaos");
add(ModItems.THE_ORIGIN.get(), "The Origin");
add(ModItems.THE_END.get(), "The End");
add(ModItems.THE_UNIVERSE.get(), "The Universe");
add(ModItems.FRIED_CHICKEN.get(), "Fried Chicken");
add(ModBlocks.DIMENSION_CATALYST.get(), "Dimension Catalyst");
add(ModBlocks.POWER_FRAME.get(), "Power Frame");
add(ModBlocks.BLOCK_SHADOWIUM.get(), "Shadowium Block");
add(ModBlocks.BLOCK_PHOTONIUM.get(), "Photonium Block");
add(ModBlocks.BLOCK_ORICHALCOS.get(), "Orichalcos Block");
add(ModItems.ORICHALCOS.get(), "Orichalcos Ingot");
add(ModItems.TICKET.get(), "Invitation Letter to Yourself");
add(ModItems.AERIALITE_INGOT.get(), "Aerialite");
@ -121,6 +125,8 @@ public class EN_USLanguageProvider extends LanguageProvider
add(ModItems.SHADOW_KATANA.get(), "Shadow Katana");
add(ModItems.LIVINGWOOD_CROSSBOW.get(), "Livingwood Crossbow");
add(ModItems.LIVINGWOOD_SHORTBOW.get(), "Livingwood Shortbow");
add(ModItems.MANA_SHORTARROW.get(), "Mana Shortarrow");
add(ModItems.TRUE_SHADOW_KATANA.get(), "True Shadow Katana");
add(ModItems.TRUE_TERRA_BLADE.get(), "True Terra Blade");
add(ModItems.TRUE_THUNSTAR_CALLER.get(), "True Thunstar Caller");
@ -235,7 +241,8 @@ public class EN_USLanguageProvider extends LanguageProvider
prefixAdvancement(LibAdvancementNames.SHOOTING_GUARDIAN, "CONNECT", "Equip Shooting Guardian Armor Set");
prefixAdvancement(LibAdvancementNames.ROD_OF_DISCORD_CRAFT, "NOT Discord!", "Craft Rod of Discord");
prefixAdvancement(LibAdvancementNames.POWER_FRAME_CRAFT, "Letter Song", "Obtain Power Frame");
prefixAdvancement(LibAdvancementNames.NATURE_ORB_CRAFT, "雨夢楼", "Obtain Nature Orb");
prefixAdvancement(LibAdvancementNames.FAILNAUGHT_CRAFT, "from Y to Y", "Craft Failnaught");
prefixAdvancement(LibAdvancementNames.EXCALIBER_CRAFT, "ReAct", "Craft First Fractal");
@ -449,7 +456,7 @@ public class EN_USLanguageProvider extends LanguageProvider
add("extrabotany.page.manasteel_shield2", "Adding $(item)Dirt(0) to the crafting materials will make the shield more compatible with the ground. Right-clicking at the ground will quickly create a wall of $(item)Dirt$(0). However, this makes the shield less durable and lose its original defensive ability.");
add("extrabotany.page.manasteel_shield3", "Is it strong enough?");
add("extrabotany.entry.forest_book", "Aranyaka");
add("extrabotany.page.forest_book0", "With $(item)Golden Apple$(0) and the power of Nature, you can craft $(item)Aranyaka$(0). Right click will cost 8 $(thing)HP$(0) to let you gain 5 $(thing)Golden Hearts$(0) and Effect $(thing)Remember$(0) for 5 seconds. After 5 seconds, every $(thing)Golden Heart$(0) will be converted into 1.6 $(thing)hp$(0), capped at 5 hearts.");
add("extrabotany.page.forest_book0", "With $(item)Golden Apple$(0) and the power of Nature, you can craft $(item)Aranyaka$(0). Right click will cost 6 $(thing)HP$(0) to let you gain 6 $(thing)Golden Hearts$(0) and Effect $(thing)Remember$(0) for 5 seconds. After 5 seconds, every $(thing)Golden Heart$(0) will be converted into 1 $(thing)HP$(0), capped at 6 hearts.");
add("extrabotany.page.forest_book1", "\"Hello,\" \"Thank You,\" and the Final \"Goodbye\".");
add("extrabotany.entry.puredaisy_pendant", "Pure Daisy Pendant");
add("extrabotany.page.puredaisy_pendant0", "By holding a $(item)Pure Daisy Pendant$(0) and right-clicking a block, you can instantly transform blocks like a $(item)Pure Daisy$(0), at the cost of a little mana. The more you use it, the more it cools down, even if you find some methods to repair it.");
@ -460,7 +467,13 @@ public class EN_USLanguageProvider extends LanguageProvider
add("extrabotany.entry.elf_king_ring", "Ring of Elven King");
add("extrabotany.page.elf_king_ring0", "$(item)Ring of Elven King$(0) is a special ring. When crafted with another ring, it will probably obtain their ability. However, several abilities like $(thing)storing mana$(0) will not work on $(item)Ring of Elven King$(0). $(item)Ring of Elven King$(0) could obtain at most 2 abilities from other rings. The same abilities might stack. $(br)Do not work on $(thing)Relic$(0). $(br)Crafting $(item)Ring of Elven King$(0) could remove one of the abilities.");
add("extrabotany.page.elf_king_ring1", "");
add("extrabotany.entry.power_frame","Power Frame");
add("extrabotany.page.power_frame0","Place a mana item or $(item)Nature Orb$(0) in the Power Frame, and the Power Frame will extract mana from the mana pool above and transfer to the item.");
add("extrabotany.page.power_frame1","");
add("extrabotany.entry.nature_orb","Nature Orb");
add("extrabotany.page.nature_orb0","The $(item)Nature Orb$(0) can store Natural Breath, a magical power which protects the carrier. Blessing of Mana will provide you with mana, Blessing of Regeneration will speed up your regeneration and Blessing of Senro will drive away bad effects on you. To collect Natural Breath it needs to be placed in Power Frame and a ritualistic multiblock structure around Power Frame is needed.");
add("extrabotany.page.nature_orb1","Not a Blood Orb.");
add("extrabotany.page.nature_orb2","");
add("extrabotany.entry.sun_ring", "Ring of Sacred Sun");
add("extrabotany.page.sun_ring0", "$(item)Ring of Sacred Sun$(0) is the upgraded version of $(item)Ring of Elven King$(0), with the power of obtain 8 additional abilities from other rings, even including $(thing)Relic$(0). However,$(item)Ring of Sacred Sun$(0) can not get some abilities like $(thing)storing mana$(0), either.");
add("extrabotany.page.sun_ring1", "Lavawalker's Epiphany");

View File

@ -39,15 +39,19 @@ public class ZH_CNLanguageProvider extends LanguageProvider
add(ModItems.MANA_READER.get(), "魔力读取器");
add(ModItems.ROD_OF_DISCORD.get(), "不谐传送杖");
add(ModItems.MINI_TORNADO_ROD.get(), "天空短杖");
add(ModItems.THE_CHAOS.get(), "混沌物质");
add(ModItems.THE_ORIGIN.get(), "起源物质");
add(ModItems.THE_END.get(), "终末物质");
add(ModItems.THE_UNIVERSE.get(), "宇宙之心");
add(ModItems.FRIED_CHICKEN.get(), "香香鸡");
add(ModBlocks.DIMENSION_CATALYST.get(), "次元催化剂");
add(ModBlocks.POWER_FRAME.get(), "力量框架");
add(ModBlocks.BLOCK_SHADOWIUM.get(), "暗影块");
add(ModBlocks.BLOCK_PHOTONIUM.get(), "光子块");
add(ModBlocks.BLOCK_ORICHALCOS.get(), "奥里哈钢块");
add(ModItems.ORICHALCOS.get(), "奥利哈刚锭");
add(ModItems.AERIALITE_INGOT.get(), "天空锭");
add(ModItems.TICKET.get(), "寄给自己的邀请函");
@ -122,6 +126,7 @@ public class ZH_CNLanguageProvider extends LanguageProvider
add(ModItems.SHADOW_KATANA.get(), "影刃");
add(ModItems.LIVINGWOOD_CROSSBOW.get(), "活木弩");
add(ModItems.LIVINGWOOD_SHORTBOW.get(), "活木短弓");
add(ModItems.MANA_SHORTARROW.get(), "魔力短箭");
add(ModItems.TRUE_SHADOW_KATANA.get(), "真·影刃");
add(ModItems.TRUE_TERRA_BLADE.get(), "真·泰拉之刃");
add(ModItems.TRUE_THUNSTAR_CALLER.get(), "真·星雷者");
@ -237,6 +242,8 @@ public class ZH_CNLanguageProvider extends LanguageProvider
prefixAdvancement(LibAdvancementNames.MAID, "Drug Of Gold", "装备一套昴星团战斗女仆");
prefixAdvancement(LibAdvancementNames.SHOOTING_GUARDIAN, "CONNECT", "装备一套银翼护卫");
prefixAdvancement(LibAdvancementNames.ROD_OF_DISCORD_CRAFT, "不是Discord", "合成不谐传送杖");
prefixAdvancement(LibAdvancementNames.POWER_FRAME_CRAFT, "Letter Song", "获得力量框架");
prefixAdvancement(LibAdvancementNames.NATURE_ORB_CRAFT, "雨夢楼", "获得自然蕴息宝珠");
prefixAdvancement(LibAdvancementNames.FAILNAUGHT_CRAFT, "from Y to Y", "合成百中弓");
@ -450,7 +457,7 @@ public class ZH_CNLanguageProvider extends LanguageProvider
add("extrabotany.page.manasteel_shield2", "在制作材料中加入$(item)泥土(0)会让盾牌和大地的亲和能力更强,右击地面可以迅速创建一堵土墙。不幸的是,这让盾牌的耐久显著降低了,并且失去了普通的防御能力。");
add("extrabotany.page.manasteel_shield3", "它会掉渣吗。");
add("extrabotany.entry.forest_book", "森林书");
add("extrabotany.page.forest_book0", "将$(item)金苹果$(0)和自然的力量灌注进书本可以制作$(item)森林书$(0)。右击会受到8点$(thing)真实伤害$(0)并获得10点$(thing)生命吸收$(0)和5秒钟的$(thing)铭记$(0)效果。5秒后消耗最多5颗金心回复最多8生命值。");
add("extrabotany.page.forest_book0", "将$(item)金苹果$(0)和自然的力量灌注进书本可以制作$(item)森林书$(0)。右击会受到6点$(thing)真实伤害$(0)并获得12点$(thing)生命吸收$(0)和5秒钟的$(thing)铭记$(0)效果。5秒后消耗最多6颗金心回复最多6生命值。");
add("extrabotany.page.forest_book1", "“你好”,“谢谢”,最后是“再见”。");
add("extrabotany.entry.puredaisy_pendant", "白雏菊项链");
add("extrabotany.page.puredaisy_pendant0", "手持$(item)白雏菊项链$(0)右击方块与$(item)白雏菊$(0)效果相同,但这一过程需要消耗少量魔力,并且随着使用次数的增加,冷却时间也会变长。即使采用某些方法修复它的耐久也是如此。");
@ -461,7 +468,13 @@ public class ZH_CNLanguageProvider extends LanguageProvider
add("extrabotany.entry.elf_king_ring", "精灵王指环");
add("extrabotany.page.elf_king_ring0", "$(item)精灵王指环$(0)是一种奇特的戒指,只要将它与别的戒指合成,就可能获得这种戒指的特殊能力。$(thing)储存魔力$(0)等能力不能正常作用于$(item)精灵王指环$(0)。$(item)精灵王指环$(0)可以额外获取总共两个戒指的能力,有些能力可以叠加作用。$(br)对$(thing)遗物$(0)不生效。$(br)另外,在工作台中可以消去$(item)精灵王指环$(0)的能力。");
add("extrabotany.page.elf_king_ring1", "");
add("extrabotany.entry.power_frame","力量框架");
add("extrabotany.page.power_frame0","将魔力物品或者$(item)自然蕴息宝珠$(0)放入$(item)力量框架$(0)中,力量框架会抽取上方魔力池的魔力来为其充能。");
add("extrabotany.page.power_frame1","");
add("extrabotany.entry.nature_orb","自然蕴息宝珠");
add("extrabotany.page.nature_orb0","$(item)自然蕴息宝珠$(0)可以储存自然之息,利用自然的力量来守护携带者。魔力的加护会提供魔力,再生的加护会加快生命恢复,森罗的加护会清除负面状态。你需要搭建一个多方块结构来为自然蕴息宝珠充能,结构中魔力池中的魔力可以加快这一进度。");
add("extrabotany.page.nature_orb1","不是气血宝珠。");
add("extrabotany.page.nature_orb2","");
add("extrabotany.entry.sun_ring", "圣阳尊戒");
add("extrabotany.page.sun_ring0", "$(item)圣阳尊戒$(0)是$(item)精灵王指环$(0)的升级版,能够获取八个戒指的能力,包括遗物。然而,$(item)圣阳尊戒$(0)仍然不能获得$(thing)储存魔力$(0)等能力。");
add("extrabotany.page.sun_ring1", "渡火者的醒悟");

View File

@ -213,8 +213,18 @@ public class ModCraftingTableRecipes extends RecipeProvider
.define('w', Items.BLAZE_ROD)
.define('c', ModItems.SPIRIT_FUEL.get())
.group(MODID)
.unlockedBy("alchemycatalyst", InventoryChangeTrigger.TriggerInstance.hasItems(vazkii.botania.common.block.ModBlocks.alchemyCatalyst))
.save(consumer, "dimension_catalyst");
.unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(vazkii.botania.common.block.ModBlocks.alchemyCatalyst))
.save(consumer, LibBlockNames.DIMENSION_CATALYST);
ShapedRecipeBuilder.shaped(ModBlocks.POWER_FRAME.get())
.pattern("aaa")
.pattern("gxg")
.pattern("aaa")
.define('x', vazkii.botania.common.block.ModBlocks.livingrock)
.define('a', ModTags.Items.INGOTS_MANASTEEL)
.define('g', vazkii.botania.common.item.ModItems.pixieDust)
.group(MODID)
.unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(vazkii.botania.common.item.ModItems.pixieDust))
.save(consumer, LibBlockNames.POWER_FRAME);
ShapedRecipeBuilder.shaped(ModItems.PEACE_AMULET.get())
.pattern(" a ")
.pattern("axa")

View File

@ -8,6 +8,7 @@ import net.minecraft.data.DataGenerator;
import net.minecraft.data.recipes.FinishedRecipe;
import net.minecraft.data.recipes.RecipeProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;
@ -33,8 +34,9 @@ public class ModManaInfusionRecipes extends RecipeProvider
{
consumer.accept(new ManaInfusion(idFor(LibItemNames.NIGHTMARE_FUEL), new ItemStack(ModItems.NIGHTMARE_FUEL.get()), Ingredient.of(Items.COAL), 1000));
consumer.accept(new ManaInfusion(idFor(LibItemNames.LIVINGWOOD_SHORTBOW), new ItemStack(ModItems.LIVINGWOOD_SHORTBOW.get()), Ingredient.of(vazkii.botania.common.item.ModItems.livingwoodBow), 2000));
consumer.accept(new ManaInfusion(idFor(LibItemNames.MANA_SHORTARROW), new ItemStack(ModItems.MANA_SHORTARROW.get()), Ingredient.of(ModItems.MANA_SHORTARROW.get()), 100));
consumer.accept(new ManaInfusion(idFor(LibItemNames.MANA_SHORTARROW), new ItemStack(ModItems.MANA_SHORTARROW.get()), Ingredient.of(ItemTags.ARROWS), 100));
consumer.accept(new ManaInfusion(idFor(LibItemNames.FRIED_CHICKEN), new ItemStack(ModItems.FRIED_CHICKEN.get()), Ingredient.of(Items.COOKED_CHICKEN), 600));
consumer.accept(new ManaInfusion(idFor(LibItemNames.MINI_TORNADO_ROD), new ItemStack(ModItems.MINI_TORNADO_ROD.get()), Ingredient.of(vazkii.botania.common.item.ModItems.tornadoRod), 500));
consumer.accept(ManaInfusion.dimension(idFor("enderpearl"), new ItemStack(Items.ENDER_PEARL), Ingredient.of(Items.DIAMOND), 20000));
consumer.accept(ManaInfusion.dimension(idFor("shulker_shell"), new ItemStack(Items.SHULKER_SHELL), Ingredient.of(Items.DIAMOND_HORSE_ARMOR), 20000));

View File

@ -88,6 +88,8 @@ public class ModPetalRecipes extends RecipeProvider
Ingredient manaPowder = Ingredient.of(ModItems.manaPowder);
Ingredient gaiaSpirit = Ingredient.of(ModItems.lifeEssence);
Ingredient spirit_frag = Ingredient.of(chick.extrabotany.common.ModItems.SPIRIT_FRAG.get());
consumer.accept(make(ModSubtiles.sunshinelily, yellow, yellow, yellow, white));
consumer.accept(make(ModSubtiles.moonlightlily, red, red, red, white));
consumer.accept(make(ModSubtiles.omniviolet, blue, blue, purple, purple, runeMana, runeSpring, runeLust));
@ -97,7 +99,7 @@ public class ModPetalRecipes extends RecipeProvider
consumer.accept(make(ModSubtiles.bloodyenchantress, red, red, red, red, runeFire, runeSummer, runeWrath));
consumer.accept(make(ModSubtiles.serenitian, purple, purple, blue, blue, gaiaSpirit, runeMana, runeSloth, runeGreed, redstoneRoot));
consumer.accept(make(ModSubtiles.annoying, purple, purple, blue, blue, gaiaSpirit, runeMana, runeSloth, runeGreed, redstoneRoot));
consumer.accept(make(ModSubtiles.annoying, green,pink,pink,white,white,runeMana,spirit_frag));
}

View File

@ -0,0 +1,53 @@
package chick.extrabotany.forge;
import chick.extrabotany.common.blocks.ModSubtiles;
import chick.extrabotany.common.blocks.ModTiles;
import com.google.common.base.Suppliers;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import vazkii.botania.api.BotaniaForgeClientCapabilities;
import vazkii.botania.api.block.IWandHUD;
import vazkii.botania.forge.CapabilityUtil;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;
import static vazkii.botania.common.lib.ResourceLocationHelper.prefix;
public class ClientCapabilityInit
{
private static final Supplier<Map<BlockEntityType<?>, Function<BlockEntity, IWandHUD>>> WAND_HUD = Suppliers.memoize(() ->
{
var ret = new IdentityHashMap<BlockEntityType<?>, Function<BlockEntity, IWandHUD>>();
ModTiles.registerWandHudCaps((factory, types) ->
{
for (var type : types)
{
ret.put(type, factory);
}
});
ModSubtiles.registerWandHudCaps((factory, types) ->
{
for (var type : types)
{
ret.put(type, factory);
}
});
return Collections.unmodifiableMap(ret);
});
public static void attachBlockEntityCaps(AttachCapabilitiesEvent<BlockEntity> e)
{
var be = e.getObject();
var makeWandHud = WAND_HUD.get().get(be.getType());
if (makeWandHud != null)
{
e.addCapability(prefix("wand_hud"),
CapabilityUtil.makeProvider(BotaniaForgeClientCapabilities.WAND_HUD, makeWandHud.apply(be)));
}
}
}

View File

@ -1,13 +1,15 @@
package chick.extrabotany.forge.client;
package chick.extrabotany.forge;
import chick.extrabotany.ExtraBotany;
import chick.extrabotany.api.cap.ExtraBotanyCapabilities;
import chick.extrabotany.api.cap.IPassiveFlowerCap;
import chick.extrabotany.common.ModItems;
import chick.extrabotany.common.baubles.NatureOrb;
import chick.extrabotany.common.baubles.relic.MoonPendant;
import chick.extrabotany.common.baubles.relic.SagesManaRing;
import chick.extrabotany.common.baubles.relic.SunRing;
import chick.extrabotany.common.blocks.ModSubtiles;
import chick.extrabotany.common.blocks.ModTiles;
import chick.extrabotany.common.tools.weapons.*;
import chick.extrabotany.common.tools.weapons.ranged.Failnaught;
import chick.extrabotany.forge.impl.IPassiveFlowerCapImpl;
@ -23,6 +25,7 @@ import vazkii.botania.api.BotaniaForgeClientCapabilities;
import vazkii.botania.api.block.IWandHUD;
import vazkii.botania.api.item.IRelic;
import vazkii.botania.api.mana.IManaItem;
import vazkii.botania.common.item.equipment.bauble.ItemManaRing;
import vazkii.botania.forge.CapabilityUtil;
import java.util.Collections;
@ -33,11 +36,14 @@ import java.util.function.Supplier;
import static vazkii.botania.common.lib.ResourceLocationHelper.prefix;
public class CapabilityInit
public class CommonCapabilityInit
{
private static final Supplier<Map<Item, Function<ItemStack, IManaItem>>> MANA_ITEM = Suppliers.memoize(() -> Map.of(
ModItems.SAGES_MANA_RING.get(), SagesManaRing.GreaterManaItem::new
));
private static final Supplier<Map<Item, Function<ItemStack, IManaItem>>> NATURE_ORB = Suppliers.memoize(() -> Map.of(
ModItems.NATURE_ORB.get(), ItemManaRing.ManaItem::new
));
private static final Supplier<Map<Item, Function<ItemStack, IRelic>>> RELIC = Suppliers.memoize(() -> Map.of(
ModItems.TRUE_TERRA_BLADE.get(), TrueTerraBlade::makeRelic,
@ -65,6 +71,13 @@ public class CapabilityInit
CapabilityUtil.makeProvider(BotaniaForgeCapabilities.MANA_ITEM, makeManaItem.apply(stack)));
}
var makeNatureOrb = NATURE_ORB.get().get(stack.getItem());
if (makeNatureOrb != null)
{
e.addCapability(new ResourceLocation(ExtraBotany.MODID, "nature_orb"),
CapabilityUtil.makeProvider(ExtraBotanyCapabilities.NATURE_ORB, makeNatureOrb.apply(stack)));
}
var makeRelic = RELIC.get().get(stack.getItem());
if (makeRelic != null)
{
@ -73,19 +86,6 @@ public class CapabilityInit
}
}
private static final Supplier<Map<BlockEntityType<?>, Function<BlockEntity, IWandHUD>>> WAND_HUD = Suppliers.memoize(() ->
{
var ret = new IdentityHashMap<BlockEntityType<?>, Function<BlockEntity, IWandHUD>>();
ModSubtiles.registerWandHudCaps((factory, types) ->
{
for (var type : types)
{
ret.put(type, factory);
}
});
return Collections.unmodifiableMap(ret);
});
public static final Supplier<Map<BlockEntityType<?>, Function<BlockEntity, IPassiveFlowerCap>>> PASSIVE_FLOWER = Suppliers.memoize(() -> Map.of(
vazkii.botania.common.block.ModSubtiles.HYDROANGEAS, IPassiveFlowerCapImpl::new,
ModSubtiles.SUNSHINELILY, IPassiveFlowerCapImpl::new,
@ -101,13 +101,6 @@ public class CapabilityInit
{
var be = e.getObject();
var makeWandHud = WAND_HUD.get().get(be.getType());
if (makeWandHud != null)
{
e.addCapability(prefix("wand_hud"),
CapabilityUtil.makeProvider(BotaniaForgeClientCapabilities.WAND_HUD, makeWandHud.apply(be)));
}
var passiveFlower = PASSIVE_FLOWER.get().get(be.getType());
if (passiveFlower != null)
{

View File

@ -1,34 +1,23 @@
package chick.extrabotany.forge;
import chick.extrabotany.ExtraBotany;
import chick.extrabotany.common.ModBlocks;
import chick.extrabotany.common.ModItemProperties;
import chick.extrabotany.common.blocks.tile.TileDimensionCatalyst;
import chick.extrabotany.common.loots.ModLootModifiers;
import chick.extrabotany.forge.client.CapabilityInit;
import chick.extrabotany.forge.client.EntityRendererInit;
import chick.extrabotany.forge.client.model.MiscellaneousIcons;
import chick.extrabotany.forge.client.model.LayerDefinitions;
import chick.extrabotany.forge.client.render.ColorHandler;
import chick.extrabotany.network.NetworkHandler;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.core.Registry;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ColorHandlerEvent;
import net.minecraftforge.client.event.EntityRenderersEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import vazkii.patchouli.api.PatchouliAPI;
@Mod.EventBusSubscriber(modid = ExtraBotany.MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class ForgeClientInitializer
@ -43,6 +32,7 @@ public class ForgeClientInitializer
ModItemProperties.init((item, id, prop) -> ItemProperties.register(item.asItem(), id, prop));
MinecraftForge.EVENT_BUS.addGenericListener(BlockEntity.class, ClientCapabilityInit::attachBlockEntityCaps);
}
@SubscribeEvent

View File

@ -7,32 +7,24 @@ import chick.extrabotany.common.blocks.ModSubtiles;
import chick.extrabotany.common.blocks.ModTiles;
import chick.extrabotany.common.blocks.tile.TileDimensionCatalyst;
import chick.extrabotany.common.brews.ModBrews;
import chick.extrabotany.common.loots.ModLootModifiers;
import chick.extrabotany.common.tools.weapons.SwordRelicBase;
import chick.extrabotany.forge.client.CapabilityInit;
import chick.extrabotany.network.NetworkHandler;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.event.entity.player.AttackEntityEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
import vazkii.botania.common.item.equipment.bauble.ItemFlightTiara;
import vazkii.patchouli.api.PatchouliAPI;
import java.util.function.BiConsumer;
@ -53,8 +45,8 @@ public class ForgeCommonInitializer
{
IEventBus bus = MinecraftForge.EVENT_BUS;
bus.addGenericListener(BlockEntity.class, CapabilityInit::attachBlockEntityCaps);
bus.addGenericListener(ItemStack.class, CapabilityInit::attachItemStackCaps);
bus.addGenericListener(BlockEntity.class, CommonCapabilityInit::attachBlockEntityCaps);
bus.addGenericListener(ItemStack.class, CommonCapabilityInit::attachItemStackCaps);
NetworkHandler.registerMessage();
bus.addListener((PlayerEvent.PlayerLoggedOutEvent e) -> CoreGod.playerLoggedOut((ServerPlayer) e.getPlayer()));

View File

@ -1,11 +1,14 @@
package chick.extrabotany.forge.client;
import chick.extrabotany.ExtraBotany;
import chick.extrabotany.common.ModBlocks;
import chick.extrabotany.common.ModEntities;
import chick.extrabotany.common.blocks.ModTiles;
import chick.extrabotany.common.blocks.PowerFrame;
import chick.extrabotany.common.libs.LibBlockNames;
import chick.extrabotany.forge.client.render.entity.*;
import chick.extrabotany.forge.client.render.tile.RenderTileDimension;
import chick.extrabotany.forge.client.render.tile.RenderTilePowerFrame;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.LightningBoltRenderer;
@ -53,7 +56,7 @@ public final class EntityRendererInit
public static void registerBlockEntityRenderers(vazkii.botania.client.render.entity.EntityRenderers.BERConsumer consumer)
{
consumer.register(ModTiles.DIMENSION_CATALYST, RenderTileDimension::new);
consumer.register(ModTiles.POWER_FRAME, RenderTileDimension::new);
consumer.register(ModTiles.POWER_FRAME, RenderTilePowerFrame::new);
//Not Safe, But useful
Registry.BLOCK_ENTITY_TYPE.stream()
.filter(b -> b.getRegistryName().getNamespace().equals(ExtraBotany.MODID))
@ -69,6 +72,9 @@ public final class EntityRendererInit
.forEach(b ->
{
if (b instanceof BlockSpecialFlower)
{
setRenderLayer(b, RenderType.cutout());
} else if (b instanceof PowerFrame)
{
setRenderLayer(b, RenderType.cutout());
}

View File

@ -0,0 +1,36 @@
package chick.extrabotany.forge.client.render.tile;
import chick.extrabotany.common.blocks.tile.TilePowerFrame;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.item.ItemStack;
import vazkii.botania.client.core.handler.ClientTickHandler;
public class RenderTilePowerFrame implements BlockEntityRenderer<TilePowerFrame>
{
public RenderTilePowerFrame(BlockEntityRendererProvider.Context manager)
{
super();
}
@Override
public void render(TilePowerFrame tile, float partialTicks, PoseStack ms, MultiBufferSource buffers, int light, int overlay)
{
ms.pushPose();
ms.translate(0.5, 0.5, 0.5);
boolean hasItem = !tile.getItemHandler().isEmpty();
if (hasItem)
{
ms.mulPose(Vector3f.YP.rotationDegrees(ClientTickHandler.ticksInGame * 0.5F));
ItemStack stack = tile.getItemHandler().getItem(0);
Minecraft.getInstance().getItemRenderer()
.renderStatic(stack, ItemTransforms.TransformType.NONE, light, overlay, ms, buffers, 0);
}
ms.popPose();
}
}

View File

@ -4,11 +4,13 @@ import chick.extrabotany.ExtraBotany;
import chick.extrabotany.api.cap.ExtraBotanyCapabilities;
import chick.extrabotany.api.cap.IPassiveFlowerCap;
import chick.extrabotany.xplat.IXplatAbstractions;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.loading.FMLLoader;
import org.jetbrains.annotations.Nullable;
import vazkii.botania.api.mana.IManaItem;
public class ForgeXplatImpl implements IXplatAbstractions
{
@ -49,4 +51,11 @@ public class ForgeXplatImpl implements IXplatAbstractions
return blockEntity.getCapability(ExtraBotanyCapabilities.PASSIVE_FLOWER).orElse(null);
}
@Nullable
@Override
public IManaItem findNatureOrb(ItemStack stack)
{
return stack.getCapability(ExtraBotanyCapabilities.NATURE_ORB).orElse(null);
}
}

View File

@ -2,7 +2,9 @@ package chick.extrabotany.xplat;
import chick.extrabotany.ExtraBotany;
import chick.extrabotany.api.cap.IPassiveFlowerCap;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import vazkii.botania.api.mana.IManaItem;
import javax.annotation.Nullable;
import java.util.ServiceLoader;
@ -32,6 +34,9 @@ public interface IXplatAbstractions
@Nullable
IPassiveFlowerCap findPassiveFlower(BlockEntity blockEntity);
@Nullable
IManaItem findNatureOrb(ItemStack stack);
IXplatAbstractions INSTANCE = find();
private static IXplatAbstractions find()

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "extrabotany:block/power_frame"
}
}
}

View File

@ -0,0 +1,203 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"textures": {
"0": "botania:block/manasteel_block",
"1": "botania:block/livingrock",
"particle": "botania:block/livingrock"
},
"elements": [
{
"name": "cube12",
"from": [15, 15, 1],
"to": [16, 16, 15],
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#0"},
"east": {"uv": [0, 0, 14, 1], "texture": "#0"},
"south": {"uv": [0, 0, 1, 1], "texture": "#0"},
"west": {"uv": [0, 0, 14, 1], "texture": "#0"},
"up": {"uv": [0, 0, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 14], "texture": "#0"}
}
},
{
"name": "cube11",
"from": [0, 15, 1],
"to": [1, 16, 15],
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#0"},
"east": {"uv": [0, 0, 14, 1], "texture": "#0"},
"south": {"uv": [0, 0, 1, 1], "texture": "#0"},
"west": {"uv": [0, 0, 14, 1], "texture": "#0"},
"up": {"uv": [0, 0, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 14], "texture": "#0"}
}
},
{
"name": "cube10",
"from": [0, 15, 0],
"to": [16, 16, 1],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"name": "cube9",
"from": [0, 15, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"name": "cube8",
"from": [15, 1, 15],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1, 14], "texture": "#0"},
"east": {"uv": [0, 0, 1, 14], "texture": "#0"},
"south": {"uv": [0, 0, 1, 14], "texture": "#0"},
"west": {"uv": [0, 0, 1, 14], "texture": "#0"},
"up": {"uv": [0, 0, 1, 1], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"name": "cube7",
"from": [15, 1, 0],
"to": [16, 15, 1],
"faces": {
"north": {"uv": [0, 0, 1, 14], "texture": "#0"},
"east": {"uv": [0, 0, 1, 14], "texture": "#0"},
"south": {"uv": [0, 0, 1, 14], "texture": "#0"},
"west": {"uv": [0, 0, 1, 14], "texture": "#0"},
"up": {"uv": [0, 0, 1, 1], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"name": "cube6",
"from": [0, 1, 15],
"to": [1, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1, 14], "texture": "#0"},
"east": {"uv": [0, 0, 1, 14], "texture": "#0"},
"south": {"uv": [0, 0, 1, 14], "texture": "#0"},
"west": {"uv": [0, 0, 1, 14], "texture": "#0"},
"up": {"uv": [0, 0, 1, 1], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"name": "cube5",
"from": [0, 1, 0],
"to": [1, 15, 1],
"faces": {
"north": {"uv": [0, 0, 1, 14], "texture": "#0"},
"east": {"uv": [0, 0, 1, 14], "texture": "#0"},
"south": {"uv": [0, 0, 1, 14], "texture": "#0"},
"west": {"uv": [0, 0, 1, 14], "texture": "#0"},
"up": {"uv": [0, 0, 1, 1], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"name": "cube4",
"from": [15, 0, 1],
"to": [16, 1, 15],
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#0"},
"east": {"uv": [0, 0, 14, 1], "texture": "#0"},
"south": {"uv": [0, 0, 1, 1], "texture": "#0"},
"west": {"uv": [0, 0, 14, 1], "texture": "#0"},
"up": {"uv": [0, 0, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 14], "texture": "#0"}
}
},
{
"name": "cube3",
"from": [0, 0, 1],
"to": [1, 1, 15],
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#0"},
"east": {"uv": [0, 0, 14, 1], "texture": "#0"},
"south": {"uv": [0, 0, 1, 1], "texture": "#0"},
"west": {"uv": [0, 0, 14, 1], "texture": "#0"},
"up": {"uv": [0, 0, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 14], "texture": "#0"}
}
},
{
"name": "cube2",
"from": [0, 0, 0],
"to": [16, 1, 1],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"name": "cube1",
"from": [0, 0, 15],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"name": "inside1",
"from": [7, 3, 7],
"to": [9, 4, 9],
"faces": {
"north": {"uv": [0, 0, 2, 1], "texture": "#1"},
"east": {"uv": [0, 0, 2, 1], "texture": "#1"},
"south": {"uv": [0, 0, 2, 1], "texture": "#1"},
"west": {"uv": [0, 0, 2, 1], "texture": "#1"},
"up": {"uv": [0, 0, 2, 2], "texture": "#0"},
"down": {"uv": [0, 0, 2, 2], "texture": "#1"}
}
},
{
"name": "inside2",
"from": [6, 4, 6],
"to": [10, 6, 10],
"faces": {
"north": {"uv": [0, 0, 4, 2], "texture": "#1"},
"east": {"uv": [0, 0, 4, 2], "texture": "#1"},
"south": {"uv": [0, 0, 4, 2], "texture": "#1"},
"west": {"uv": [0, 0, 4, 2], "texture": "#1"},
"up": {"uv": [0, 0, 4, 4], "texture": "#1"},
"down": {"uv": [0, 0, 4, 4], "texture": "#1"}
}
}
],
"groups": [
{
"name": "frame",
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
},
{
"name": "inside",
"children": [12, 13]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

View File

@ -0,0 +1,3 @@
{
"animation": { }
}

View File

@ -0,0 +1,50 @@
{
"name": "extrabotany.entry.nature_orb",
"category": "extrabotany:extrabotany",
"icon": "extrabotany:nature_orb",
"entry_color": "aa00",
"advancement": "extrabotany:main/nightmarefuel_eat_lexicon",
"pages": [
{
"type": "text",
"text": "extrabotany.page.nature_orb0"
},
{
"type": "crafting",
"text": "extrabotany.page.nature_orb1",
"recipe": "minecraft:nature_orb"
},
{
"type": "multiblock",
"multiblock": {
"pattern": [
[
"P_____P",
"_______",
"_______",
"_______",
"_______",
"_______",
"P_____P"
],
[
"M_____M",
"_______",
"_______",
"___0___",
"_______",
"_______",
"M_____M"
]
],
"mapping": {
"P": "botania:natura_pylon",
"0": "extrabotany:power_frame",
"M": "botania:mana_pool"
},
"symmetrical": true
},
"text": "extrabotany.page.nature_orb2"
}
]
}

View File

@ -0,0 +1,18 @@
{
"name": "extrabotany.entry.power_frame",
"category": "extrabotany:extrabotany",
"icon": "extrabotany:power_frame",
"entry_color": "aa00",
"advancement": "extrabotany:main/nightmarefuel_eat_lexicon",
"pages": [
{
"type": "text",
"text": "extrabotany.page.power_frame0"
},
{
"type": "crafting",
"text": "extrabotany.page.power_frame1",
"recipe": "minecraft:power_frame"
}
]
}

View File

@ -30,7 +30,7 @@
{
"type": "botania:mana_infusion",
"text": "extrabotany.page.mini_item5",
"recipes": "extrabotany:mana_infusion/livingwood_shortbow"
"recipes": "extrabotany:mana_infusion/mini_tornado_rod"
}
]
}