diff --git a/build.gradle b/build.gradle index 6b501fe..20febf6 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,7 @@ neoForge { mappingsVersion = project.parchment_mappings_version minecraftVersion = project.parchment_minecraft_version } + runs { client { client() diff --git a/gradle.properties b/gradle.properties index d1fd21c..b4babab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,22 +4,18 @@ org.gradle.daemon=true org.gradle.parallel=true org.gradle.caching=true org.gradle.configuration-cache=true - # Mappings parchment_minecraft_version=1.21 parchment_mappings_version=2024.07.07 - # Dependencies minecraft_version=1.21 neo_version=21.0.114-beta - # neoforge.mods.toml minecraft_version_range=[1.21,1.21.1) neo_version_range=[21.0.0-beta,) mod_name=Farm Away loader_version_range=[4,) mod_license=MIT License - ## Mod Properties mod_id=farm_away mod_version=1.0.0 diff --git a/src/generated/resources/.cache/1cba2a4ea97c08bbb7e9a0946e9fca879999d8ed b/src/generated/resources/.cache/1cba2a4ea97c08bbb7e9a0946e9fca879999d8ed index 1b34f74..a37adf2 100644 --- a/src/generated/resources/.cache/1cba2a4ea97c08bbb7e9a0946e9fca879999d8ed +++ b/src/generated/resources/.cache/1cba2a4ea97c08bbb7e9a0946e9fca879999d8ed @@ -1,3 +1,4 @@ -// 1.21 2024-07-23T11:52:30.383586 Tags for minecraft:item mod id farm_away +// 1.21 2024-07-24T00:13:55.4829086 Tags for minecraft:item mod id farm_away 5e3f64321ddade1ae8829fe943feba3b9f76ec11 data/farm_away/tags/item/seeds/flame.json +fdd34af9f633905bed8dc3c5b61a7a971d6a65db data/farm_away/tags/item/seeds/shadow.json f2c6401609ba18572083a8acd9c36df9c6f2d8b3 data/minecraft/tags/item/hoes.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index b4bba76..8926af8 100644 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,10 +1,10 @@ -// 1.21 2024-07-23T11:49:14.7311475 Loot Tables +// 1.21 2024-07-24T00:13:55.4829086 Loot Tables d78dcb4ca293f403f71e600751afa26501965a0c data/farm_away/loot_table/blocks/andesite_farmland.json -32b259d41e082e5e39b80ff3046948f98782d239 data/farm_away/loot_table/blocks/blue_carrot.json +768f6f4fb8eecc9ebdea01000bf4dbe215e26e3b data/farm_away/loot_table/blocks/blues_carrot.json 62d20d426d2170f4a5ca07f5c0a9180217af781d data/farm_away/loot_table/blocks/diorite_farmland.json 90ebf4242c670220ff4184c48e674608f7062a1b data/farm_away/loot_table/blocks/end_stone_farmland.json -4c39f9b7eb18a1a902fe3f98d8a80b8619402ff6 data/farm_away/loot_table/blocks/explosion_potato.json +5c50eec0b83b6070069ec7d28a6c03d0bc0c8ad1 data/farm_away/loot_table/blocks/explosion_potato.json e78742fc14d00a1b606b94ae5979096ab83624b0 data/farm_away/loot_table/blocks/granite_farmland.json e27dbf3d23b7817854c5c7bb6a0113ae898ee82a data/farm_away/loot_table/blocks/netherrack_farmland.json f4284ce151049f900f54197d3240eed097981bcb data/farm_away/loot_table/blocks/stone_farmland.json -ad9b79b77e4e5f6b00a2578f31bd0f9169fe90f4 data/farm_away/loot_table/blocks/strong_carrot.json +ae35bb5251d1e5395d25d9de14e1eae94164fadb data/farm_away/loot_table/blocks/strong_carrot.json diff --git a/src/generated/resources/.cache/6c8ad8cd4f4367627e09465effa383ea2f8c6d42 b/src/generated/resources/.cache/6c8ad8cd4f4367627e09465effa383ea2f8c6d42 index 11a9112..661b999 100644 --- a/src/generated/resources/.cache/6c8ad8cd4f4367627e09465effa383ea2f8c6d42 +++ b/src/generated/resources/.cache/6c8ad8cd4f4367627e09465effa383ea2f8c6d42 @@ -1,2 +1,2 @@ -// 1.21 2024-07-22T16:02:38.5372123 Languages: zh_cn for mod: farm_away -f5745c89358b8036e77de38fbe482d5b0a4c5ed7 assets/farm_away/lang/zh_cn.json +// 1.21 2024-07-24T00:41:26.4764153 Languages: zh_cn for mod: farm_away +483189cccc38db73980dee8e16da5e43d4d83e8c assets/farm_away/lang/zh_cn.json diff --git a/src/generated/resources/.cache/770c5d9369722c93210da901089ec9e491eec8dc b/src/generated/resources/.cache/770c5d9369722c93210da901089ec9e491eec8dc index 4c1dd24..a5c5183 100644 --- a/src/generated/resources/.cache/770c5d9369722c93210da901089ec9e491eec8dc +++ b/src/generated/resources/.cache/770c5d9369722c93210da901089ec9e491eec8dc @@ -1,6 +1,6 @@ -// 1.21 2024-07-23T11:48:41.5884329 Tags for minecraft:block mod id farm_away +// 1.21 2024-07-24T00:13:55.4829086 Tags for minecraft:block mod id farm_away e8d9c8ae63868fdfe355432e839d26e1ba3519d3 data/farm_away/tags/block/crops/flame.json -f39287f63cbd57684f58b087e6b63eaeea15cef0 data/farm_away/tags/block/crops/shadow.json +fdd34af9f633905bed8dc3c5b61a7a971d6a65db data/farm_away/tags/block/crops/shadow.json c1826168e18fa3a5776d3046d94c9036e7cc55fe data/farm_away/tags/block/farmlands.json 700b82f15080a74788f4041b7c6cf7a16f5b4827 data/farm_away/tags/block/farmlands/flame.json bc237eb5c22e64aa55de6752af397805b6441585 data/farm_away/tags/block/farmlands/ray.json diff --git a/src/generated/resources/.cache/97c44fc6731b48025d80400deb8a6d51939cc88a b/src/generated/resources/.cache/97c44fc6731b48025d80400deb8a6d51939cc88a index 2d93ac8..4f65e7d 100644 --- a/src/generated/resources/.cache/97c44fc6731b48025d80400deb8a6d51939cc88a +++ b/src/generated/resources/.cache/97c44fc6731b48025d80400deb8a6d51939cc88a @@ -1,19 +1,34 @@ -// 1.21 2024-07-22T15:52:14.7438012 Block States: farm_away +// 1.21 2024-07-24T00:17:51.59297 Block States: farm_away e5e4f9b94baac710e56868dff157813854dd0f61 assets/farm_away/blockstates/andesite_farmland.json +3abdc98d6838fb40c94a5206279b5c7624b99d1d assets/farm_away/blockstates/blues_carrot.json fea064d02cce89c98e187ac02dbc4ddd075ce22f assets/farm_away/blockstates/diorite_farmland.json 8fa8370a85668a281fd15c58a51eb3326b161cee assets/farm_away/blockstates/end_stone_farmland.json +93fa9891972b527b0e9400cf4768b194f3d38f3a assets/farm_away/blockstates/explosion_potato.json f319b0a817f66fb75ead2055f3125df706fcb814 assets/farm_away/blockstates/granite_farmland.json d022067839ebb9d009ffd79a1bcfbd036ef6a4da assets/farm_away/blockstates/netherrack_farmland.json 989811828abde6241583bb1f9ae65541956fff08 assets/farm_away/blockstates/stone_farmland.json +c8c033ef098c39c358fee8be9d034f03b167e209 assets/farm_away/blockstates/strong_carrot.json a1351853de09e07f9cb08197a4e358104ed14351 assets/farm_away/models/block/andesite_farmland.json 1fecfcc6f87baed6d1a7fe903412a9b00ab06dfa assets/farm_away/models/block/andesite_farmland_moist.json +05290c1ecb802834416098305fc7f7d222a4b8ee assets/farm_away/models/block/blues_carrot_stage0.json +988f9bb0e6fe64f2fef5a64fb11a4459cee30437 assets/farm_away/models/block/blues_carrot_stage1.json +dc194cacc42b1319648d7768e4c0b9344e2e0703 assets/farm_away/models/block/blues_carrot_stage2.json +90806b39a1502f288b41c56130d62e74d625f2f1 assets/farm_away/models/block/blues_carrot_stage3.json d7f2e57877b42bb5396d3d6cb17ea75e7dae219b assets/farm_away/models/block/diorite_farmland.json 3e961f728fdb54834b4e1465014b403958d9119d assets/farm_away/models/block/diorite_farmland_moist.json d8823362ec97e152028dff7234b40bdfe4989606 assets/farm_away/models/block/end_stone_farmland.json 5b8baad2bf1010174171a016b2f4650aae99f5dc assets/farm_away/models/block/end_stone_farmland_moist.json +0b81106278081874266b46f225e457d3330968cc assets/farm_away/models/block/explosion_potato_stage0.json +3eede16e1cf68d9e80385178bb95eeaa99a9efef assets/farm_away/models/block/explosion_potato_stage1.json +f28779d76bfd6cbd7dce69355259ef969d3f7ef6 assets/farm_away/models/block/explosion_potato_stage2.json +363e400a28a5e3357f21a85504243a15e61a019b assets/farm_away/models/block/explosion_potato_stage3.json 27a6d0a8372b1ccee875dd58959c09b1482a1249 assets/farm_away/models/block/granite_farmland.json ef89b2e2026f221f60ab0000c8b0a5afae35c6ae assets/farm_away/models/block/granite_farmland_moist.json d3ba84d483e70dd028af566464decab5f66f526d assets/farm_away/models/block/netherrack_farmland.json a8e0e260be8b6ad2cbb33732324ba7fde4a1ddc0 assets/farm_away/models/block/netherrack_farmland_moist.json c2e38ec902d3e2173af3f89cc06d0465662c16a1 assets/farm_away/models/block/stone_farmland.json 0fe30ebcfab5bc4e7d7bb6263cd7cabcc454a51f assets/farm_away/models/block/stone_farmland_moist.json +8f39111520f347d346a52307a644b7c50ab6ac8a assets/farm_away/models/block/strong_carrot_stage0.json +494dd5f406451458a185bc73eb25abd04a0ee161 assets/farm_away/models/block/strong_carrot_stage1.json +e299cb6370ea1f4cf1cf9d73792bd36984b14baa assets/farm_away/models/block/strong_carrot_stage2.json +c77084c22b640ed604d2f2c5800ac8674d28e5da assets/farm_away/models/block/strong_carrot_stage3.json diff --git a/src/generated/resources/.cache/e98718e6a5c8818fc5442648d1cdaaf3333dca6a b/src/generated/resources/.cache/e98718e6a5c8818fc5442648d1cdaaf3333dca6a index 42bc0c5..6123f24 100644 --- a/src/generated/resources/.cache/e98718e6a5c8818fc5442648d1cdaaf3333dca6a +++ b/src/generated/resources/.cache/e98718e6a5c8818fc5442648d1cdaaf3333dca6a @@ -1,5 +1,6 @@ -// 1.21 2024-07-23T11:48:41.5704317 Item Models: farm_away +// 1.21 2024-07-24T00:13:55.4829086 Item Models: farm_away 2ad32db58c0fa499a74244b0a93d24376c839f8f assets/farm_away/models/item/andesite_farmland.json +b2a7e655df68a186d639dec88988ceae42600755 assets/farm_away/models/item/blues_carrot.json eedd987f394f89efed262824833a3b809aa1d980 assets/farm_away/models/item/diorite_farmland.json dd2330312c0b5631c30a18741f3413c1a362a5e1 assets/farm_away/models/item/end_stone_farmland.json 809e861231db4be33286777bc534063313376088 assets/farm_away/models/item/enhanced_hoe.json diff --git a/src/generated/resources/.cache/ed2129706b7449efda6916727cc703dd0ac6a2ce b/src/generated/resources/.cache/ed2129706b7449efda6916727cc703dd0ac6a2ce index 7da6aa8..75d0b48 100644 --- a/src/generated/resources/.cache/ed2129706b7449efda6916727cc703dd0ac6a2ce +++ b/src/generated/resources/.cache/ed2129706b7449efda6916727cc703dd0ac6a2ce @@ -1,2 +1,2 @@ -// 1.21 2024-07-22T16:02:38.535697 Languages: en_us for mod: farm_away -e4cafbf8f653033724c05828e9e0fdfbbae8cd41 assets/farm_away/lang/en_us.json +// 1.21 2024-07-24T00:41:26.4764153 Languages: en_us for mod: farm_away +a089602bc83e0efc2cff81deb9c6606ac9f68b5f assets/farm_away/lang/en_us.json diff --git a/src/generated/resources/assets/farm_away/blockstates/blues_carrot.json b/src/generated/resources/assets/farm_away/blockstates/blues_carrot.json new file mode 100644 index 0000000..d535cd0 --- /dev/null +++ b/src/generated/resources/assets/farm_away/blockstates/blues_carrot.json @@ -0,0 +1,52 @@ +{ + "variants": { + "age=0": { + "model": "farm_away:block/blues_carrot_stage0" + }, + "age=1": { + "model": "farm_away:block/blues_carrot_stage0" + }, + "age=10": { + "model": "farm_away:block/blues_carrot_stage2" + }, + "age=11": { + "model": "farm_away:block/blues_carrot_stage2" + }, + "age=12": { + "model": "farm_away:block/blues_carrot_stage2" + }, + "age=13": { + "model": "farm_away:block/blues_carrot_stage2" + }, + "age=14": { + "model": "farm_away:block/blues_carrot_stage2" + }, + "age=15": { + "model": "farm_away:block/blues_carrot_stage3" + }, + "age=2": { + "model": "farm_away:block/blues_carrot_stage0" + }, + "age=3": { + "model": "farm_away:block/blues_carrot_stage0" + }, + "age=4": { + "model": "farm_away:block/blues_carrot_stage0" + }, + "age=5": { + "model": "farm_away:block/blues_carrot_stage1" + }, + "age=6": { + "model": "farm_away:block/blues_carrot_stage1" + }, + "age=7": { + "model": "farm_away:block/blues_carrot_stage1" + }, + "age=8": { + "model": "farm_away:block/blues_carrot_stage1" + }, + "age=9": { + "model": "farm_away:block/blues_carrot_stage1" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/blockstates/explosion_potato.json b/src/generated/resources/assets/farm_away/blockstates/explosion_potato.json new file mode 100644 index 0000000..de8b8d2 --- /dev/null +++ b/src/generated/resources/assets/farm_away/blockstates/explosion_potato.json @@ -0,0 +1,28 @@ +{ + "variants": { + "age=0": { + "model": "farm_away:block/explosion_potato_stage0" + }, + "age=1": { + "model": "farm_away:block/explosion_potato_stage0" + }, + "age=2": { + "model": "farm_away:block/explosion_potato_stage1" + }, + "age=3": { + "model": "farm_away:block/explosion_potato_stage1" + }, + "age=4": { + "model": "farm_away:block/explosion_potato_stage2" + }, + "age=5": { + "model": "farm_away:block/explosion_potato_stage2" + }, + "age=6": { + "model": "farm_away:block/explosion_potato_stage2" + }, + "age=7": { + "model": "farm_away:block/explosion_potato_stage3" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/blockstates/strong_carrot.json b/src/generated/resources/assets/farm_away/blockstates/strong_carrot.json new file mode 100644 index 0000000..2909f4e --- /dev/null +++ b/src/generated/resources/assets/farm_away/blockstates/strong_carrot.json @@ -0,0 +1,16 @@ +{ + "variants": { + "age=0": { + "model": "farm_away:block/strong_carrot_stage0" + }, + "age=1": { + "model": "farm_away:block/strong_carrot_stage1" + }, + "age=2": { + "model": "farm_away:block/strong_carrot_stage2" + }, + "age=3": { + "model": "farm_away:block/strong_carrot_stage3" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/lang/en_us.json b/src/generated/resources/assets/farm_away/lang/en_us.json index f52f977..305b67a 100644 --- a/src/generated/resources/assets/farm_away/lang/en_us.json +++ b/src/generated/resources/assets/farm_away/lang/en_us.json @@ -1,10 +1,15 @@ { "block.farm_away.andesite_farmland": "Andesite Farmland", + "block.farm_away.blues_carrot": "Blues Carrot", "block.farm_away.diorite_farmland": "Diorite Farmland", "block.farm_away.end_stone_farmland": "End Stone Farmland", + "block.farm_away.explosion_potato": "Explosion Potato", "block.farm_away.granite_farmland": "Granite Farmland", "block.farm_away.netherrack_farmland": "Netherrack Farmland", "block.farm_away.stone_farmland": "Stone Farmland", + "block.farm_away.strong_carrot": "Strong Carrot", + "effect.farm_away.blues": "Blues", + "entity.farm_away.explosion_potato": "Explosion Potato", "item.farm_away.enhanced_hoe": "Enhanced Hoe", "itemGroup.farm_away.main": "Farm Away" } \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/lang/zh_cn.json b/src/generated/resources/assets/farm_away/lang/zh_cn.json index 2f27c01..1943851 100644 --- a/src/generated/resources/assets/farm_away/lang/zh_cn.json +++ b/src/generated/resources/assets/farm_away/lang/zh_cn.json @@ -1,10 +1,15 @@ { "block.farm_away.andesite_farmland": "安山岩耕地", + "block.farm_away.blues_carrot": "蓝胡萝卜", "block.farm_away.diorite_farmland": "闪长岩耕地", "block.farm_away.end_stone_farmland": "末地石耕地", + "block.farm_away.explosion_potato": "爆炎土豆", "block.farm_away.granite_farmland": "花岗岩耕地", "block.farm_away.netherrack_farmland": "下界岩耕地", "block.farm_away.stone_farmland": "石耕地", + "block.farm_away.strong_carrot": "强力胡萝卜", + "effect.farm_away.blues": "蓝", + "entity.farm_away.explosion_potato": "爆炎土豆", "item.farm_away.enhanced_hoe": "强化锄", "itemGroup.farm_away.main": "田园巫术" } \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage0.json b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage0.json new file mode 100644 index 0000000..595a185 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/blues_carrot_stage0" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage1.json b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage1.json new file mode 100644 index 0000000..e7c64f2 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/blues_carrot_stage1" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage2.json b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage2.json new file mode 100644 index 0000000..31e9c1a --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/blues_carrot_stage2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage3.json b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage3.json new file mode 100644 index 0000000..de8a323 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/blues_carrot_stage3.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/blues_carrot_stage3" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage0.json b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage0.json new file mode 100644 index 0000000..ab0a295 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/explosion_potato_stage0" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage1.json b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage1.json new file mode 100644 index 0000000..1c4e824 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/explosion_potato_stage1" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage2.json b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage2.json new file mode 100644 index 0000000..59a574c --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/explosion_potato_stage2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage3.json b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage3.json new file mode 100644 index 0000000..0a4271a --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/explosion_potato_stage3.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/explosion_potato_stage3" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage0.json b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage0.json new file mode 100644 index 0000000..d9879a7 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/strong_carrot_stage0" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage1.json b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage1.json new file mode 100644 index 0000000..801276e --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/strong_carrot_stage1" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage2.json b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage2.json new file mode 100644 index 0000000..69fc484 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/strong_carrot_stage2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage3.json b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage3.json new file mode 100644 index 0000000..ffd1b10 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/block/strong_carrot_stage3.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "minecraft:cutout", + "textures": { + "crop": "farm_away:block/strong_carrot_stage3" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/farm_away/models/item/blues_carrot.json b/src/generated/resources/assets/farm_away/models/item/blues_carrot.json new file mode 100644 index 0000000..1efbf70 --- /dev/null +++ b/src/generated/resources/assets/farm_away/models/item/blues_carrot.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "farm_away:item/blues_carrot" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/farm_away/loot_table/blocks/blue_carrot.json b/src/generated/resources/data/farm_away/loot_table/blocks/blue_carrot.json deleted file mode 100644 index 603c403..0000000 --- a/src/generated/resources/data/farm_away/loot_table/blocks/blue_carrot.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "farm_away:explosion_potato" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "farm_away:blocks/blue_carrot" -} \ No newline at end of file diff --git a/src/generated/resources/data/farm_away/loot_table/blocks/blues_carrot.json b/src/generated/resources/data/farm_away/loot_table/blocks/blues_carrot.json new file mode 100644 index 0000000..8f70e79 --- /dev/null +++ b/src/generated/resources/data/farm_away/loot_table/blocks/blues_carrot.json @@ -0,0 +1,69 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "farm_away:blues_carrot", + "condition": "minecraft:block_state_property", + "properties": { + "age": "15" + } + } + ], + "name": "farm_away:blues_carrot" + }, + { + "type": "minecraft:item", + "name": "farm_away:blues_carrot" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "block": "farm_away:blues_carrot", + "condition": "minecraft:block_state_property", + "properties": { + "age": "15" + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "function": "minecraft:apply_bonus", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ], + "name": "farm_away:blues_carrot" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "farm_away:blocks/blues_carrot" +} \ No newline at end of file diff --git a/src/generated/resources/data/farm_away/loot_table/blocks/explosion_potato.json b/src/generated/resources/data/farm_away/loot_table/blocks/explosion_potato.json index f37ea1e..8c52c03 100644 --- a/src/generated/resources/data/farm_away/loot_table/blocks/explosion_potato.json +++ b/src/generated/resources/data/farm_away/loot_table/blocks/explosion_potato.json @@ -1,16 +1,64 @@ { "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "farm_away:explosion_potato", + "condition": "minecraft:block_state_property", + "properties": { + "age": "7" + } + } + ], + "name": "farm_away:explosion_potato" + }, + { + "type": "minecraft:item", + "name": "farm_away:explosion_potato" + } + ] + } + ], + "rolls": 1.0 + }, { "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:survives_explosion" + "block": "farm_away:explosion_potato", + "condition": "minecraft:block_state_property", + "properties": { + "age": "7" + } } ], "entries": [ { "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "function": "minecraft:apply_bonus", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ], "name": "farm_away:explosion_potato" } ], diff --git a/src/generated/resources/data/farm_away/loot_table/blocks/strong_carrot.json b/src/generated/resources/data/farm_away/loot_table/blocks/strong_carrot.json index c29c398..42fd044 100644 --- a/src/generated/resources/data/farm_away/loot_table/blocks/strong_carrot.json +++ b/src/generated/resources/data/farm_away/loot_table/blocks/strong_carrot.json @@ -1,16 +1,64 @@ { "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "farm_away:strong_carrot", + "condition": "minecraft:block_state_property", + "properties": { + "age": "3" + } + } + ], + "name": "farm_away:strong_carrot" + }, + { + "type": "minecraft:item", + "name": "farm_away:strong_carrot" + } + ] + } + ], + "rolls": 1.0 + }, { "bonus_rolls": 0.0, "conditions": [ { - "condition": "minecraft:survives_explosion" + "block": "farm_away:strong_carrot", + "condition": "minecraft:block_state_property", + "properties": { + "age": "3" + } } ], "entries": [ { "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "function": "minecraft:apply_bonus", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ], "name": "farm_away:strong_carrot" } ], diff --git a/src/generated/resources/data/farm_away/tags/block/crops/shadow.json b/src/generated/resources/data/farm_away/tags/block/crops/shadow.json index 5daeaf5..aabd5d7 100644 --- a/src/generated/resources/data/farm_away/tags/block/crops/shadow.json +++ b/src/generated/resources/data/farm_away/tags/block/crops/shadow.json @@ -1,5 +1,5 @@ { "values": [ - "farm_away:blue_carrot" + "farm_away:blues_carrot" ] } \ No newline at end of file diff --git a/src/generated/resources/data/farm_away/tags/item/seeds/shadow.json b/src/generated/resources/data/farm_away/tags/item/seeds/shadow.json new file mode 100644 index 0000000..aabd5d7 --- /dev/null +++ b/src/generated/resources/data/farm_away/tags/item/seeds/shadow.json @@ -0,0 +1,5 @@ +{ + "values": [ + "farm_away:blues_carrot" + ] +} \ No newline at end of file diff --git a/src/main/java/ho/artisan/farmaway/FarmAway.java b/src/main/java/ho/artisan/farmaway/FarmAway.java index 5dc4b95..d635326 100644 --- a/src/main/java/ho/artisan/farmaway/FarmAway.java +++ b/src/main/java/ho/artisan/farmaway/FarmAway.java @@ -20,7 +20,7 @@ public FarmAway(IEventBus bus, ModContainer container) { FAItems.register(bus); FATabs.register(bus); FAEntities.register(bus); - FAEffects.register(bus); + FAMobEffects.register(bus); } public static ResourceLocation getResourceLocation(String path) { diff --git a/src/main/java/ho/artisan/farmaway/client/FAClientEvents.java b/src/main/java/ho/artisan/farmaway/client/event/FAClientEvents.java similarity index 83% rename from src/main/java/ho/artisan/farmaway/client/FAClientEvents.java rename to src/main/java/ho/artisan/farmaway/client/event/FAClientEvents.java index 320a601..0cd7ce9 100644 --- a/src/main/java/ho/artisan/farmaway/client/FAClientEvents.java +++ b/src/main/java/ho/artisan/farmaway/client/event/FAClientEvents.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.client; +package ho.artisan.farmaway.client.event; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FAEntities; @@ -13,7 +13,7 @@ @EventBusSubscriber(modid = FarmAway.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class FAClientEvents { @SubscribeEvent - public static void onRenderers(EntityRenderersEvent.RegisterRenderers event) { + private static void onRegisterRenderers(EntityRenderersEvent.RegisterRenderers event) { event.registerEntityRenderer(FAEntities.EXPLOSION_POTATO.get(), ThrownItemRenderer::new); } } diff --git a/src/main/java/ho/artisan/farmaway/common/FAEvents.java b/src/main/java/ho/artisan/farmaway/common/FAEvents.java deleted file mode 100644 index 8a3b2f0..0000000 --- a/src/main/java/ho/artisan/farmaway/common/FAEvents.java +++ /dev/null @@ -1,32 +0,0 @@ -package ho.artisan.farmaway.common; - -import ho.artisan.farmaway.FarmAway; -import ho.artisan.farmaway.common.registry.FAEffects; -import net.minecraft.util.RandomSource; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent; - -@EventBusSubscriber(modid = FarmAway.MOD_ID) -public class FAEvents { - @SubscribeEvent - public static void livingDamagePost(LivingIncomingDamageEvent event) { - int a = event.getEntity().getEffect(FAEffects.BLUES).getAmplifier(); - if (event.getEntity().hasEffect(FAEffects.BLUES)) { - int i = RandomSource.create().nextInt(0, 100); - if (a <= 6) { - if (i > 50 - a * 5) { - event.setAmount(0); - } else { - event.setAmount(event.getOriginalAmount() * 2); - } - } else { - if (i > 50 - 6 * 5) { - event.setAmount(0); - } else { - event.setAmount(event.getOriginalAmount() * 2); - } - } - } - } -} diff --git a/src/main/java/ho/artisan/farmaway/common/block/BluesCarrotBlock.java b/src/main/java/ho/artisan/farmaway/common/block/BluesCarrotBlock.java new file mode 100644 index 0000000..f6056b9 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/block/BluesCarrotBlock.java @@ -0,0 +1,49 @@ +package ho.artisan.farmaway.common.block; + +import com.mojang.serialization.MapCodec; +import ho.artisan.farmaway.common.registry.FAItems; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BluesCarrotBlock extends FACropBlock { + public static final MapCodec CODEC = simpleCodec(BluesCarrotBlock::new); + public static final IntegerProperty AGE = BlockStateProperties.AGE_15; + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{Block.box(0.0, 0.0, 0.0, 16.0, 2.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 4.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 6.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 8.0, 16.0)}; + + public MapCodec codec() { + return CODEC; + } + + public BluesCarrotBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + protected IntegerProperty getAgeProperty() { + return AGE; + } + + public int getMaxAge() { + return 15; + } + + protected ItemLike getBaseSeedId() { + return FAItems.BLUES_CARROT.get(); + } + + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(AGE); + } + + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE_BY_AGE[this.getAge(state) / 5]; + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/block/ExplosionPotatoBlock.java b/src/main/java/ho/artisan/farmaway/common/block/ExplosionPotatoBlock.java new file mode 100644 index 0000000..4cc8986 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/block/ExplosionPotatoBlock.java @@ -0,0 +1,33 @@ +package ho.artisan.farmaway.common.block; + +import com.mojang.serialization.MapCodec; +import ho.artisan.farmaway.common.registry.FAItems; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class ExplosionPotatoBlock extends FACropBlock { + public static final MapCodec CODEC = simpleCodec(ExplosionPotatoBlock::new); + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{Block.box(0.0, 0.0, 0.0, 16.0, 2.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 3.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 4.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 5.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 6.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 7.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 8.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 9.0, 16.0)}; + + public MapCodec codec() { + return CODEC; + } + + public ExplosionPotatoBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + protected ItemLike getBaseSeedId() { + return FAItems.EXPLOSION_POTATO.get(); + } + + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE_BY_AGE[this.getAge(state)]; + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/block/FACropBlock.java b/src/main/java/ho/artisan/farmaway/common/block/FACropBlock.java index f268913..0450523 100644 --- a/src/main/java/ho/artisan/farmaway/common/block/FACropBlock.java +++ b/src/main/java/ho/artisan/farmaway/common/block/FACropBlock.java @@ -2,34 +2,27 @@ import ho.artisan.farmaway.common.registry.FABlockTags; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.CropBlock; import net.minecraft.world.level.block.state.BlockState; public class FACropBlock extends CropBlock { - private final int max_age; - public FACropBlock(Properties properties, int max_age) { - super(properties); - this.max_age = max_age; - } + public FACropBlock(Properties properties) { + super(properties); + } - @Override - protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { - if (level.getBlockState(pos.below()).getBlock() instanceof FarmlandBlock farmland) { - return switch (farmland.getType()) { - case TERRA -> state.is(FABlockTags.TERRA_CROPS); - case FLAME -> state.is(FABlockTags.FLAME_CROPS); - case SHADOW -> state.is(FABlockTags.SHADOW_CROPS); - case SCARLET -> state.is(FABlockTags.SCARLET_CROPS); - case RAY -> state.is(FABlockTags.RAY_CROPS); - case WIND -> state.is(FABlockTags.WIND_CROPS); - }; - } - return false; - } - - @Override - public int getMaxAge() { - return this.max_age; - } + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + if (state.getBlock() instanceof FarmlandBlock farmland) { + return switch (farmland.getType()) { + case TERRA -> this.builtInRegistryHolder().is(FABlockTags.TERRA_CROPS); + case FLAME -> this.builtInRegistryHolder().is(FABlockTags.FLAME_CROPS); + case SHADOW -> this.builtInRegistryHolder().is(FABlockTags.SHADOW_CROPS); + case SCARLET -> this.builtInRegistryHolder().is(FABlockTags.SCARLET_CROPS); + case RAY -> this.builtInRegistryHolder().is(FABlockTags.RAY_CROPS); + case WIND -> this.builtInRegistryHolder().is(FABlockTags.WIND_CROPS); + }; + } + return false; + } } diff --git a/src/main/java/ho/artisan/farmaway/common/block/StrongCarrotBlock.java b/src/main/java/ho/artisan/farmaway/common/block/StrongCarrotBlock.java new file mode 100644 index 0000000..a5d0177 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/block/StrongCarrotBlock.java @@ -0,0 +1,48 @@ +package ho.artisan.farmaway.common.block; + +import com.mojang.serialization.MapCodec; +import ho.artisan.farmaway.common.registry.FAItems; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class StrongCarrotBlock extends FACropBlock { + public static final MapCodec CODEC = simpleCodec(StrongCarrotBlock::new); + public static final IntegerProperty AGE = BlockStateProperties.AGE_3; + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{Block.box(0.0, 0.0, 0.0, 16.0, 2.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 4.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 6.0, 16.0), Block.box(0.0, 0.0, 0.0, 16.0, 8.0, 16.0)}; + + public MapCodec codec() { + return CODEC; + } + + public StrongCarrotBlock(Properties properties) { + super(properties); + } + + protected IntegerProperty getAgeProperty() { + return AGE; + } + + public int getMaxAge() { + return 3; + } + + protected ItemLike getBaseSeedId() { + return FAItems.STRONG_CARROT.get(); + } + + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(AGE); + } + + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE_BY_AGE[this.getAge(state)]; + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/loot/FABlockLootSubProvider.java b/src/main/java/ho/artisan/farmaway/common/datagen/loot/FABlockLootSubProvider.java deleted file mode 100644 index 55cf508..0000000 --- a/src/main/java/ho/artisan/farmaway/common/datagen/loot/FABlockLootSubProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -package ho.artisan.farmaway.common.datagen.loot; - -import ho.artisan.farmaway.FarmAway; -import ho.artisan.farmaway.common.registry.FABlocks; -import ho.artisan.farmaway.common.registry.FAItems; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.loot.BlockLootSubProvider; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; - -import java.util.Set; -import java.util.stream.Collectors; - -public class FABlockLootSubProvider extends BlockLootSubProvider { - public FABlockLootSubProvider(HolderLookup.Provider lookup) { - super(Set.of(), FeatureFlags.REGISTRY.allFlags(), lookup); - } - - @Override - protected void generate() { - dropOther(FABlocks.STONE_FARMLAND.get(), Blocks.STONE); - dropOther(FABlocks.NETHERRACK_FARMLAND.get(), Blocks.NETHERRACK); - dropOther(FABlocks.END_STONE_FARMLAND.get(), Blocks.END_STONE); - dropOther(FABlocks.GRANITE_FARMLAND.get(), Blocks.GRANITE); - dropOther(FABlocks.ANDESITE_FARMLAND.get(), Blocks.ANDESITE); - dropOther(FABlocks.DIORITE_FARMLAND.get(), Blocks.DIORITE); - dropOther(FABlocks.EXPLOSION_POTATO.get(), FAItems.EXPLOSION_POTATO); - dropOther(FABlocks.BLUES_CARROT.get(), FAItems.EXPLOSION_POTATO);// todo - dropOther(FABlocks.STRONG_CARROT.get(), FAItems.STRONG_CARROT); - } - - @Override - protected Iterable getKnownBlocks() { - return BuiltInRegistries.BLOCK.stream().filter(block -> BuiltInRegistries.BLOCK.getKey(block).getNamespace().equals(FarmAway.MOD_ID)).collect(Collectors.toList()); - } -} diff --git a/src/main/java/ho/artisan/farmaway/common/effect/BluesEffect.java b/src/main/java/ho/artisan/farmaway/common/effect/BluesEffect.java index d9784dc..1120994 100644 --- a/src/main/java/ho/artisan/farmaway/common/effect/BluesEffect.java +++ b/src/main/java/ho/artisan/farmaway/common/effect/BluesEffect.java @@ -2,9 +2,8 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; +// todo: fix whatever this is public class BluesEffect extends MobEffect { public BluesEffect() { super(MobEffectCategory.NEUTRAL, 1); diff --git a/src/main/java/ho/artisan/farmaway/common/entity/ExplosionPotatoEntity.java b/src/main/java/ho/artisan/farmaway/common/entity/ExplosionPotatoEntity.java index 9a31e35..5f84de8 100644 --- a/src/main/java/ho/artisan/farmaway/common/entity/ExplosionPotatoEntity.java +++ b/src/main/java/ho/artisan/farmaway/common/entity/ExplosionPotatoEntity.java @@ -2,7 +2,6 @@ import ho.artisan.farmaway.common.registry.FAEntities; import ho.artisan.farmaway.common.registry.FAItems; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.projectile.ThrowableItemProjectile; @@ -14,9 +13,11 @@ public class ExplosionPotatoEntity extends ThrowableItemProjectile { public ExplosionPotatoEntity(EntityType entityType, Level level) { super(entityType, level); } + public ExplosionPotatoEntity(Level level, LivingEntity shooter) { super(FAEntities.EXPLOSION_POTATO.get(), shooter, level); } + public ExplosionPotatoEntity(Level level, double x, double y, double z) { super(FAEntities.EXPLOSION_POTATO.get(), x, y, z, level); } diff --git a/src/main/java/ho/artisan/farmaway/common/event/FAEvents.java b/src/main/java/ho/artisan/farmaway/common/event/FAEvents.java new file mode 100644 index 0000000..bcdcb68 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/event/FAEvents.java @@ -0,0 +1,38 @@ +package ho.artisan.farmaway.common.event; + +import ho.artisan.farmaway.FarmAway; +import ho.artisan.farmaway.common.registry.FAMobEffects; +import net.minecraft.util.RandomSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent; + +@EventBusSubscriber(modid = FarmAway.MOD_ID) +public class FAEvents { + @SubscribeEvent + private static void onLivingIncomingDamage(LivingIncomingDamageEvent event) { + if (event.getEntity().hasEffect(FAMobEffects.BLUES)) { + MobEffectInstance instance = event.getEntity().getEffect(FAMobEffects.BLUES); + if (instance != null) { + int amplifier = instance.getAmplifier(); + if (event.getEntity().hasEffect(FAMobEffects.BLUES)) { + int i = RandomSource.create().nextInt(0, 100); + if (amplifier <= 6) { + if (i > 50 - amplifier * 5) { + event.setAmount(0); + } else { + event.setAmount(event.getOriginalAmount() * 2); + } + } else { + if (i > 50 - 6 * 5) { + event.setAmount(0); + } else { + event.setAmount(event.getOriginalAmount() * 2); + } + } + } + } + } + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/event/FASetupEvents.java b/src/main/java/ho/artisan/farmaway/common/event/FASetupEvents.java new file mode 100644 index 0000000..1d3aca2 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/event/FASetupEvents.java @@ -0,0 +1,16 @@ +package ho.artisan.farmaway.common.event; + +import ho.artisan.farmaway.FarmAway; +import ho.artisan.farmaway.common.registry.FAItems; +import net.minecraft.world.level.block.DispenserBlock; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; + +@EventBusSubscriber(modid = FarmAway.MOD_ID, bus = EventBusSubscriber.Bus.MOD) +public class FASetupEvents { + @SubscribeEvent + private static void onSetup(FMLCommonSetupEvent event) { + DispenserBlock.registerProjectileBehavior(FAItems.EXPLOSION_POTATO.get()); + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/item/ExplosionPotatoItem.java b/src/main/java/ho/artisan/farmaway/common/item/ExplosionPotatoItem.java index b681865..f0add31 100644 --- a/src/main/java/ho/artisan/farmaway/common/item/ExplosionPotatoItem.java +++ b/src/main/java/ho/artisan/farmaway/common/item/ExplosionPotatoItem.java @@ -11,7 +11,6 @@ import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.entity.projectile.Snowball; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ProjectileItem; @@ -25,7 +24,7 @@ public ExplosionPotatoItem(Properties properties) { @Override public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { ItemStack itemstack = player.getItemInHand(player.getUsedItemHand()); - if (player.isShiftKeyDown() && !level.isClientSide) { + if (!level.isClientSide && player.isCrouching()) { level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.FIRECHARGE_USE, SoundSource.NEUTRAL, 0.5F, 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F)); ExplosionPotatoEntity potato = new ExplosionPotatoEntity(level, player); potato.setItem(itemstack); diff --git a/src/main/java/ho/artisan/farmaway/common/item/StrongCarrotItem.java b/src/main/java/ho/artisan/farmaway/common/item/StrongCarrotItem.java new file mode 100644 index 0000000..af9cc36 --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/common/item/StrongCarrotItem.java @@ -0,0 +1,28 @@ +package ho.artisan.farmaway.common.item; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.Tool; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.neoforged.neoforge.common.ItemAbilities; +import net.neoforged.neoforge.common.ItemAbility; + +import java.util.List; + +public class StrongCarrotItem extends BlockItem { + public StrongCarrotItem(Block block, Properties properties) { + super(block, properties.component(DataComponents.TOOL, createToolProperties())); + } + + public static Tool createToolProperties() { + return new Tool(List.of(Tool.Rule.minesAndDrops(List.of(Blocks.COBWEB), 15.0F), Tool.Rule.overrideSpeed(BlockTags.SWORD_EFFICIENT, 1.5F)), 1.0F, 2); + } + + @Override + public boolean canPerformAction(ItemStack stack, ItemAbility itemAbility) { + return super.canPerformAction(stack, itemAbility) || ItemAbilities.DEFAULT_SWORD_ACTIONS.contains(itemAbility); + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/registry/FABlocks.java b/src/main/java/ho/artisan/farmaway/common/registry/FABlocks.java index 9464813..aa2b52d 100644 --- a/src/main/java/ho/artisan/farmaway/common/registry/FABlocks.java +++ b/src/main/java/ho/artisan/farmaway/common/registry/FABlocks.java @@ -1,8 +1,10 @@ package ho.artisan.farmaway.common.registry; import ho.artisan.farmaway.FarmAway; -import ho.artisan.farmaway.common.block.FACropBlock; +import ho.artisan.farmaway.common.block.BluesCarrotBlock; +import ho.artisan.farmaway.common.block.ExplosionPotatoBlock; import ho.artisan.farmaway.common.block.FarmlandBlock; +import ho.artisan.farmaway.common.block.StrongCarrotBlock; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; import net.neoforged.bus.api.IEventBus; @@ -29,18 +31,14 @@ public class FABlocks { public static final DeferredBlock DIORITE_FARMLAND = registerFarmland("diorite_farmland", BlockBehaviour.Properties.ofFullCopy(Blocks.DIORITE).randomTicks()); // Crops - public static final DeferredBlock EXPLOSION_POTATO = registerCrop("explosion_potato", BlockBehaviour.Properties.ofFullCopy(Blocks.POTATOES).randomTicks(), 7); - public static final DeferredBlock BLUES_CARROT = registerCrop("blue_carrot", BlockBehaviour.Properties.ofFullCopy(Blocks.CARROTS).randomTicks(), 15); - public static final DeferredBlock STRONG_CARROT = registerCrop("strong_carrot", BlockBehaviour.Properties.ofFullCopy(Blocks.CARROTS).randomTicks(), 3); + public static final DeferredBlock EXPLOSION_POTATO = BLOCKS.register("explosion_potato", () -> new ExplosionPotatoBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POTATOES).randomTicks())); + public static final DeferredBlock BLUES_CARROT = BLOCKS.register("blues_carrot", () -> new BluesCarrotBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CARROTS).randomTicks())); + public static final DeferredBlock STRONG_CARROT = BLOCKS.register("strong_carrot", () -> new StrongCarrotBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CARROTS).randomTicks())); private static DeferredBlock registerFarmland(String name, BlockBehaviour.Properties properties) { return BLOCKS.register(name, () -> new FarmlandBlock(properties)); } - private static DeferredBlock registerCrop(String name, BlockBehaviour.Properties properties, int max_age) { - return BLOCKS.register(name, () -> new FACropBlock(properties, max_age)); - } - public static void register(IEventBus bus) { BLOCKS.register(bus); } diff --git a/src/main/java/ho/artisan/farmaway/common/registry/FAEntities.java b/src/main/java/ho/artisan/farmaway/common/registry/FAEntities.java index ad47d50..285e72d 100644 --- a/src/main/java/ho/artisan/farmaway/common/registry/FAEntities.java +++ b/src/main/java/ho/artisan/farmaway/common/registry/FAEntities.java @@ -12,6 +12,7 @@ public class FAEntities { private static final DeferredRegister> ENTITIES = DeferredRegister.create(BuiltInRegistries.ENTITY_TYPE, FarmAway.MOD_ID); public static final DeferredHolder, EntityType> EXPLOSION_POTATO = ENTITIES.register("explosion_potato", () -> EntityType.Builder.of(ExplosionPotatoEntity::new, MobCategory.MISC).build(FarmAway.MOD_ID + "explosion_potato")); + public static void register(IEventBus bus) { ENTITIES.register(bus); } diff --git a/src/main/java/ho/artisan/farmaway/common/registry/FAItemTags.java b/src/main/java/ho/artisan/farmaway/common/registry/FAItemTags.java index 552633b..3c21683 100644 --- a/src/main/java/ho/artisan/farmaway/common/registry/FAItemTags.java +++ b/src/main/java/ho/artisan/farmaway/common/registry/FAItemTags.java @@ -4,7 +4,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; public class FAItemTags { public static TagKey TERRA_SEEDS = create("seeds/terra"); diff --git a/src/main/java/ho/artisan/farmaway/common/registry/FAItems.java b/src/main/java/ho/artisan/farmaway/common/registry/FAItems.java index 0d1a436..22eb790 100644 --- a/src/main/java/ho/artisan/farmaway/common/registry/FAItems.java +++ b/src/main/java/ho/artisan/farmaway/common/registry/FAItems.java @@ -3,6 +3,7 @@ import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.item.EnhancedHoeItem; import ho.artisan.farmaway.common.item.ExplosionPotatoItem; +import ho.artisan.farmaway.common.item.StrongCarrotItem; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.*; @@ -17,7 +18,6 @@ public class FAItems { // Tools public static final DeferredItem ENHANCED_HOE = ITEMS.register("enhanced_hoe", () -> new EnhancedHoeItem(Tiers.NETHERITE, new Item.Properties().rarity(Rarity.RARE).fireResistant().attributes(HoeItem.createAttributes(Tiers.NETHERITE, -4.0F, 0.0F)))); - public static final DeferredItem STRONG_CARROT = ITEMS.register("strong_carrot", () -> new SwordItem(Tiers.NETHERITE, new Item.Properties().attributes(SwordItem.createAttributes(Tiers.GOLD, 1.0F, 5.68F)).stacksTo(1).food(new FoodProperties.Builder().nutrition(2).saturationModifier(2).build()))); // Blocks public static final DeferredItem STONE_FARMLAND = registerBlock(FABlocks.STONE_FARMLAND); @@ -26,12 +26,14 @@ public class FAItems { public static final DeferredItem GRANITE_FARMLAND = registerBlock(FABlocks.GRANITE_FARMLAND); public static final DeferredItem ANDESITE_FARMLAND = registerBlock(FABlocks.ANDESITE_FARMLAND); public static final DeferredItem DIORITE_FARMLAND = registerBlock(FABlocks.DIORITE_FARMLAND); - public static final DeferredItem BLUES_CARROT = ITEMS.register("blues_carrot", () -> new ItemNameBlockItem(FABlocks.BLUES_CARROT.get(), new Item.Properties().food(new FoodProperties.Builder().alwaysEdible().nutrition(0).saturationModifier(0).effect(new MobEffectInstance(FAEffects.BLUES, 100), 1).build()))); + public static final DeferredItem BLUES_CARROT = ITEMS.register("blues_carrot", () -> new BlockItem(FABlocks.BLUES_CARROT.get(), new Item.Properties().food(new FoodProperties.Builder().alwaysEdible().nutrition(0).saturationModifier(0).effect(() -> new MobEffectInstance(FAMobEffects.BLUES, 100), 1).build()))); public static final DeferredItem EXPLOSION_POTATO = ITEMS.register("explosion_potato", () -> new ExplosionPotatoItem(new Item.Properties().food(new FoodProperties.Builder().nutrition(10).saturationModifier(0).build()))); + public static final DeferredItem STRONG_CARROT = ITEMS.register("strong_carrot", () -> new StrongCarrotItem(FABlocks.STRONG_CARROT.get(), new Item.Properties().attributes(SwordItem.createAttributes(Tiers.GOLD, 1.0F, 5.68F)).stacksTo(1).food(new FoodProperties.Builder().nutrition(2).saturationModifier(2).build()))); public static DeferredItem registerBlock(DeferredBlock block) { return ITEMS.registerSimpleBlockItem(block); } + public static void register(IEventBus bus) { ITEMS.register(bus); } diff --git a/src/main/java/ho/artisan/farmaway/common/registry/FAEffects.java b/src/main/java/ho/artisan/farmaway/common/registry/FAMobEffects.java similarity index 59% rename from src/main/java/ho/artisan/farmaway/common/registry/FAEffects.java rename to src/main/java/ho/artisan/farmaway/common/registry/FAMobEffects.java index 7b6478e..168c794 100644 --- a/src/main/java/ho/artisan/farmaway/common/registry/FAEffects.java +++ b/src/main/java/ho/artisan/farmaway/common/registry/FAMobEffects.java @@ -8,10 +8,11 @@ import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredRegister; -public class FAEffects { - private static DeferredRegister EFFECTS = DeferredRegister.create(BuiltInRegistries.MOB_EFFECT, FarmAway.MOD_ID); - public static Holder BLUES = EFFECTS.register("blues", BluesEffect::new); +public class FAMobEffects { + private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(BuiltInRegistries.MOB_EFFECT, FarmAway.MOD_ID); + public static Holder BLUES = MOB_EFFECTS.register("blues", BluesEffect::new); + public static void register(IEventBus bus) { - EFFECTS.register(bus); + MOB_EFFECTS.register(bus); } } diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/DataGenerators.java b/src/main/java/ho/artisan/farmaway/datagen/DataGenerators.java similarity index 75% rename from src/main/java/ho/artisan/farmaway/common/datagen/DataGenerators.java rename to src/main/java/ho/artisan/farmaway/datagen/DataGenerators.java index b3049cb..78fb804 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/DataGenerators.java +++ b/src/main/java/ho/artisan/farmaway/datagen/DataGenerators.java @@ -1,13 +1,13 @@ -package ho.artisan.farmaway.common.datagen; +package ho.artisan.farmaway.datagen; import ho.artisan.farmaway.FarmAway; -import ho.artisan.farmaway.common.datagen.lang.FAChineseLanguageProvider; -import ho.artisan.farmaway.common.datagen.lang.FAEnglishLanguageProvider; -import ho.artisan.farmaway.common.datagen.loot.FALootProvider; -import ho.artisan.farmaway.common.datagen.model.FABlockStateProvider; -import ho.artisan.farmaway.common.datagen.model.FAItemModelProvider; -import ho.artisan.farmaway.common.datagen.tags.FABlockTagsProvider; -import ho.artisan.farmaway.common.datagen.tags.FAItemTagsProvider; +import ho.artisan.farmaway.datagen.lang.FAChineseLanguageProvider; +import ho.artisan.farmaway.datagen.lang.FAEnglishLanguageProvider; +import ho.artisan.farmaway.datagen.loot.FALootProvider; +import ho.artisan.farmaway.datagen.model.FABlockStateProvider; +import ho.artisan.farmaway.datagen.model.FAItemModelProvider; +import ho.artisan.farmaway.datagen.tags.FABlockTagsProvider; +import ho.artisan.farmaway.datagen.tags.FAItemTagsProvider; import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/lang/FAChineseLanguageProvider.java b/src/main/java/ho/artisan/farmaway/datagen/lang/FAChineseLanguageProvider.java similarity index 62% rename from src/main/java/ho/artisan/farmaway/common/datagen/lang/FAChineseLanguageProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/lang/FAChineseLanguageProvider.java index a346d93..27e1ddb 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/lang/FAChineseLanguageProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/lang/FAChineseLanguageProvider.java @@ -1,9 +1,13 @@ -package ho.artisan.farmaway.common.datagen.lang; +package ho.artisan.farmaway.datagen.lang; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FABlocks; +import ho.artisan.farmaway.common.registry.FAEntities; import ho.artisan.farmaway.common.registry.FAItems; +import ho.artisan.farmaway.common.registry.FAMobEffects; +import net.minecraft.Util; import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.common.data.LanguageProvider; public class FAChineseLanguageProvider extends LanguageProvider { @@ -21,5 +25,13 @@ protected void addTranslations() { add(FABlocks.GRANITE_FARMLAND.get(), "花岗岩耕地"); add(FABlocks.ANDESITE_FARMLAND.get(), "安山岩耕地"); add(FABlocks.DIORITE_FARMLAND.get(), "闪长岩耕地"); + + add(FABlocks.EXPLOSION_POTATO.get(), "爆炎土豆"); + add(FABlocks.BLUES_CARROT.get(), "蓝胡萝卜"); + add(FABlocks.STRONG_CARROT.get(), "强力胡萝卜"); + + add(FAEntities.EXPLOSION_POTATO.get(), "爆炎土豆"); + + add(Util.makeDescriptionId("effect", ResourceLocation.parse(FAMobEffects.BLUES.getRegisteredName())), "蓝"); } } diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/lang/FAEnglishLanguageProvider.java b/src/main/java/ho/artisan/farmaway/datagen/lang/FAEnglishLanguageProvider.java similarity index 62% rename from src/main/java/ho/artisan/farmaway/common/datagen/lang/FAEnglishLanguageProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/lang/FAEnglishLanguageProvider.java index a178021..f1f2e97 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/lang/FAEnglishLanguageProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/lang/FAEnglishLanguageProvider.java @@ -1,9 +1,13 @@ -package ho.artisan.farmaway.common.datagen.lang; +package ho.artisan.farmaway.datagen.lang; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FABlocks; +import ho.artisan.farmaway.common.registry.FAEntities; import ho.artisan.farmaway.common.registry.FAItems; +import ho.artisan.farmaway.common.registry.FAMobEffects; +import net.minecraft.Util; import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.common.data.LanguageProvider; public class FAEnglishLanguageProvider extends LanguageProvider { @@ -21,5 +25,13 @@ protected void addTranslations() { add(FABlocks.GRANITE_FARMLAND.get(), "Granite Farmland"); add(FABlocks.ANDESITE_FARMLAND.get(), "Andesite Farmland"); add(FABlocks.DIORITE_FARMLAND.get(), "Diorite Farmland"); + + add(FABlocks.EXPLOSION_POTATO.get(), "Explosion Potato"); + add(FABlocks.BLUES_CARROT.get(), "Blues Carrot"); + add(FABlocks.STRONG_CARROT.get(), "Strong Carrot"); + + add(FAEntities.EXPLOSION_POTATO.get(), "Explosion Potato"); + + add(Util.makeDescriptionId("effect", ResourceLocation.parse(FAMobEffects.BLUES.getRegisteredName())), "Blues"); } } diff --git a/src/main/java/ho/artisan/farmaway/datagen/loot/FABlockLootSubProvider.java b/src/main/java/ho/artisan/farmaway/datagen/loot/FABlockLootSubProvider.java new file mode 100644 index 0000000..d86ea2f --- /dev/null +++ b/src/main/java/ho/artisan/farmaway/datagen/loot/FABlockLootSubProvider.java @@ -0,0 +1,43 @@ +package ho.artisan.farmaway.datagen.loot; + +import ho.artisan.farmaway.FarmAway; +import ho.artisan.farmaway.common.block.BluesCarrotBlock; +import ho.artisan.farmaway.common.block.ExplosionPotatoBlock; +import ho.artisan.farmaway.common.block.StrongCarrotBlock; +import ho.artisan.farmaway.common.registry.FABlocks; +import ho.artisan.farmaway.common.registry.FAItems; +import net.minecraft.advancements.critereon.StatePropertiesPredicate; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition; + +import java.util.Set; +import java.util.stream.Collectors; + +public class FABlockLootSubProvider extends BlockLootSubProvider { + public FABlockLootSubProvider(HolderLookup.Provider lookup) { + super(Set.of(), FeatureFlags.REGISTRY.allFlags(), lookup); + } + + @Override + protected void generate() { + dropOther(FABlocks.STONE_FARMLAND.get(), Blocks.STONE); + dropOther(FABlocks.NETHERRACK_FARMLAND.get(), Blocks.NETHERRACK); + dropOther(FABlocks.END_STONE_FARMLAND.get(), Blocks.END_STONE); + dropOther(FABlocks.GRANITE_FARMLAND.get(), Blocks.GRANITE); + dropOther(FABlocks.ANDESITE_FARMLAND.get(), Blocks.ANDESITE); + dropOther(FABlocks.DIORITE_FARMLAND.get(), Blocks.DIORITE); + add(FABlocks.EXPLOSION_POTATO.get(), this.createCropDrops(FABlocks.EXPLOSION_POTATO.get(), FAItems.EXPLOSION_POTATO.get(), FAItems.EXPLOSION_POTATO.get(), LootItemBlockStatePropertyCondition.hasBlockStateProperties(FABlocks.EXPLOSION_POTATO.get()).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(ExplosionPotatoBlock.AGE, 7)))); + add(FABlocks.BLUES_CARROT.get(), this.createCropDrops(FABlocks.BLUES_CARROT.get(), FAItems.BLUES_CARROT.get(), FAItems.BLUES_CARROT.get(), LootItemBlockStatePropertyCondition.hasBlockStateProperties(FABlocks.BLUES_CARROT.get()).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(BluesCarrotBlock.AGE, 15)))); + add(FABlocks.STRONG_CARROT.get(), this.createCropDrops(FABlocks.STRONG_CARROT.get(), FAItems.STRONG_CARROT.get(), FAItems.STRONG_CARROT.get(), LootItemBlockStatePropertyCondition.hasBlockStateProperties(FABlocks.STRONG_CARROT.get()).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(StrongCarrotBlock.AGE, 3)))); + } + + @Override + protected Iterable getKnownBlocks() { + return BuiltInRegistries.BLOCK.stream().filter(block -> BuiltInRegistries.BLOCK.getKey(block).getNamespace().equals(FarmAway.MOD_ID)).collect(Collectors.toList()); + } +} diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/loot/FALootProvider.java b/src/main/java/ho/artisan/farmaway/datagen/loot/FALootProvider.java similarity index 92% rename from src/main/java/ho/artisan/farmaway/common/datagen/loot/FALootProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/loot/FALootProvider.java index 88c7000..7f34e16 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/loot/FALootProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/loot/FALootProvider.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.common.datagen.loot; +package ho.artisan.farmaway.datagen.loot; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/model/FABlockStateProvider.java b/src/main/java/ho/artisan/farmaway/datagen/model/FABlockStateProvider.java similarity index 73% rename from src/main/java/ho/artisan/farmaway/common/datagen/model/FABlockStateProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/model/FABlockStateProvider.java index 0b76428..48e3504 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/model/FABlockStateProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/model/FABlockStateProvider.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.common.datagen.model; +package ho.artisan.farmaway.datagen.model; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FABlocks; @@ -7,7 +7,9 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.CropBlock; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.neoforged.neoforge.client.model.generators.BlockStateProvider; import net.neoforged.neoforge.client.model.generators.ConfiguredModel; import net.neoforged.neoforge.client.model.generators.ModelFile; @@ -32,6 +34,9 @@ protected void registerStatesAndModels() { farmland(FABlocks.GRANITE_FARMLAND.get(), Blocks.GRANITE); farmland(FABlocks.ANDESITE_FARMLAND.get(), Blocks.ANDESITE); farmland(FABlocks.DIORITE_FARMLAND.get(), Blocks.DIORITE); + crop(FABlocks.EXPLOSION_POTATO.get(), 3, BlockStateProperties.AGE_7); + crop(FABlocks.BLUES_CARROT.get(), 3, BlockStateProperties.AGE_15); + crop(FABlocks.STRONG_CARROT.get(), 3, BlockStateProperties.AGE_3); } private void farmland(Block farmland, Block dirt) { @@ -44,6 +49,16 @@ private void farmland(Block farmland, Block dirt) { getVariantBuilder(farmland).forAllStates(state -> ConfiguredModel.builder().modelFile(state.getValue(BlockStateProperties.MOISTURE) < 7 ? normal : moist).build()); } + private void crop(CropBlock crop, int maxStage, IntegerProperty ageProperty) { + int maxAge = crop.getMaxAge(); + getVariantBuilder(crop).forAllStates(state -> { + int stage = Math.min(state.getValue(ageProperty) / (maxAge / maxStage), maxStage - 1); + if (state.getValue(ageProperty) == maxAge) { + stage = maxStage; + } + return ConfiguredModel.builder().modelFile(models().crop(name(crop) + "_stage" + stage, blockTexture(crop).withSuffix("_stage" + stage)).renderType(CUTOUT)).build(); + }); + } private ResourceLocation key(Block block) { return BuiltInRegistries.BLOCK.getKey(block); diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/model/FAItemModelProvider.java b/src/main/java/ho/artisan/farmaway/datagen/model/FAItemModelProvider.java similarity index 97% rename from src/main/java/ho/artisan/farmaway/common/datagen/model/FAItemModelProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/model/FAItemModelProvider.java index bccc97e..5ed79f8 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/model/FAItemModelProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/model/FAItemModelProvider.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.common.datagen.model; +package ho.artisan.farmaway.datagen.model; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FAItems; diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/tags/FABlockTagsProvider.java b/src/main/java/ho/artisan/farmaway/datagen/tags/FABlockTagsProvider.java similarity index 97% rename from src/main/java/ho/artisan/farmaway/common/datagen/tags/FABlockTagsProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/tags/FABlockTagsProvider.java index 233d56e..b4f29e2 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/tags/FABlockTagsProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/tags/FABlockTagsProvider.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.common.datagen.tags; +package ho.artisan.farmaway.datagen.tags; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FABlockTags; diff --git a/src/main/java/ho/artisan/farmaway/common/datagen/tags/FAItemTagsProvider.java b/src/main/java/ho/artisan/farmaway/datagen/tags/FAItemTagsProvider.java similarity index 95% rename from src/main/java/ho/artisan/farmaway/common/datagen/tags/FAItemTagsProvider.java rename to src/main/java/ho/artisan/farmaway/datagen/tags/FAItemTagsProvider.java index 8eab2f2..e928a5e 100644 --- a/src/main/java/ho/artisan/farmaway/common/datagen/tags/FAItemTagsProvider.java +++ b/src/main/java/ho/artisan/farmaway/datagen/tags/FAItemTagsProvider.java @@ -1,4 +1,4 @@ -package ho.artisan.farmaway.common.datagen.tags; +package ho.artisan.farmaway.datagen.tags; import ho.artisan.farmaway.FarmAway; import ho.artisan.farmaway.common.registry.FAItemTags; diff --git a/src/main/resources/assets/farm_away/textures/block/blue_carrot_state_0.png b/src/main/resources/assets/farm_away/textures/block/blues_carrot_stage0.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/blue_carrot_state_0.png rename to src/main/resources/assets/farm_away/textures/block/blues_carrot_stage0.png diff --git a/src/main/resources/assets/farm_away/textures/block/blue_carrot_state_1.png b/src/main/resources/assets/farm_away/textures/block/blues_carrot_stage1.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/blue_carrot_state_1.png rename to src/main/resources/assets/farm_away/textures/block/blues_carrot_stage1.png diff --git a/src/main/resources/assets/farm_away/textures/block/blue_carrot_state_2.png b/src/main/resources/assets/farm_away/textures/block/blues_carrot_stage2.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/blue_carrot_state_2.png rename to src/main/resources/assets/farm_away/textures/block/blues_carrot_stage2.png diff --git a/src/main/resources/assets/farm_away/textures/block/blue_carrot_state_3.png b/src/main/resources/assets/farm_away/textures/block/blues_carrot_stage3.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/blue_carrot_state_3.png rename to src/main/resources/assets/farm_away/textures/block/blues_carrot_stage3.png diff --git a/src/main/resources/assets/farm_away/textures/block/explosion_potato_state_0.png b/src/main/resources/assets/farm_away/textures/block/explosion_potato_stage0.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/explosion_potato_state_0.png rename to src/main/resources/assets/farm_away/textures/block/explosion_potato_stage0.png diff --git a/src/main/resources/assets/farm_away/textures/block/explosion_potato_state_1.png b/src/main/resources/assets/farm_away/textures/block/explosion_potato_stage1.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/explosion_potato_state_1.png rename to src/main/resources/assets/farm_away/textures/block/explosion_potato_stage1.png diff --git a/src/main/resources/assets/farm_away/textures/block/explosion_potato_state_2.png b/src/main/resources/assets/farm_away/textures/block/explosion_potato_stage2.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/explosion_potato_state_2.png rename to src/main/resources/assets/farm_away/textures/block/explosion_potato_stage2.png diff --git a/src/main/resources/assets/farm_away/textures/block/explosion_potato_state_3.png b/src/main/resources/assets/farm_away/textures/block/explosion_potato_stage3.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/explosion_potato_state_3.png rename to src/main/resources/assets/farm_away/textures/block/explosion_potato_stage3.png diff --git a/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_0.png b/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage0.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_0.png rename to src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage0.png diff --git a/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_1.png b/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage1.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_1.png rename to src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage1.png diff --git a/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_2.png b/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage2.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_2.png rename to src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage2.png diff --git a/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_3.png b/src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage3.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/phantom_beetroots_state_3.png rename to src/main/resources/assets/farm_away/textures/block/phantom_beetroots_stage3.png diff --git a/src/main/resources/assets/farm_away/textures/block/strong_carrot_state_0.png b/src/main/resources/assets/farm_away/textures/block/strong_carrot_stage0.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/strong_carrot_state_0.png rename to src/main/resources/assets/farm_away/textures/block/strong_carrot_stage0.png diff --git a/src/main/resources/assets/farm_away/textures/block/strong_carrot_state_1.png b/src/main/resources/assets/farm_away/textures/block/strong_carrot_stage1.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/strong_carrot_state_1.png rename to src/main/resources/assets/farm_away/textures/block/strong_carrot_stage1.png diff --git a/src/main/resources/assets/farm_away/textures/block/strong_carrot_state_2.png b/src/main/resources/assets/farm_away/textures/block/strong_carrot_stage2.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/strong_carrot_state_2.png rename to src/main/resources/assets/farm_away/textures/block/strong_carrot_stage2.png diff --git a/src/main/resources/assets/farm_away/textures/block/strong_carrot_state_3.png b/src/main/resources/assets/farm_away/textures/block/strong_carrot_stage3.png similarity index 100% rename from src/main/resources/assets/farm_away/textures/block/strong_carrot_state_3.png rename to src/main/resources/assets/farm_away/textures/block/strong_carrot_stage3.png