├── neoforge ├── gradle.properties └── src │ ├── generated │ ├── .cache │ │ ├── 991c6956f82000521615b550b34066d0aaa0fbe0 │ │ ├── 735031f3addf80804addae5e3f53249900116f1e │ │ ├── 5850f7fe68a1b3f11d4c5910e2120e7ccb8b8885 │ │ ├── f09403667a34e91dcb149a31f823d70accec533e │ │ ├── 59eb3dbb5f86130e09b3c62d89b9525ee01cf52d │ │ ├── 103d9f3f36b01595f1aa5172191e60eff02e6924 │ │ ├── 5e8dc52f761af30b49a5b90ffd9a12169a5eef81 │ │ └── cd090bff9ca93079474b6df48215a8307e531e73 │ └── data │ │ └── chococraft │ │ └── neoforge │ │ └── biome_modifier │ │ ├── add_plains_chocobos.json │ │ ├── add_mountain_chocobos.json │ │ ├── add_nether_chocobos.json │ │ └── add_gysahl_green.json │ └── main │ ├── java │ └── net │ │ └── chococraft │ │ └── neoforge │ │ ├── datagen │ │ └── client │ │ │ ├── ChocoItemModels.java │ │ │ ├── ChocoBlockModels.java │ │ │ ├── ChocoSoundProvider.java │ │ │ └── ChocoBlockstates.java │ │ ├── common │ │ ├── inventory │ │ │ ├── SaddleItemStackHandler.java │ │ │ └── SlotChocoboSaddle.java │ │ ├── config │ │ │ ├── BreedingConfigReloadManager.java │ │ │ └── BreedingConfig.java │ │ ├── handler │ │ │ └── RidingEventHandler.java │ │ ├── modifier │ │ │ ├── ModModifiers.java │ │ │ └── AddChocoboModifier.java │ │ └── items │ │ │ └── NeoForgeChocoDisguiseItem.java │ │ ├── registry │ │ └── ModDataSerializers.java │ │ ├── client │ │ └── NeoForgeClientHandler.java │ │ └── ChococraftNeoForge.java │ └── resources │ └── META-INF │ └── neoforge.mods.toml ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── FEATURE_REQUEST.yaml │ └── BUG_REPORT.yaml └── workflows │ └── build.yml ├── .gitattributes ├── common ├── src │ └── main │ │ ├── resources │ │ ├── architectury.common.json │ │ ├── assets │ │ │ └── chococraft │ │ │ │ ├── models │ │ │ │ ├── item │ │ │ │ │ ├── straw.json │ │ │ │ │ ├── chocopedia.json │ │ │ │ │ ├── red_gysahl.json │ │ │ │ │ ├── gold_gysahl.json │ │ │ │ │ ├── gysahl_cake.json │ │ │ │ │ ├── gysahl_green.json │ │ │ │ │ ├── pink_gysahl.json │ │ │ │ │ ├── chocobo_feather.json │ │ │ │ │ ├── chocobo_saddle.json │ │ │ │ │ ├── chocobo_whistle.json │ │ │ │ │ ├── gysahl_green_seeds.json │ │ │ │ │ ├── pickled_gysahl_raw.json │ │ │ │ │ ├── choco_disguise_boots.json │ │ │ │ │ ├── chocobo_saddle_bags.json │ │ │ │ │ ├── chocobo_saddle_pack.json │ │ │ │ │ ├── loverly_gysahl_green.json │ │ │ │ │ ├── black_chocobo_spawn_egg.json │ │ │ │ │ ├── blue_chocobo_spawn_egg.json │ │ │ │ │ ├── choco_disguise_helmet.json │ │ │ │ │ ├── choco_disguise_leggings.json │ │ │ │ │ ├── chocobo_drumstick_raw.json │ │ │ │ │ ├── flame_chocobo_spawn_egg.json │ │ │ │ │ ├── gold_chocobo_spawn_egg.json │ │ │ │ │ ├── green_chocobo_spawn_egg.json │ │ │ │ │ ├── pickled_gysahl_cooked.json │ │ │ │ │ ├── pink_chocobo_spawn_egg.json │ │ │ │ │ ├── red_chocobo_spawn_egg.json │ │ │ │ │ ├── white_chocobo_spawn_egg.json │ │ │ │ │ ├── choco_disguise_chestplate.json │ │ │ │ │ ├── chocobo_drumstick_cooked.json │ │ │ │ │ ├── purple_chocobo_spawn_egg.json │ │ │ │ │ └── yellow_chocobo_spawn_egg.json │ │ │ │ └── block │ │ │ │ │ ├── straw.json │ │ │ │ │ ├── gysahl_green_stage0.json │ │ │ │ │ ├── gysahl_green_stage1.json │ │ │ │ │ ├── gysahl_green_stage2.json │ │ │ │ │ ├── gysahl_green_stage3.json │ │ │ │ │ └── gysahl_green_stage4.json │ │ │ │ ├── blockstates │ │ │ │ ├── straw.json │ │ │ │ └── gysahl_green.json │ │ │ │ ├── textures │ │ │ │ ├── gui │ │ │ │ │ ├── icons.png │ │ │ │ │ ├── chocobo_book.png │ │ │ │ │ ├── entry │ │ │ │ │ │ ├── chocobo.png │ │ │ │ │ │ ├── gysahl.png │ │ │ │ │ │ └── chocodisguise.png │ │ │ │ │ ├── patchouli_book.png │ │ │ │ │ ├── chocobo_page_filler.png │ │ │ │ │ ├── chocobo_inventory_large.png │ │ │ │ │ ├── chocobo_inventory_null.png │ │ │ │ │ └── chocobo_inventory_small.png │ │ │ │ ├── block │ │ │ │ │ ├── straw.png │ │ │ │ │ ├── gysahl_green0.png │ │ │ │ │ ├── gysahl_green1.png │ │ │ │ │ ├── gysahl_green2.png │ │ │ │ │ ├── gysahl_green3.png │ │ │ │ │ └── gysahl_green4.png │ │ │ │ ├── item │ │ │ │ │ ├── chocopedia.png │ │ │ │ │ ├── gold_gysahl.png │ │ │ │ │ ├── gysahl_cake.png │ │ │ │ │ ├── gysahl_green.png │ │ │ │ │ ├── pink_gysahl.png │ │ │ │ │ ├── red_gysahl.png │ │ │ │ │ ├── chocobo_saddle.png │ │ │ │ │ ├── chocobo_feather.png │ │ │ │ │ ├── chocobo_whistle.png │ │ │ │ │ ├── generic_spawn_egg.png │ │ │ │ │ ├── chocobo_saddle_bags.png │ │ │ │ │ ├── chocobo_saddle_pack.png │ │ │ │ │ ├── gysahl_green_seeds.png │ │ │ │ │ ├── liquefiedchocopedia.png │ │ │ │ │ ├── pickled_gysahl_raw.png │ │ │ │ │ ├── blue_chocobo_spawn_egg.png │ │ │ │ │ ├── choco_disguise_boots.png │ │ │ │ │ ├── choco_disguise_helmet.png │ │ │ │ │ ├── chocobo_drumstick_raw.png │ │ │ │ │ ├── gold_chocobo_spawn_egg.png │ │ │ │ │ ├── loverly_gysahl_green.png │ │ │ │ │ ├── pickled_gysahl_cooked.png │ │ │ │ │ ├── pink_chocobo_spawn_egg.png │ │ │ │ │ ├── red_chocobo_spawn_egg.png │ │ │ │ │ ├── black_chocobo_spawn_egg.png │ │ │ │ │ ├── choco_disguise_leggings.png │ │ │ │ │ ├── chocobo_drumstick_cooked.png │ │ │ │ │ ├── flame_chocobo_spawn_egg.png │ │ │ │ │ ├── green_chocobo_spawn_egg.png │ │ │ │ │ ├── purple_chocobo_spawn_egg.png │ │ │ │ │ ├── white_chocobo_spawn_egg.png │ │ │ │ │ ├── yellow_chocobo_spawn_egg.png │ │ │ │ │ └── choco_disguise_chestplate.png │ │ │ │ ├── entities │ │ │ │ │ ├── chicobos │ │ │ │ │ │ ├── collar.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── flamechocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ │ └── chocobos │ │ │ │ │ │ ├── collar.png │ │ │ │ │ │ ├── saddle.png │ │ │ │ │ │ ├── pack_bag.png │ │ │ │ │ │ ├── plumage.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── saddle_bag.png │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── flamechocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ └── models │ │ │ │ │ └── armor │ │ │ │ │ └── chocodisguise.png │ │ │ │ ├── sounds │ │ │ │ └── entity │ │ │ │ │ └── chocobo │ │ │ │ │ ├── kweh.ogg │ │ │ │ │ ├── kwehwhistlestay.ogg │ │ │ │ │ ├── kwehwhistlefollow.ogg │ │ │ │ │ └── kwehwhistlewander.ogg │ │ │ │ ├── patchouli_books │ │ │ │ └── chocopedia │ │ │ │ │ └── en_us │ │ │ │ │ ├── categories │ │ │ │ │ ├── misc.json │ │ │ │ │ ├── legacy.json │ │ │ │ │ ├── gysahls.json │ │ │ │ │ ├── chocobos.json │ │ │ │ │ └── equipments.json │ │ │ │ │ └── entries │ │ │ │ │ ├── misc │ │ │ │ │ └── straw.json │ │ │ │ │ ├── gysahls │ │ │ │ │ ├── red_gysahl.json │ │ │ │ │ ├── gold_gysahl.json │ │ │ │ │ ├── gysahl_cake.json │ │ │ │ │ ├── pink_gysahl.json │ │ │ │ │ ├── loverly_gysahl.json │ │ │ │ │ ├── pickled_gysahl.json │ │ │ │ │ └── gysahl_green.json │ │ │ │ │ ├── chocobos │ │ │ │ │ ├── feather.json │ │ │ │ │ ├── chicobo.json │ │ │ │ │ └── raw_drumstick.json │ │ │ │ │ ├── equipments │ │ │ │ │ ├── whistle.json │ │ │ │ │ ├── saddle.json │ │ │ │ │ └── chocodisguise.json │ │ │ │ │ └── legacy │ │ │ │ │ └── info.json │ │ │ │ └── sounds.json │ │ ├── icon.png │ │ ├── data │ │ │ ├── minecraft │ │ │ │ └── tags │ │ │ │ │ ├── block │ │ │ │ │ └── crops.json │ │ │ │ │ └── item │ │ │ │ │ ├── foot_armor.json │ │ │ │ │ ├── head_armor.json │ │ │ │ │ ├── leg_armor.json │ │ │ │ │ └── chest_armor.json │ │ │ └── chococraft │ │ │ │ ├── recipe │ │ │ │ ├── gysahl_green_to_seeds.json │ │ │ │ ├── straw.json │ │ │ │ ├── pickled_gysahl_cooked.json │ │ │ │ ├── chocobo_drumstick_cooked.json │ │ │ │ ├── pink_gysahl.json │ │ │ │ ├── red_gysahl.json │ │ │ │ ├── chocopedia.json │ │ │ │ ├── pickled_gysahl_cooked_from_smoking.json │ │ │ │ ├── chocobo_drumstick_cooked_from_smoking.json │ │ │ │ ├── chocobo_whistle.json │ │ │ │ ├── chocobo_saddle_alt.json │ │ │ │ ├── pickled_gysahl_cooked_from_campfire_cooking.json │ │ │ │ ├── choco_disguise_boots.json │ │ │ │ ├── choco_disguise_helmet.json │ │ │ │ ├── chocobo_drumstick_cooked_from_campfire_cooking.json │ │ │ │ ├── choco_disguise_leggings.json │ │ │ │ ├── choco_disguise_chestplate.json │ │ │ │ ├── chocobo_saddle.json │ │ │ │ ├── chocobo_saddle_bags.json │ │ │ │ ├── pickled_gysahl_raw.json │ │ │ │ ├── gysahl_cake.json │ │ │ │ └── chocobo_saddle_pack.json │ │ │ │ ├── loot_table │ │ │ │ ├── blocks │ │ │ │ │ ├── straw.json │ │ │ │ │ └── gysahl_green.json │ │ │ │ └── entities │ │ │ │ │ └── chocobo.json │ │ │ │ ├── worldgen │ │ │ │ ├── placed_feature │ │ │ │ │ └── patch_gysahl_green.json │ │ │ │ └── configured_feature │ │ │ │ │ └── patch_gysahl_green.json │ │ │ │ ├── patchouli_books │ │ │ │ └── chocopedia │ │ │ │ │ └── book.json │ │ │ │ └── advancement │ │ │ │ └── recipes │ │ │ │ ├── misc │ │ │ │ ├── straw.json │ │ │ │ ├── chocopedia.json │ │ │ │ ├── red_gysahl.json │ │ │ │ ├── pink_gysahl.json │ │ │ │ ├── chocobo_saddle.json │ │ │ │ ├── chocobo_whistle.json │ │ │ │ ├── chocobo_saddle_alt.json │ │ │ │ ├── chocobo_saddle_bags.json │ │ │ │ ├── gysahl_green_to_seeds.json │ │ │ │ ├── choco_disguise_boots.json │ │ │ │ ├── choco_disguise_helmet.json │ │ │ │ ├── choco_disguise_leggings.json │ │ │ │ ├── chocobo_saddle_pack.json │ │ │ │ └── choco_disguise_chestplate.json │ │ │ │ └── food │ │ │ │ ├── gysahl_cake.json │ │ │ │ ├── pickled_gysahl_raw.json │ │ │ │ ├── pickled_gysahl_cooked.json │ │ │ │ ├── chocobo_drumstick_cooked.json │ │ │ │ ├── pickled_gysahl_cooked_from_smoking.json │ │ │ │ ├── chocobo_drumstick_cooked_from_smoking.json │ │ │ │ ├── pickled_gysahl_cooked_from_campfire_cooking.json │ │ │ │ └── chocobo_drumstick_cooked_from_campfire_cooking.json │ │ ├── pack.mcmeta │ │ └── chococraft.accesswidener │ │ └── java │ │ └── net │ │ └── chococraft │ │ ├── common │ │ ├── items │ │ │ ├── ChocoboSaddleItem.java │ │ │ ├── armor │ │ │ │ ├── AbstractChocoDisguiseItem.java │ │ │ │ └── ModArmorMaterial.java │ │ │ ├── CustomBlockNamedItem.java │ │ │ ├── ChocopediaItem.java │ │ │ └── ChocoboSpawnEggItem.java │ │ ├── inventory │ │ │ └── SaddleBagMenu.java │ │ ├── entity │ │ │ ├── DefaultNames.java │ │ │ ├── properties │ │ │ │ └── MovementType.java │ │ │ ├── goal │ │ │ │ ├── ChocoboFollowOwnerGoal.java │ │ │ │ └── ChocoboHealInPenGoal.java │ │ │ └── breeding │ │ │ │ ├── ChocoboAbilityInfo.java │ │ │ │ └── BreedingHelper.java │ │ ├── blocks │ │ │ ├── StrawBlock.java │ │ │ └── GysahlGreenBlock.java │ │ ├── config │ │ │ └── ChocoConfig.java │ │ └── world │ │ │ └── worldgen │ │ │ └── ModFeatures.java │ │ ├── utils │ │ └── RandomHelper.java │ │ ├── ChococraftClient.java │ │ ├── registry │ │ ├── ModFoods.java │ │ ├── ModEntities.java │ │ ├── ModMenus.java │ │ └── ModSounds.java │ │ ├── client │ │ └── renderer │ │ │ └── layers │ │ │ ├── LayerPlumage.java │ │ │ ├── LayerCollar.java │ │ │ └── LayerSaddle.java │ │ └── Chococraft.java └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── changelog.md ├── fabric └── src │ └── main │ ├── resources │ ├── assets │ │ └── chococraft │ │ │ └── textures │ │ │ └── models │ │ │ └── armor │ │ │ ├── choco_disguise_layer_1.png │ │ │ └── choco_disguise_layer_2.png │ ├── chococraft.mixins.json │ └── fabric.mod.json │ └── java │ └── net │ └── chococraft │ └── fabric │ ├── common │ ├── config │ │ ├── ChococraftMenuIntegration.java │ │ ├── FabricBreedingConfig.java │ │ └── FabricChocoConfig.java │ ├── items │ │ └── FabricChocoDisguiseItem.java │ ├── inventory │ │ └── SlotChocoboSaddle.java │ ├── packets │ │ └── OpenChocoboScreenPayload.java │ └── world │ │ └── FeatureInjector.java │ ├── event │ └── MountEvent.java │ ├── registry │ └── ModDataSerializers.java │ ├── mixins │ ├── HumanoidArmorLayerMixin.java │ ├── EntityMixin.java │ └── LivingEntityRendererMixin.java │ ├── ChococraftClientFabric.java │ └── ChococraftFabric.java ├── .gitignore ├── LICENSE-art.md ├── settings.gradle ├── gradle.properties ├── LICENSE-code.md ├── README.md └── gradlew.bat /neoforge/gradle.properties: -------------------------------------------------------------------------------- 1 | loom.platform=neoforge -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /common/src/main/resources/architectury.common.json: -------------------------------------------------------------------------------- 1 | { 2 | "accessWidener": "chococraft.accesswidener" 3 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft:block/straw" 3 | } -------------------------------------------------------------------------------- /common/src/main/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/icon.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/991c6956f82000521615b550b34066d0aaa0fbe0: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9437285 Item Models: chococraft 2 | -------------------------------------------------------------------------------- /common/src/main/resources/data/minecraft/tags/block/crops.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "chococraft:gysahl_green" 5 | ] 6 | } -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | ### Version 0.11.11 2 | * Fix a breeding config issue (Causing blue + blue = white instead of blue + green = white like stated in the chocopedia) -------------------------------------------------------------------------------- /common/src/main/resources/data/minecraft/tags/item/foot_armor.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "chococraft:choco_disguise_boots" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/minecraft/tags/item/head_armor.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "chococraft:choco_disguise_helmet" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/minecraft/tags/item/leg_armor.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "chococraft:choco_disguise_leggings" 5 | ] 6 | } -------------------------------------------------------------------------------- /neoforge/src/generated/data/chococraft/neoforge/biome_modifier/add_plains_chocobos.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "chococraft:add_chocobo", 3 | "biomes": "#c:is_plains" 4 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/blockstates/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "chococraft:block/straw" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/minecraft/tags/item/chest_armor.json: -------------------------------------------------------------------------------- 1 | { 2 | "replace": false, 3 | "values": [ 4 | "chococraft:choco_disguise_chestplate" 5 | ] 6 | } -------------------------------------------------------------------------------- /neoforge/src/generated/data/chococraft/neoforge/biome_modifier/add_mountain_chocobos.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "chococraft:add_chocobo", 3 | "biomes": "#c:is_mountain" 4 | } -------------------------------------------------------------------------------- /neoforge/src/generated/data/chococraft/neoforge/biome_modifier/add_nether_chocobos.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "chococraft:add_chocobo", 3 | "biomes": "#minecraft:is_nether" 4 | } -------------------------------------------------------------------------------- /common/src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": { 4 | "text": "Chococraft 4 Resources" 5 | }, 6 | "pack_format": 34 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/carpet", 3 | "textures": { 4 | "wool": "chococraft:block/straw" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/icons.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/straw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/straw.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocopedia.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocopedia" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/red_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/red_gysahl" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/gold_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/gold_gysahl" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/gysahl_cake.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/gysahl_cake" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/gysahl_green" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/pink_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/pink_gysahl" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kweh.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kweh.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/chocobo_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/chocobo_book.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/entry/chocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/entry/chocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/entry/gysahl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/entry/gysahl.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocopedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocopedia.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/gold_gysahl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/gold_gysahl.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/gysahl_cake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/gysahl_cake.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/gysahl_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/gysahl_green.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/pink_gysahl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/pink_gysahl.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/red_gysahl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/red_gysahl.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_feather" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_saddle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_saddle" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_whistle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_whistle" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/gysahl_green0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/gysahl_green0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/gysahl_green1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/gysahl_green1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/gysahl_green2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/gysahl_green2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/gysahl_green3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/gysahl_green3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/block/gysahl_green4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/block/gysahl_green4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/patchouli_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/patchouli_book.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle.png -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/735031f3addf80804addae5e3f53249900116f1e: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9457304 Sound Definitions 2 | f5859163d5b6116f999d3c3b4c73b08893a84227 assets/chococraft/sounds.json 3 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/gysahl_green_seeds.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/gysahl_green_seeds" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/pickled_gysahl_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/pickled_gysahl_raw" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_feather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_feather.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_whistle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_whistle.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/generic_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/generic_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/choco_disguise_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/choco_disguise_boots" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_saddle_bags.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_saddle_bags" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_saddle_pack.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_saddle_pack" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/loverly_gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/loverly_gysahl_green" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/collar.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/collar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/collar.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/saddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/saddle.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/chocobo_page_filler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/chocobo_page_filler.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/entry/chocodisguise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/entry/chocodisguise.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle_bags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle_bags.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle_pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_saddle_pack.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/gysahl_green_seeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/gysahl_green_seeds.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/liquefiedchocopedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/liquefiedchocopedia.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/pickled_gysahl_raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/pickled_gysahl_raw.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/black_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/black_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/blue_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/blue_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/choco_disguise_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/choco_disguise_helmet" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/choco_disguise_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/choco_disguise_leggings" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_drumstick_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_drumstick_raw" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/flame_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/flame_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/gold_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/gold_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/green_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/green_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/pickled_gysahl_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/pickled_gysahl_cooked" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/pink_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/pink_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/red_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/red_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/white_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/white_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/pack_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/pack_bag.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/plumage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/plumage.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_large.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_null.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/gui/chocobo_inventory_small.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/blue_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/blue_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/choco_disguise_boots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/choco_disguise_boots.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/choco_disguise_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/choco_disguise_helmet.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_drumstick_raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_drumstick_raw.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/gold_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/gold_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/loverly_gysahl_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/loverly_gysahl_green.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/pickled_gysahl_cooked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/pickled_gysahl_cooked.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/pink_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/pink_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/red_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/red_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/models/armor/chocodisguise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/models/armor/chocodisguise.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/choco_disguise_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/choco_disguise_chestplate" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/chocobo_drumstick_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/chocobo_drumstick_cooked" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/purple_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/purple_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/item/yellow_chocobo_spawn_egg.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "chococraft:item/yellow_chocobo_spawn_egg" 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlestay.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlestay.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/bluechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/goldchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/pinkchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/redchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/bluechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/goldchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/pinkchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/redchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/saddle_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/saddle_bag.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/black_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/black_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/choco_disguise_leggings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/choco_disguise_leggings.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/chocobo_drumstick_cooked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/chocobo_drumstick_cooked.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/flame_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/flame_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/green_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/green_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/purple_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/purple_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/white_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/white_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/yellow_chocobo_spawn_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/yellow_chocobo_spawn_egg.png -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/5850f7fe68a1b3f11d4c5910e2120e7ccb8b8885: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9427276 Block Models: chococraft 2 | 28f06e6254e7a2e17b51341fc47d36374697f500 assets/chococraft/models/block/straw.json 3 | -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/f09403667a34e91dcb149a31f823d70accec533e: -------------------------------------------------------------------------------- 1 | // 1.21.1 2025-02-07T22:14:08.2453625 Languages: en_us for mod: chococraft 2 | 4c754517ca398b5eb92a7338a5299621e5c879e2 assets/chococraft/lang/en_us.json 3 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlefollow.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlefollow.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlewander.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/sounds/entity/chocobo/kwehwhistlewander.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/blackchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/flamechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/flamechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/greenchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/purplechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/whitechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chicobos/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chicobos/yellowchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/blackchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/flamechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/flamechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/greenchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/purplechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/whitechocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/entities/chocobos/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/entities/chocobos/yellowchocobo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/textures/item/choco_disguise_chestplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/common/src/main/resources/assets/chococraft/textures/item/choco_disguise_chestplate.png -------------------------------------------------------------------------------- /fabric/src/main/resources/assets/chococraft/textures/models/armor/choco_disguise_layer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/fabric/src/main/resources/assets/chococraft/textures/models/armor/choco_disguise_layer_1.png -------------------------------------------------------------------------------- /fabric/src/main/resources/assets/chococraft/textures/models/armor/choco_disguise_layer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mrbysco/ChocoCraft4/HEAD/fabric/src/main/resources/assets/chococraft/textures/models/armor/choco_disguise_layer_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/gysahl_green_stage0.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cross", 3 | "render_type": "minecraft:cutout", 4 | "textures": { 5 | "cross": "chococraft:block/gysahl_green0" 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/gysahl_green_stage1.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cross", 3 | "render_type": "minecraft:cutout", 4 | "textures": { 5 | "cross": "chococraft:block/gysahl_green1" 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/gysahl_green_stage2.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cross", 3 | "render_type": "minecraft:cutout", 4 | "textures": { 5 | "cross": "chococraft:block/gysahl_green2" 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/gysahl_green_stage3.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cross", 3 | "render_type": "minecraft:cutout", 4 | "textures": { 5 | "cross": "chococraft:block/gysahl_green3" 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/models/block/gysahl_green_stage4.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cross", 3 | "render_type": "minecraft:cutout", 4 | "textures": { 5 | "cross": "chococraft:block/gysahl_green4" 6 | } 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/categories/misc.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "info.chococraft.book.misc.desc", 3 | "icon": "chococraft:straw", 4 | "name": "info.chococraft.book.misc.name", 5 | "sortnum": 3 6 | } -------------------------------------------------------------------------------- /neoforge/src/generated/data/chococraft/neoforge/biome_modifier/add_gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "neoforge:add_features", 3 | "biomes": "#minecraft:is_overworld", 4 | "features": "chococraft:patch_gysahl_green", 5 | "step": "vegetal_decoration" 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/categories/legacy.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "info.chococraft.book.legacy.desc", 3 | "icon": "chococraft:chocopedia", 4 | "name": "info.chococraft.book.legacy.name", 5 | "sortnum": 4 6 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | *.ipr 3 | run/ 4 | *.iws 5 | out/ 6 | *.iml 7 | .gradle/ 8 | output/ 9 | bin/ 10 | libs/ 11 | 12 | .classpath 13 | .project 14 | .idea/ 15 | classes/ 16 | .metadata 17 | .vscode 18 | .settings 19 | *.launch 20 | .architectury-transformer 21 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/categories/gysahls.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "info.chococraft.book.gysahls.desc", 3 | "icon": "chococraft:gysahl_green", 4 | "name": "info.chococraft.book.gysahls.name", 5 | "sortnum": 1 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/categories/chocobos.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "info.chococraft.book.chocobos.desc", 3 | "icon": "chococraft:chocobo_feather", 4 | "name": "info.chococraft.book.chocobos.name", 5 | "sortnum": 0 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/categories/equipments.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "info.chococraft.book.equipments.desc", 3 | "icon": "chococraft:chocobo_saddle_pack", 4 | "name": "info.chococraft.book.equipments.name", 5 | "sortnum": 2 6 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/gysahl_green_to_seeds.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "chococraft:gysahl_green" 7 | } 8 | ], 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:gysahl_green_seeds" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "W": { 6 | "item": "minecraft:wheat" 7 | } 8 | }, 9 | "pattern": [ 10 | "WW" 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:straw" 15 | } 16 | } -------------------------------------------------------------------------------- /LICENSE-art.md: -------------------------------------------------------------------------------- 1 | The assets in this mod are licensed under [**CC-BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/) 2 | with one exception: 3 | The chocobo "kweh" sound, located under `src/main/resources/assets/chococraft/sounds/entities/chocobo/chocobo.ogg` is 4 | was taken from Final Fantasy 7 and is property of [SquareEnix CO., LTD](http://www.square-enix.com/) -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/pickled_gysahl_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smelting", 3 | "category": "food", 4 | "cookingtime": 200, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:pickled_gysahl_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:pickled_gysahl_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_drumstick_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smelting", 3 | "category": "food", 4 | "cookingtime": 200, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:chocobo_drumstick_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:chocobo_drumstick_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/pink_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "chococraft:gysahl_green" 7 | }, 8 | { 9 | "tag": "c:dyes/pink" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:pink_gysahl" 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/red_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "chococraft:gysahl_green" 7 | }, 8 | { 9 | "tag": "c:dyes/red" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:red_gysahl" 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocopedia.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:book" 7 | }, 8 | { 9 | "item": "chococraft:gysahl_green" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:chocopedia" 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/pickled_gysahl_cooked_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smoking", 3 | "category": "food", 4 | "cookingtime": 100, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:pickled_gysahl_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:pickled_gysahl_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_drumstick_cooked_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smoking", 3 | "category": "food", 4 | "cookingtime": 100, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:chocobo_drumstick_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:chocobo_drumstick_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_whistle.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "tag": "c:ingots/gold" 7 | }, 8 | { 9 | "item": "chococraft:chocobo_feather" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:chocobo_whistle" 15 | } 16 | } -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9437285 Loot Tables 2 | e189b028dda338d3989585159351599244f64b23 data/chococraft/loot_table/blocks/gysahl_green.json 3 | 32ece38bc63d17592220b109bc4c5ca8a31d9175 data/chococraft/loot_table/blocks/straw.json 4 | 0c9af028d76461da676e0e61b478159ca587d29a data/chococraft/loot_table/entities/chocobo.json 5 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_saddle_alt.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:saddle" 7 | }, 8 | { 9 | "item": "chococraft:chocobo_feather" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "chococraft:chocobo_saddle" 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/pickled_gysahl_cooked_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:campfire_cooking", 3 | "category": "food", 4 | "cookingtime": 600, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:pickled_gysahl_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:pickled_gysahl_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/choco_disguise_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | } 8 | }, 9 | "pattern": [ 10 | "F F", 11 | "F F" 12 | ], 13 | "result": { 14 | "count": 1, 15 | "id": "chococraft:choco_disguise_boots" 16 | } 17 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/choco_disguise_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | } 8 | }, 9 | "pattern": [ 10 | "FFF", 11 | "F F" 12 | ], 13 | "result": { 14 | "count": 1, 15 | "id": "chococraft:choco_disguise_helmet" 16 | } 17 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_drumstick_cooked_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:campfire_cooking", 3 | "category": "food", 4 | "cookingtime": 600, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "chococraft:chocobo_drumstick_raw" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "chococraft:chocobo_drumstick_cooked" 12 | } 13 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | maven { url "https://maven.fabricmc.net/" } 4 | maven { url "https://maven.architectury.dev/" } 5 | maven { url "https://maven.neoforged.net/" } 6 | gradlePluginPortal() 7 | } 8 | } 9 | 10 | include("common") 11 | include("fabric") 12 | include("neoforge") 13 | 14 | rootProject.name = "chococraft4-architectury" -------------------------------------------------------------------------------- /fabric/src/main/resources/chococraft.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8.4", 4 | "package": "net.chococraft.fabric.mixins", 5 | "compatibilityLevel": "JAVA_21", 6 | "mixins": [ 7 | "EntityMixin" 8 | ], 9 | "client": [ 10 | "HumanoidArmorLayerMixin", 11 | "LivingEntityRendererMixin" 12 | ], 13 | "injectors": { 14 | "defaultRequire": 1 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/choco_disguise_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | } 8 | }, 9 | "pattern": [ 10 | "FFF", 11 | "F F", 12 | "F F" 13 | ], 14 | "result": { 15 | "count": 1, 16 | "id": "chococraft:choco_disguise_leggings" 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/choco_disguise_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | } 8 | }, 9 | "pattern": [ 10 | "F F", 11 | "FFF", 12 | "FFF" 13 | ], 14 | "result": { 15 | "count": 1, 16 | "id": "chococraft:choco_disguise_chestplate" 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/misc/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:misc", 3 | "icon": "chococraft:straw", 4 | "name": "info.chococraft.book.straw.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.straw.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:straw" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/red_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:red_gysahl", 4 | "name": "info.chococraft.book.red_gysahl.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.red_gysahl.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:red_gysahl" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/ChocoboSaddleItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items; 2 | 3 | import net.minecraft.world.item.Item; 4 | 5 | public class ChocoboSaddleItem extends Item { 6 | private final int inventorySize; 7 | 8 | public ChocoboSaddleItem(Properties properties, int inventorySize) { 9 | super(properties.stacksTo(4)); 10 | this.inventorySize = inventorySize; 11 | } 12 | 13 | public int getInventorySize() { 14 | return inventorySize; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:chocobos", 3 | "icon": "chococraft:chocobo_feather", 4 | "name": "info.chococraft.book.feather.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.feather.text1" 9 | }, 10 | { 11 | "type": "patchouli:spotlight", 12 | "item": "chococraft:chocobo_feather" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gold_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:gold_gysahl", 4 | "name": "info.chococraft.book.gold_gysahl.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.gold_gysahl.text1" 9 | }, 10 | { 11 | "type": "patchouli:spotlight", 12 | "item": "chococraft:gold_gysahl" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gysahl_cake.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:gysahl_cake", 4 | "name": "info.chococraft.book.gysahl_cake.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.gysahl_cake.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:gysahl_cake" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/pink_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:pink_gysahl", 4 | "name": "info.chococraft.book.pink_gysahl.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.pink_gysahl.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:pink_gysahl" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/whistle.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:equipments", 3 | "icon": "chococraft:chocobo_whistle", 4 | "name": "info.chococraft.book.whistle.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.whistle.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:chocobo_whistle" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_saddle.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | }, 8 | "L": { 9 | "tag": "c:leathers" 10 | }, 11 | "T": { 12 | "tag": "c:strings" 13 | } 14 | }, 15 | "pattern": [ 16 | "TLT", 17 | " F " 18 | ], 19 | "result": { 20 | "count": 1, 21 | "id": "chococraft:chocobo_saddle" 22 | } 23 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/armor/AbstractChocoDisguiseItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items.armor; 2 | 3 | import net.minecraft.core.Holder; 4 | import net.minecraft.world.item.ArmorItem; 5 | import net.minecraft.world.item.ArmorMaterial; 6 | 7 | public abstract class AbstractChocoDisguiseItem extends ArmorItem { 8 | 9 | public AbstractChocoDisguiseItem(Holder material, ArmorItem.Type type, Properties properties) { 10 | super(material, type, properties); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/loverly_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:loverly_gysahl_green", 4 | "name": "info.chococraft.book.loverly_gysahl.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.loverly_gysahl.text1" 9 | }, 10 | { 11 | "type": "patchouli:spotlight", 12 | "item": "chococraft:loverly_gysahl_green" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/loot_table/blocks/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "bonus_rolls": 0.0, 6 | "conditions": [ 7 | { 8 | "condition": "minecraft:survives_explosion" 9 | } 10 | ], 11 | "entries": [ 12 | { 13 | "type": "minecraft:item", 14 | "name": "chococraft:straw" 15 | } 16 | ], 17 | "rolls": 1.0 18 | } 19 | ], 20 | "random_sequence": "chococraft:blocks/straw" 21 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_saddle_bags.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | }, 8 | "L": { 9 | "tag": "c:leathers" 10 | }, 11 | "S": { 12 | "item": "chococraft:chocobo_saddle" 13 | } 14 | }, 15 | "pattern": [ 16 | " F ", 17 | "LSL", 18 | " L " 19 | ], 20 | "result": { 21 | "count": 1, 22 | "id": "chococraft:chocobo_saddle_bags" 23 | } 24 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/blockstates/gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "age=0": { 4 | "model": "chococraft:block/gysahl_green_stage0" 5 | }, 6 | "age=1": { 7 | "model": "chococraft:block/gysahl_green_stage1" 8 | }, 9 | "age=2": { 10 | "model": "chococraft:block/gysahl_green_stage2" 11 | }, 12 | "age=3": { 13 | "model": "chococraft:block/gysahl_green_stage3" 14 | }, 15 | "age=4": { 16 | "model": "chococraft:block/gysahl_green_stage4" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/chicobo.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:chocobos", 3 | "icon": "chococraft:yellow_chocobo_spawn_egg", 4 | "name": "info.chococraft.book.chicobo.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.chicobo.text1" 9 | }, 10 | { 11 | "type": "patchouli:entity", 12 | "entity": "chococraft:chocobo{Age:-1,Color:0b}", 13 | "name": "Chicobo (Yellow)" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/config/ChococraftMenuIntegration.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.config; 2 | 3 | import com.terraformersmc.modmenu.api.ConfigScreenFactory; 4 | import com.terraformersmc.modmenu.api.ModMenuApi; 5 | import me.shedaniel.autoconfig.AutoConfig; 6 | 7 | public class ChococraftMenuIntegration implements ModMenuApi { 8 | @Override 9 | public ConfigScreenFactory getModConfigScreenFactory() { 10 | return parent -> AutoConfig.getConfigScreen(FabricChocoConfig.class, parent).get(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/items/FabricChocoDisguiseItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.items; 2 | 3 | import net.chococraft.common.items.armor.AbstractChocoDisguiseItem; 4 | import net.minecraft.core.Holder; 5 | import net.minecraft.world.item.ArmorItem; 6 | import net.minecraft.world.item.ArmorMaterial; 7 | 8 | public class FabricChocoDisguiseItem extends AbstractChocoDisguiseItem { 9 | public FabricChocoDisguiseItem(Holder material, ArmorItem.Type type, Properties properties) { 10 | super(material, type, properties); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/pickled_gysahl_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "chococraft:gysahl_green" 7 | }, 8 | { 9 | "item": "chococraft:gysahl_green" 10 | }, 11 | { 12 | "item": "chococraft:gysahl_green" 13 | }, 14 | { 15 | "item": "minecraft:sugar" 16 | }, 17 | { 18 | "item": "minecraft:water_bucket" 19 | } 20 | ], 21 | "result": { 22 | "count": 3, 23 | "id": "chococraft:pickled_gysahl_raw" 24 | } 25 | } -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/event/MountEvent.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.event; 2 | 3 | import dev.architectury.event.Event; 4 | import dev.architectury.event.EventFactory; 5 | import net.minecraft.world.InteractionResult; 6 | import net.minecraft.world.entity.Entity; 7 | import net.minecraft.world.level.Level; 8 | 9 | public interface MountEvent { 10 | Event MOUNTING = EventFactory.createLoop(new MountEvent.Mounting[0]); 11 | 12 | interface Mounting { 13 | InteractionResult onMount(Entity entityMounting, Entity entityBeingMounted, Level level, boolean isMounting); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2G 2 | 3 | minecraft_version=1.21.1 4 | enabled_platforms=fabric,neoforge 5 | 6 | archives_base_name=chococraft 7 | mod_version=0.11.11 8 | maven_group=net.chococraft 9 | 10 | architectury_version=13.0.8 11 | 12 | fabric_loader_version=0.16.14 13 | fabric_api_version=0.116.3+1.21.1 14 | cloth_config_version=15.0.140 15 | mod_menu_version=11.0.3 16 | 17 | neoforge_version=21.1.181 18 | 19 | #Publishing 20 | curseforge_id=225280 21 | modrinth_id=bPTEaC7v 22 | 23 | jei_version=19.21.0.247 24 | patchouli_version=1.21-88 25 | patchouli_provider_version=1.21.1-1.0.11-Snapshot.5 26 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/inventory/SaddleBagMenu.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.inventory; 2 | 3 | import net.chococraft.common.entity.AbstractChocobo; 4 | import net.chococraft.registry.ModMenus; 5 | import net.minecraft.world.entity.player.Inventory; 6 | import net.minecraft.world.inventory.AbstractContainerMenu; 7 | 8 | public abstract class SaddleBagMenu extends AbstractContainerMenu { 9 | private final AbstractChocobo chocobo; 10 | 11 | public SaddleBagMenu(int id, Inventory inventory, AbstractChocobo chocobo) { 12 | super(ModMenus.CHOCOBO.get(), id); 13 | this.chocobo = chocobo; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/registry/ModDataSerializers.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.registry; 2 | 3 | import net.chococraft.common.entity.properties.ChocoboColor; 4 | import net.chococraft.common.entity.properties.MovementType; 5 | import net.minecraft.network.syncher.EntityDataSerializer; 6 | 7 | public class ModDataSerializers { 8 | public final static EntityDataSerializer CHOCOBO_COLOR = EntityDataSerializer.forValueType(ChocoboColor.STREAM_CODEC); 9 | public final static EntityDataSerializer MOVEMENT_TYPE = EntityDataSerializer.forValueType(MovementType.STREAM_CODEC); 10 | } 11 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/gysahl_cake.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "B": { 6 | "item": "minecraft:milk_bucket" 7 | }, 8 | "E": { 9 | "tag": "c:eggs" 10 | }, 11 | "G": { 12 | "item": "chococraft:gysahl_green" 13 | }, 14 | "S": { 15 | "item": "minecraft:sugar" 16 | }, 17 | "W": { 18 | "tag": "c:crops/wheat" 19 | } 20 | }, 21 | "pattern": [ 22 | "BGB", 23 | "SES", 24 | "WGW" 25 | ], 26 | "result": { 27 | "count": 1, 28 | "id": "chococraft:gysahl_cake" 29 | } 30 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/datagen/client/ChocoItemModels.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.datagen.client; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.minecraft.data.PackOutput; 5 | import net.neoforged.neoforge.client.model.generators.ItemModelProvider; 6 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 7 | 8 | public class ChocoItemModels extends ItemModelProvider { 9 | public ChocoItemModels(PackOutput packOutput, ExistingFileHelper helper) { 10 | super(packOutput, Chococraft.MOD_ID, helper); 11 | } 12 | 13 | @Override 14 | protected void registerModels() { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/recipe/chocobo_saddle_pack.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "F": { 6 | "item": "chococraft:chocobo_feather" 7 | }, 8 | "L": { 9 | "tag": "c:leathers" 10 | }, 11 | "S": { 12 | "item": "chococraft:chocobo_saddle_bags" 13 | }, 14 | "T": { 15 | "tag": "c:strings" 16 | }, 17 | "W": { 18 | "item": "minecraft:white_wool" 19 | } 20 | }, 21 | "pattern": [ 22 | "TFT", 23 | "WSW", 24 | "TLT" 25 | ], 26 | "result": { 27 | "count": 1, 28 | "id": "chococraft:chocobo_saddle_pack" 29 | } 30 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/worldgen/placed_feature/patch_gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "feature": "chococraft:patch_gysahl_green", 3 | "placement": [ 4 | { 5 | "type": "minecraft:count", 6 | "count": { 7 | "type": "minecraft:uniform", 8 | "max_inclusive": 5, 9 | "min_inclusive": 0 10 | } 11 | }, 12 | { 13 | "type": "minecraft:rarity_filter", 14 | "chance": 32 15 | }, 16 | { 17 | "type": "minecraft:in_square" 18 | }, 19 | { 20 | "type": "minecraft:heightmap", 21 | "heightmap": "WORLD_SURFACE_WG" 22 | }, 23 | { 24 | "type": "minecraft:biome" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/DefaultNames.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity; 2 | 3 | import net.chococraft.ChococraftExpectPlatform; 4 | import net.minecraft.network.chat.Component; 5 | import net.minecraft.network.chat.MutableComponent; 6 | import net.minecraft.util.RandomSource; 7 | 8 | import java.util.List; 9 | 10 | public class DefaultNames { 11 | public static MutableComponent getRandomName(RandomSource random, boolean isMale) { 12 | List names = isMale ? ChococraftExpectPlatform.getConfiguredMaleNames() : ChococraftExpectPlatform.getConfiguredFemaleNames(); 13 | return Component.literal(names.get(random.nextInt(names.size()))); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/CustomBlockNamedItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items; 2 | 3 | import net.minecraft.world.item.ItemNameBlockItem; 4 | import net.minecraft.world.level.block.Block; 5 | 6 | import java.util.function.Supplier; 7 | 8 | public class CustomBlockNamedItem extends ItemNameBlockItem { 9 | private final Supplier blockSupplier; 10 | 11 | public CustomBlockNamedItem(Supplier blockSupplier, Properties properties) { 12 | super(null, properties); 13 | this.blockSupplier = blockSupplier; 14 | } 15 | 16 | @Override 17 | public Block getBlock() { 18 | return this.blockSupplier.get() == null ? null : this.blockSupplier.get(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/patchouli_books/chocopedia/book.json: -------------------------------------------------------------------------------- 1 | { 2 | "book_texture": "chococraft:textures/gui/patchouli_book.png", 3 | "creative_tab": "chococraft:tab", 4 | "custom_book_item": "chococraft:chocopedia", 5 | "dont_generate_book": true, 6 | "filler_texture": "chococraft:textures/gui/chocobo_page_filler.png", 7 | "i18n": true, 8 | "landing_text": "info.chococraft.book.landing", 9 | "macros": { 10 | "$(item)": "$(#c47567)" 11 | }, 12 | "model": "chococraft:chocopedia", 13 | "name": "info.chocopedia.book.name", 14 | "show_progress": false, 15 | "subtitle": "info.chococraft.book.subtitle", 16 | "use_blocky_font": true, 17 | "use_resource_pack": true 18 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/straw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_the_recipe": { 5 | "conditions": { 6 | "recipe": "chococraft:straw" 7 | }, 8 | "trigger": "minecraft:recipe_unlocked" 9 | }, 10 | "has_wheat": { 11 | "conditions": { 12 | "items": [ 13 | { 14 | "items": "minecraft:wheat" 15 | } 16 | ] 17 | }, 18 | "trigger": "minecraft:inventory_changed" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_wheat" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:straw" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/utils/RandomHelper.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.utils; 2 | 3 | import net.minecraft.util.RandomSource; 4 | 5 | import java.util.InputMismatchException; 6 | 7 | public class RandomHelper { 8 | 9 | //returns true if random returns a value that is under or equal to the percentage required for success 10 | public static boolean getChanceResult(RandomSource random, int percentageForSuccess) { 11 | if (percentageForSuccess == 0) 12 | return false; 13 | if (percentageForSuccess >= 0 && percentageForSuccess <= 100) 14 | return random.nextInt(100) <= percentageForSuccess; 15 | else 16 | throw new InputMismatchException("getChanceResult passed " + percentageForSuccess + " but expected range of 0-100"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9447294 Registries 2 | 66da374e453f3dab2a03e62e19bf559512025683 data/chococraft/neoforge/biome_modifier/add_gysahl_green.json 3 | 9d90899f0b724e63d17f4fa31195252b46ebf1e4 data/chococraft/neoforge/biome_modifier/add_mountain_chocobos.json 4 | 33ec29b1894d9d06d37e0f8f3f34c32d80577594 data/chococraft/neoforge/biome_modifier/add_nether_chocobos.json 5 | 67e465037df8980456dbb83f4beab7649b921148 data/chococraft/neoforge/biome_modifier/add_plains_chocobos.json 6 | 21c644012a3fb5b8715dad0019fb598936fc1e44 data/chococraft/worldgen/configured_feature/patch_gysahl_green.json 7 | c64ac17f8519ff2db5fbd563f6049d9038507d43 data/chococraft/worldgen/placed_feature/patch_gysahl_green.json 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/ChococraftClient.java: -------------------------------------------------------------------------------- 1 | package net.chococraft; 2 | 3 | import net.minecraft.client.model.geom.ModelLayerLocation; 4 | import net.minecraft.resources.ResourceLocation; 5 | 6 | public class ChococraftClient { 7 | public static final ModelLayerLocation CHOCOBO = new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "main"), "chocobo"); 8 | public static final ModelLayerLocation CHICOBO = new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "main"), "chicobo"); 9 | public static final ModelLayerLocation CHOCO_DISGUISE = new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "main"), "choco_disguise"); 10 | 11 | public static void init() { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocopedia.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocopedia" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocopedia" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/red_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:red_gysahl" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:red_gysahl" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/gysahl_cake.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:gysahl_cake" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:gysahl_cake" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/pink_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:pink_gysahl" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:pink_gysahl" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/5e8dc52f761af30b49a5b90ffd9a12169a5eef81: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:01:32.9427276 Block States: chococraft 2 | da757953b730ba5041781877b48069627875faad assets/chococraft/blockstates/gysahl_green.json 3 | ee4b82090b789bb7ce9146b85bc0d2ddae65aa6a assets/chococraft/blockstates/straw.json 4 | 0f2a3e443323555d5aac6a367d7552bda1ddfca8 assets/chococraft/models/block/gysahl_green_stage0.json 5 | c59f4086a189c983715c11c453e3645472269db0 assets/chococraft/models/block/gysahl_green_stage1.json 6 | 3d8c3cfd2c2aa165979791316fb56e212ba30ad1 assets/chococraft/models/block/gysahl_green_stage2.json 7 | ad496aa951fc839877e45660e75144f060b46b8f assets/chococraft/models/block/gysahl_green_stage3.json 8 | e7a5f9c99ecf478d73aa527328ba05cba5919612 assets/chococraft/models/block/gysahl_green_stage4.json 9 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/raw_drumstick.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:chocobos", 3 | "icon": "chococraft:chocobo_drumstick_raw", 4 | "name": "info.chococraft.book.raw_drumstick.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.raw_drumstick.text1" 9 | }, 10 | { 11 | "type": "patchouli:smelting", 12 | "recipe": "chococraft:chocobo_drumstick_cooked" 13 | }, 14 | { 15 | "type": "patchouli:smoking", 16 | "recipe": "chococraft:chocobo_drumstick_cooked_from_smoking" 17 | }, 18 | { 19 | "type": "patchouli:campfire", 20 | "recipe": "chococraft:chocobo_drumstick_cooked_from_campfire_cooking" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/inventory/SaddleItemStackHandler.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.inventory; 2 | 3 | import net.minecraft.world.item.ItemStack; 4 | import net.neoforged.neoforge.items.ItemStackHandler; 5 | 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public class SaddleItemStackHandler extends ItemStackHandler { 9 | public SaddleItemStackHandler() { 10 | super(1); 11 | } 12 | 13 | @Override 14 | public void setStackInSlot(int slot, @NotNull ItemStack stack) { 15 | this.validateSlotIndex(slot); 16 | if (!ItemStack.isSameItem(stacks.get(slot), stack)) { 17 | this.stacks.set(slot, stack); 18 | this.onContentsChanged(slot); 19 | } 20 | } 21 | 22 | @Override 23 | public int getSlotLimit(int slot) { 24 | return 1; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocobo_saddle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_saddle" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_saddle" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/blocks/StrawBlock.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.blocks; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.world.level.BlockGetter; 5 | import net.minecraft.world.level.block.Block; 6 | import net.minecraft.world.level.block.state.BlockState; 7 | import net.minecraft.world.phys.shapes.CollisionContext; 8 | import net.minecraft.world.phys.shapes.VoxelShape; 9 | 10 | public class StrawBlock extends Block { 11 | protected static final VoxelShape AABB = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 1.0D, 15.0D); 12 | 13 | public StrawBlock(Properties properties) { 14 | super(properties); 15 | } 16 | 17 | public VoxelShape getShape(BlockState p_49341_, BlockGetter p_49342_, BlockPos p_49343_, CollisionContext p_49344_) { 18 | return AABB; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/pickled_gysahl_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:pickled_gysahl_raw" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:pickled_gysahl_raw" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocobo_whistle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_whistle" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_whistle" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocobo_saddle_alt.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_saddle_alt" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_saddle_alt" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocobo_saddle_bags.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_saddle_bags" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_saddle_bags" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/gysahl_green_to_seeds.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_gysahl_green": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:gysahl_green" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:gysahl_green_to_seeds" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_gysahl_green" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:gysahl_green_to_seeds" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/pickled_gysahl_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:pickled_gysahl_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:pickled_gysahl_cooked" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:pickled_gysahl_cooked" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/choco_disguise_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:choco_disguise_boots" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:choco_disguise_boots" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/saddle.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:equipments", 3 | "icon": "chococraft:chocobo_saddle", 4 | "name": "info.chococraft.book.saddle.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.saddle.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:chocobo_saddle", 13 | "recipe2": "chococraft:chocobo_saddle_alt" 14 | }, 15 | { 16 | "type": "patchouli:text", 17 | "text": "info.chococraft.book.saddle.text2" 18 | }, 19 | { 20 | "type": "patchouli:crafting", 21 | "recipe": "chococraft:chocobo_saddle_bags", 22 | "recipe2": "chococraft:chocobo_saddle_pack" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/choco_disguise_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:choco_disguise_helmet" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:choco_disguise_helmet" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/choco_disguise_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:choco_disguise_leggings" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:choco_disguise_leggings" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/chocobo_saddle_pack.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_saddle_bags": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_saddle_bags" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_saddle_pack" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_saddle_bags" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_saddle_pack" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/config/BreedingConfigReloadManager.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.config; 2 | 3 | import net.minecraft.server.packs.resources.ResourceManager; 4 | import net.minecraft.server.packs.resources.ResourceManagerReloadListener; 5 | import net.neoforged.neoforge.event.AddReloadListenerEvent; 6 | import net.neoforged.bus.api.EventPriority; 7 | import net.neoforged.bus.api.SubscribeEvent; 8 | 9 | public class BreedingConfigReloadManager implements ResourceManagerReloadListener { 10 | @Override 11 | public void onResourceManagerReload(ResourceManager resourceManager) { 12 | BreedingConfig.loadConfig(); 13 | } 14 | 15 | @SubscribeEvent(priority = EventPriority.HIGHEST) 16 | public void onAddReloadListeners(AddReloadListenerEvent event) { 17 | event.addListener(this); 18 | } 19 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/chocobo_drumstick_cooked.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_drumstick_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_drumstick_cooked" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_drumstick_cooked" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/misc/choco_disguise_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_chocobo_feather": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_feather" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:choco_disguise_chestplate" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_chocobo_feather" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:choco_disguise_chestplate" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/inventory/SlotChocoboSaddle.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.inventory; 2 | 3 | import net.chococraft.common.items.ChocoboSaddleItem; 4 | import net.minecraft.world.Container; 5 | import net.minecraft.world.inventory.Slot; 6 | import net.minecraft.world.item.ItemStack; 7 | 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | public class SlotChocoboSaddle extends Slot { 11 | public SlotChocoboSaddle(Container itemHandler, int index, int xPosition, int yPosition) { 12 | super(itemHandler, index, xPosition, yPosition); 13 | } 14 | 15 | @Override 16 | public boolean mayPlace(@NotNull ItemStack stack) { 17 | return stack.isEmpty() || stack.getItem() instanceof ChocoboSaddleItem; 18 | } 19 | 20 | @Override 21 | public int getMaxStackSize(@NotNull ItemStack stack) { 22 | return 1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/registry/ModFoods.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.registry; 2 | 3 | import net.minecraft.world.food.FoodProperties; 4 | 5 | public class ModFoods { 6 | public static final FoodProperties GYSAHL_GREEN = (new FoodProperties.Builder()).nutrition(1).saturationModifier(1F).build(); 7 | public static final FoodProperties CHOCOBO_DRUMSTICK_RAW = (new FoodProperties.Builder()).nutrition(2).saturationModifier(1F).build(); 8 | public static final FoodProperties CHOCOBO_DRUMSTICK_COOKED = (new FoodProperties.Builder()).nutrition(4).saturationModifier(1F).build(); 9 | public static final FoodProperties PICKLED_GYSAHL_RAW = (new FoodProperties.Builder()).nutrition(1).saturationModifier(1F).build(); 10 | public static final FoodProperties PICKLED_GYSAHL_COOKED = (new FoodProperties.Builder()).nutrition(3).saturationModifier(1F).build(); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/resources/chococraft.accesswidener: -------------------------------------------------------------------------------- 1 | accessWidener v2 named 2 | 3 | accessible field net/minecraft/world/entity/LivingEntity jumping Z 4 | accessible field net/minecraft/world/entity/ai/goal/FollowOwnerGoal owner Lnet/minecraft/world/entity/LivingEntity; 5 | accessible field net/minecraft/world/entity/ai/goal/FollowOwnerGoal navigation Lnet/minecraft/world/entity/ai/navigation/PathNavigation; 6 | accessible field net/minecraft/world/entity/ai/goal/FollowOwnerGoal startDistance F 7 | accessible field net/minecraft/world/entity/ai/goal/FollowOwnerGoal stopDistance F 8 | 9 | accessible field net/minecraft/server/level/ServerPlayer containerCounter I 10 | accessible method net/minecraft/server/level/ServerPlayer nextContainerCounter ()V 11 | accessible method net/minecraft/server/level/ServerPlayer initMenu (Lnet/minecraft/world/inventory/AbstractContainerMenu;)V -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/pickled_gysahl_cooked_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:pickled_gysahl_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:pickled_gysahl_cooked_from_smoking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:pickled_gysahl_cooked_from_smoking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/registry/ModEntities.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.registry; 2 | 3 | import dev.architectury.registry.registries.DeferredRegister; 4 | import dev.architectury.registry.registries.RegistrySupplier; 5 | import net.chococraft.Chococraft; 6 | import net.chococraft.ChococraftExpectPlatform; 7 | import net.chococraft.common.entity.AbstractChocobo; 8 | import net.minecraft.core.registries.Registries; 9 | import net.minecraft.world.entity.EntityType; 10 | 11 | public class ModEntities { 12 | public static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Chococraft.MOD_ID, Registries.ENTITY_TYPE); 13 | 14 | public static final RegistrySupplier> CHOCOBO = ENTITY_TYPES.register("chocobo", () -> 15 | ChococraftExpectPlatform.constructChocoboEntityType().build("chocobo")); 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/sounds.json: -------------------------------------------------------------------------------- 1 | { 2 | "entity.chocobo.kweh": { 3 | "sounds": [ 4 | "chococraft:entity/chocobo/kweh" 5 | ], 6 | "subtitle": "chococraft.subtitle.entity.chocobo.kweh" 7 | }, 8 | "entity.chocobo.kwehwhistlefollow": { 9 | "sounds": [ 10 | "chococraft:entity/chocobo/kwehwhistlefollow" 11 | ], 12 | "subtitle": "chococraft.subtitle.entity.chocobo.kwehwhistlefollow" 13 | }, 14 | "entity.chocobo.kwehwhistlestay": { 15 | "sounds": [ 16 | "chococraft:entity/chocobo/kwehwhistlestay" 17 | ], 18 | "subtitle": "chococraft.subtitle.entity.chocobo.kwehwhistlestay" 19 | }, 20 | "entity.chocobo.kwehwhistlewander": { 21 | "sounds": [ 22 | "chococraft:entity/chocobo/kwehwhistlewander" 23 | ], 24 | "subtitle": "chococraft.subtitle.entity.chocobo.kwehwhistlewander" 25 | } 26 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/chocobo_drumstick_cooked_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_drumstick_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_drumstick_cooked_from_smoking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_drumstick_cooked_from_smoking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/registry/ModMenus.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.registry; 2 | 3 | import dev.architectury.registry.menu.MenuRegistry; 4 | import dev.architectury.registry.registries.DeferredRegister; 5 | import dev.architectury.registry.registries.RegistrySupplier; 6 | import net.chococraft.Chococraft; 7 | import net.chococraft.ChococraftExpectPlatform; 8 | import net.chococraft.common.inventory.SaddleBagMenu; 9 | import net.minecraft.core.registries.Registries; 10 | import net.minecraft.world.inventory.MenuType; 11 | 12 | public class ModMenus { 13 | public static final DeferredRegister> MENU_TYPES = DeferredRegister.create(Chococraft.MOD_ID, Registries.MENU); 14 | 15 | public static final RegistrySupplier> CHOCOBO = MENU_TYPES.register("chocobo_screen", () -> 16 | MenuRegistry.ofExtended(ChococraftExpectPlatform::constructMenu)); 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/pickled_gysahl_cooked_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:pickled_gysahl_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:pickled_gysahl_cooked_from_campfire_cooking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:pickled_gysahl_cooked_from_campfire_cooking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/pickled_gysahl.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:pickled_gysahl_raw", 4 | "name": "info.chococraft.book.pickled_gysahl.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.pickled_gysahl.text1" 9 | }, 10 | { 11 | "type": "patchouli:crafting", 12 | "recipe": "chococraft:pickled_gysahl_raw" 13 | }, 14 | { 15 | "type": "patchouli:smelting", 16 | "recipe": "chococraft:pickled_gysahl_cooked" 17 | }, 18 | { 19 | "type": "patchouli:smoking", 20 | "recipe": "chococraft:pickled_gysahl_cooked_from_smoking" 21 | }, 22 | { 23 | "type": "patchouli:campfire", 24 | "recipe": "chococraft:pickled_gysahl_cooked_from_campfire_cooking" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/advancement/recipes/food/chocobo_drumstick_cooked_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_raw_drumstick": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "chococraft:chocobo_drumstick_raw" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "chococraft:chocobo_drumstick_cooked_from_campfire_cooking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_raw_drumstick" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "chococraft:chocobo_drumstick_cooked_from_campfire_cooking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/inventory/SlotChocoboSaddle.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.inventory; 2 | 3 | import net.chococraft.common.items.ChocoboSaddleItem; 4 | import net.minecraft.world.item.ItemStack; 5 | import net.neoforged.neoforge.items.IItemHandler; 6 | import net.neoforged.neoforge.items.SlotItemHandler; 7 | 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | public class SlotChocoboSaddle extends SlotItemHandler { 11 | public SlotChocoboSaddle(IItemHandler itemHandler, int index, int xPosition, int yPosition) { 12 | super(itemHandler, index, xPosition, yPosition); 13 | } 14 | 15 | @Override 16 | public boolean mayPlace(@NotNull ItemStack stack) { 17 | return stack.isEmpty() || stack.getItem() instanceof ChocoboSaddleItem; 18 | } 19 | 20 | @Override 21 | public int getMaxStackSize(@NotNull ItemStack stack) { 22 | return 1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/handler/RidingEventHandler.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.handler; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.common.entity.AbstractChocobo; 5 | import net.neoforged.fml.common.EventBusSubscriber; 6 | import net.neoforged.neoforge.event.entity.EntityMountEvent; 7 | import net.neoforged.bus.api.SubscribeEvent; 8 | 9 | @EventBusSubscriber(modid = Chococraft.MOD_ID) 10 | public class RidingEventHandler { 11 | @SubscribeEvent 12 | public static void onMountEntity(EntityMountEvent event) { 13 | if (event.isMounting()) return; 14 | if (!event.getEntityBeingMounted().isAlive()) return; 15 | if (!(event.getEntityBeingMounted() instanceof AbstractChocobo)) return; 16 | 17 | if (event.getEntityBeingMounted().isInWater()) return; 18 | 19 | if (!event.getEntityBeingMounted().onGround()) 20 | event.setCanceled(true); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/worldgen/configured_feature/patch_gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:random_patch", 3 | "config": { 4 | "feature": { 5 | "feature": { 6 | "type": "minecraft:simple_block", 7 | "config": { 8 | "to_place": { 9 | "type": "minecraft:simple_state_provider", 10 | "state": { 11 | "Name": "chococraft:gysahl_green", 12 | "Properties": { 13 | "age": "4" 14 | } 15 | } 16 | } 17 | } 18 | }, 19 | "placement": [ 20 | { 21 | "type": "minecraft:block_predicate_filter", 22 | "predicate": { 23 | "type": "minecraft:matching_blocks", 24 | "blocks": "minecraft:air" 25 | } 26 | } 27 | ] 28 | }, 29 | "tries": 96, 30 | "xz_spread": 7, 31 | "y_spread": 3 32 | } 33 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/chocodisguise.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:equipments", 3 | "icon": "chococraft:choco_disguise_helmet", 4 | "name": "info.chococraft.book.chocodisguise.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.chocodisguise.text1" 9 | }, 10 | { 11 | "type": "patchouli:image", 12 | "border": true, 13 | "images": [ 14 | "chococraft:textures/gui/entry/chocodisguise.png" 15 | ] 16 | }, 17 | { 18 | "type": "patchouli:crafting", 19 | "recipe": "chococraft:choco_disguise_helmet", 20 | "recipe2": "chococraft:choco_disguise_chestplate" 21 | }, 22 | { 23 | "type": "patchouli:crafting", 24 | "recipe": "chococraft:choco_disguise_leggings", 25 | "recipe2": "chococraft:choco_disguise_boots" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yaml: -------------------------------------------------------------------------------- 1 | name: 💡 Suggestions 2 | description: For suggesting changes / additions 3 | title: "[Suggestion]: " 4 | labels: [suggestion, enhancement] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to fill out the feature request! 10 | - type: checkboxes 11 | id: general-info 12 | attributes: 13 | label: General Info 14 | description: You may select more than one. 15 | options: 16 | - label: I would like to propose new content 17 | - label: I would like to propose changes 18 | - label: I would like to propose another thing 19 | validations: 20 | required: false 21 | - type: textarea 22 | id: suggestion-description 23 | attributes: 24 | label: Suggestion Description 25 | description: Tell us your suggestion 26 | placeholder: I want this to happen 27 | validations: 28 | required: true 29 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:gysahls", 3 | "icon": "chococraft:gysahl_green", 4 | "name": "info.chococraft.book.gysahl_green.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.gysahl_green.text1" 9 | }, 10 | { 11 | "type": "patchouli:image", 12 | "border": true, 13 | "images": [ 14 | "chococraft:textures/gui/entry/gysahl.png" 15 | ], 16 | "text": "info.chococraft.book.gysahl_green.text2" 17 | }, 18 | { 19 | "type": "patchouli:crafting", 20 | "recipe": "chococraft:gysahl_green_to_seeds", 21 | "text": "info.chococraft.book.gysahl_green.text3" 22 | }, 23 | { 24 | "type": "patchouli:text", 25 | "text": "info.chococraft.book.gysahl_green.text4" 26 | }, 27 | { 28 | "type": "patchouli:spotlight", 29 | "item": "chococraft:gysahl_green" 30 | } 31 | ] 32 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/datagen/client/ChocoBlockModels.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.datagen.client; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.registry.ModRegistry; 5 | import net.minecraft.data.PackOutput; 6 | import net.minecraft.resources.ResourceLocation; 7 | import net.neoforged.neoforge.client.model.generators.BlockModelProvider; 8 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 9 | 10 | public class ChocoBlockModels extends BlockModelProvider { 11 | public ChocoBlockModels(PackOutput packOutput, ExistingFileHelper existingFileHelper) { 12 | super(packOutput, Chococraft.MOD_ID, existingFileHelper); 13 | } 14 | 15 | @Override 16 | protected void registerModels() { 17 | buildStraw(ModRegistry.STRAW.getId()); 18 | } 19 | 20 | 21 | protected void buildStraw(ResourceLocation resourceLocation) { 22 | withExistingParent(resourceLocation.getPath(), 23 | mcLoc("block/carpet")) 24 | .texture("wool", modLoc(BLOCK_FOLDER + "/" + resourceLocation.getPath())); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /neoforge/src/main/resources/META-INF/neoforge.mods.toml: -------------------------------------------------------------------------------- 1 | modLoader="javafml" 2 | loaderVersion="[4,)" 3 | issueTrackerURL="https://github.com/Mrbysco/ChocoCraft4/issues" 4 | license="MIT" 5 | 6 | [[mods]] 7 | modId="chococraft" 8 | version = "${version}" 9 | displayName="Chococraft 4" 10 | displayURL="https://www.curseforge.com/minecraft/mc-mods/chococraft" 11 | authors="Mrbysco, Xalcon, Slayer5934, balika011" 12 | logoFile="icon.png" 13 | credits="Thanks to EddieV for the original Chococraft, ArnoSaxena(Torojimas) and clienthax for maintaining it" 14 | description=''' 15 | Chocobos in Minecraft 16 | ''' 17 | 18 | [[dependencies.chococraft]] 19 | modId = "neoforge" 20 | type = "required" 21 | versionRange = "[21.0.75-beta,)" 22 | ordering = "NONE" 23 | side = "BOTH" 24 | 25 | [[dependencies.chococraft]] 26 | modId = "minecraft" 27 | type = "required" 28 | versionRange = "[1.21,1.22)" 29 | ordering = "NONE" 30 | side = "BOTH" 31 | 32 | [[dependencies.chococraft]] 33 | modId = "architectury" 34 | type = "required" 35 | versionRange = "[13.0.4,)" 36 | ordering = "AFTER" 37 | side = "BOTH" -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/modifier/ModModifiers.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.modifier; 2 | 3 | import com.mojang.serialization.MapCodec; 4 | import com.mojang.serialization.codecs.RecordCodecBuilder; 5 | import net.chococraft.Chococraft; 6 | import net.minecraft.world.level.biome.Biome; 7 | import net.neoforged.neoforge.common.world.BiomeModifier; 8 | import net.neoforged.neoforge.registries.DeferredRegister; 9 | import net.neoforged.neoforge.registries.NeoForgeRegistries; 10 | 11 | import java.util.function.Supplier; 12 | 13 | public class ModModifiers { 14 | public static final DeferredRegister> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create( 15 | NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Chococraft.MOD_ID); 16 | 17 | public static final Supplier> ADD_CHOCOBO = BIOME_MODIFIER_SERIALIZERS.register("add_chocobo", () -> 18 | RecordCodecBuilder.mapCodec((builder) -> 19 | builder.group(Biome.LIST_CODEC.fieldOf("biomes").forGetter(AddChocoboModifier::biomes)) 20 | .apply(builder, AddChocoboModifier::new))); 21 | } 22 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/packets/OpenChocoboScreenPayload.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.packets; 2 | 3 | import net.chococraft.fabric.ChococraftFabric; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.StreamCodec; 6 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 7 | 8 | public record OpenChocoboScreenPayload(int entityId, int containerId) implements CustomPacketPayload { 9 | public static final StreamCodec CODEC = CustomPacketPayload.codec( 10 | OpenChocoboScreenPayload::write, 11 | OpenChocoboScreenPayload::new); 12 | public static final Type ID = new Type<>(ChococraftFabric.OPEN_CHOCOBO_SCREEN); 13 | 14 | public OpenChocoboScreenPayload(final FriendlyByteBuf packetBuffer) { 15 | this(packetBuffer.readInt(), packetBuffer.readInt()); 16 | } 17 | 18 | public void write(FriendlyByteBuf buf) { 19 | buf.writeInt(entityId); 20 | buf.writeInt(containerId); 21 | } 22 | 23 | @Override 24 | public Type type() { 25 | return ID; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/registry/ModDataSerializers.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.registry; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.common.entity.properties.ChocoboColor; 5 | import net.chococraft.common.entity.properties.MovementType; 6 | import net.minecraft.network.syncher.EntityDataSerializer; 7 | import net.neoforged.neoforge.registries.DeferredRegister; 8 | import net.neoforged.neoforge.registries.NeoForgeRegistries; 9 | 10 | import java.util.function.Supplier; 11 | 12 | public class ModDataSerializers { 13 | public static final DeferredRegister> ENTITY_DATA_SERIALIZER = DeferredRegister.create(NeoForgeRegistries.Keys.ENTITY_DATA_SERIALIZERS, Chococraft.MOD_ID); 14 | 15 | public final static Supplier> CHOCOBO_COLOR = ENTITY_DATA_SERIALIZER.register("chocobo_color", () -> EntityDataSerializer.forValueType(ChocoboColor.STREAM_CODEC)); 16 | public final static Supplier> MOVEMENT_TYPE = ENTITY_DATA_SERIALIZER.register("movement_type", () -> EntityDataSerializer.forValueType(MovementType.STREAM_CODEC)); 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/properties/MovementType.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity.properties; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import net.minecraft.network.codec.ByteBufCodecs; 5 | import net.minecraft.network.codec.StreamCodec; 6 | import net.minecraft.util.ByIdMap; 7 | import net.minecraft.util.StringRepresentable; 8 | 9 | import java.util.Locale; 10 | import java.util.function.IntFunction; 11 | 12 | public enum MovementType implements StringRepresentable { 13 | WANDER(0), FOLLOW_OWNER(1), STANDSTILL(2); 14 | 15 | public static final StringRepresentable.EnumCodec CODEC = StringRepresentable.fromEnum(MovementType::values); 16 | private static final IntFunction BY_ID = ByIdMap.continuous(MovementType::getId, values(), ByIdMap.OutOfBoundsStrategy.ZERO); 17 | public static final StreamCodec STREAM_CODEC = ByteBufCodecs.idMapper(BY_ID, MovementType::getId); 18 | private final int id; 19 | 20 | MovementType(int id) { 21 | this.id = id; 22 | } 23 | 24 | public int getId() { 25 | return id; 26 | } 27 | 28 | @Override 29 | public String getSerializedName() { 30 | return this.name().toLowerCase(Locale.ROOT); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /LICENSE-code.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | - Copyright (c) 2017 Xalcon 4 | - Copyright (c) 2018 Slayer5934 5 | - Copyright (c) 2019-2021 balika011 6 | - Copyright (c) 2021 Mrbysco 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/ChocopediaItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.ChococraftExpectPlatform; 5 | import net.minecraft.resources.ResourceLocation; 6 | import net.minecraft.world.InteractionHand; 7 | import net.minecraft.world.InteractionResult; 8 | import net.minecraft.world.InteractionResultHolder; 9 | import net.minecraft.world.entity.player.Player; 10 | import net.minecraft.world.item.Item; 11 | import net.minecraft.world.item.ItemStack; 12 | import net.minecraft.world.level.Level; 13 | 14 | public class ChocopediaItem extends Item { 15 | 16 | public ChocopediaItem(Properties properties) { 17 | super(properties); 18 | } 19 | 20 | @Override 21 | public InteractionResultHolder use(Level level, Player playerIn, InteractionHand handIn) { 22 | if (level.isClientSide) { 23 | if (ChococraftExpectPlatform.isModLoaded("patchouli")) { 24 | vazkii.patchouli.api.PatchouliAPI.get().openBookGUI(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "chocopedia")); 25 | } else { 26 | net.chococraft.client.gui.ChocoboBookScreen.openScreen(); 27 | } 28 | } 29 | return new InteractionResultHolder<>(InteractionResult.SUCCESS, playerIn.getItemInHand(handIn)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /fabric/src/main/resources/fabric.mod.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": 1, 3 | "id": "chococraft", 4 | "version": "${version}", 5 | "name": "Chococraft 4", 6 | "description": "Chocobos in Minecraft\n Thanks to EddieV for the original Chococraft, ArnoSaxena(Torojimas) and clienthax for maintaining it", 7 | "authors": [ 8 | "Mrbysco", 9 | "Xalcon", 10 | "Slayer5934", 11 | "balika011" 12 | ], 13 | "contributors": [ 14 | "Kraehe" 15 | ], 16 | "contact": { 17 | "homepage": "https://www.curseforge.com/minecraft/mc-mods/chococraft", 18 | "sources": "https://github.com/Mrbysco/ChocoCraft4", 19 | "issues": "https://github.com/Mrbysco/ChocoCraft4/issues" 20 | }, 21 | "license": "MIT", 22 | "icon": "icon.png", 23 | "environment": "*", 24 | "entrypoints": { 25 | "main": [ 26 | "net.chococraft.fabric.ChococraftFabric" 27 | ], 28 | "client": [ 29 | "net.chococraft.fabric.ChococraftClientFabric" 30 | ], 31 | "modmenu": [ 32 | "net.chococraft.fabric.common.config.ChococraftMenuIntegration" 33 | ] 34 | }, 35 | "mixins": [ 36 | "chococraft.mixins.json" 37 | ], 38 | "depends": { 39 | "fabricloader": ">=0.15.11", 40 | "minecraft": "~1.21", 41 | "java": ">=21", 42 | "fabric-api": "*", 43 | "cloth-config": ">=15", 44 | "architectury": ">=13.0.4" 45 | } 46 | } -------------------------------------------------------------------------------- /common/build.gradle: -------------------------------------------------------------------------------- 1 | architectury { 2 | common(rootProject.enabled_platforms.split(",")) 3 | } 4 | 5 | loom { 6 | accessWidenerPath = file("src/main/resources/chococraft.accesswidener") 7 | } 8 | 9 | dependencies { 10 | // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies 11 | // Do NOT use other classes from fabric loader 12 | modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" 13 | // Remove the next line if you don't want to depend on the API 14 | modApi "dev.architectury:architectury:${rootProject.architectury_version}" 15 | 16 | modImplementation("vazkii.patchouli:Patchouli-xplat:${patchouli_version}") 17 | } 18 | 19 | publishing { 20 | publications { 21 | mavenCommon(MavenPublication) { 22 | artifactId = rootProject.archives_base_name + "-" + rootProject.minecraft_version + "-" + project.name 23 | from components.java 24 | } 25 | } 26 | 27 | repositories { 28 | if (System.getenv().SAP_SECRET) { 29 | maven { 30 | url "https://maven.saps.dev/releases" 31 | credentials { 32 | username = "mrbysco" 33 | password = "${System.getenv().SAP_SECRET}" 34 | } 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/world/FeatureInjector.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.world; 2 | 3 | import net.chococraft.common.world.worldgen.ModFeatures; 4 | import net.chococraft.fabric.ChococraftFabric; 5 | import net.chococraft.fabric.common.config.FabricChocoConfig; 6 | import net.chococraft.registry.ModEntities; 7 | import net.fabricmc.fabric.api.biome.v1.BiomeModifications; 8 | import net.fabricmc.fabric.api.biome.v1.BiomeSelectionContext; 9 | import net.minecraft.tags.BiomeTags; 10 | import net.minecraft.world.entity.MobCategory; 11 | import net.minecraft.world.level.levelgen.GenerationStep; 12 | 13 | import java.util.function.Predicate; 14 | 15 | public class FeatureInjector { 16 | 17 | public static void init() { 18 | FabricChocoConfig config = ChococraftFabric.config.get(); 19 | 20 | Predicate overworld = (ctx -> ctx.hasTag(BiomeTags.IS_OVERWORLD)); 21 | BiomeModifications.addFeature(overworld, GenerationStep.Decoration.VEGETAL_DECORATION, ModFeatures.PLACED_PATCH_GYSAHL_GREEN); 22 | 23 | Predicate plains = (ctx -> ctx.hasTag(BiomeTags.HAS_VILLAGE_PLAINS) || ctx.hasTag(BiomeTags.IS_MOUNTAIN) || ctx.hasTag(BiomeTags.IS_NETHER)); 24 | BiomeModifications.addSpawn(plains, MobCategory.CREATURE, ModEntities.CHOCOBO.get(), 25 | config.spawning.chocoboSpawnWeight, config.spawning.chocoboPackSizeMin, config.spawning.chocoboPackSizeMax); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/client/renderer/layers/LayerPlumage.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.client.renderer.layers; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.chococraft.Chococraft; 5 | import net.chococraft.common.entity.AbstractChocobo; 6 | import net.minecraft.client.model.EntityModel; 7 | import net.minecraft.client.renderer.MultiBufferSource; 8 | import net.minecraft.client.renderer.entity.RenderLayerParent; 9 | import net.minecraft.client.renderer.entity.layers.RenderLayer; 10 | import net.minecraft.resources.ResourceLocation; 11 | 12 | public class LayerPlumage extends RenderLayer> { 13 | 14 | private final ResourceLocation PLUMAGE = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chocobos/plumage.png"); 15 | 16 | public LayerPlumage(RenderLayerParent> rendererIn) { 17 | super(rendererIn); 18 | } 19 | 20 | @Override 21 | public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLightIn, AbstractChocobo chocoboEntity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { 22 | if (!chocoboEntity.isInvisible() && chocoboEntity.isMale() && !chocoboEntity.isBaby()) { 23 | renderColoredCutoutModel(this.getParentModel(), PLUMAGE, poseStack, bufferSource, packedLightIn, chocoboEntity, -1); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/client/NeoForgeClientHandler.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.client; 2 | 3 | import net.chococraft.ChococraftClient; 4 | import net.chococraft.client.gui.ChocoboInventoryScreen; 5 | import net.chococraft.client.models.armor.ChocoDisguiseModel; 6 | import net.chococraft.client.models.entities.AdultChocoboModel; 7 | import net.chococraft.client.models.entities.ChicoboModel; 8 | import net.chococraft.client.renderer.entities.ChocoboRenderer; 9 | import net.chococraft.registry.ModEntities; 10 | import net.chococraft.registry.ModMenus; 11 | import net.neoforged.neoforge.client.event.EntityRenderersEvent; 12 | import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; 13 | 14 | public class NeoForgeClientHandler { 15 | public static void registerEntityRenders(EntityRenderersEvent.RegisterRenderers event) { 16 | event.registerEntityRenderer(ModEntities.CHOCOBO.get(), ChocoboRenderer::new); 17 | } 18 | 19 | public static void registerMenuScreen(RegisterMenuScreensEvent event) { 20 | event.register(ModMenus.CHOCOBO.get(), ChocoboInventoryScreen::new); 21 | } 22 | 23 | public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { 24 | event.registerLayerDefinition(ChococraftClient.CHOCOBO, AdultChocoboModel::createBodyLayer); 25 | event.registerLayerDefinition(ChococraftClient.CHICOBO, ChicoboModel::createBodyLayer); 26 | event.registerLayerDefinition(ChococraftClient.CHOCO_DISGUISE, ChocoDisguiseModel::createArmorDefinition); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/client/renderer/layers/LayerCollar.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.client.renderer.layers; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.chococraft.Chococraft; 5 | import net.chococraft.common.entity.AbstractChocobo; 6 | import net.minecraft.client.model.EntityModel; 7 | import net.minecraft.client.renderer.MultiBufferSource; 8 | import net.minecraft.client.renderer.entity.RenderLayerParent; 9 | import net.minecraft.client.renderer.entity.layers.RenderLayer; 10 | import net.minecraft.resources.ResourceLocation; 11 | 12 | public class LayerCollar extends RenderLayer> { 13 | private final ResourceLocation COLLAR_CHOCOBO = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chocobos/collar.png"); 14 | private final ResourceLocation COLLAR_CHICOBO = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chicobos/collar.png"); 15 | 16 | public LayerCollar(RenderLayerParent> rendererIn) { 17 | super(rendererIn); 18 | } 19 | 20 | @Override 21 | public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLightIn, AbstractChocobo chocoboEntity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { 22 | if (chocoboEntity.isTame() && !chocoboEntity.isInvisible()) { 23 | renderColoredCutoutModel(this.getParentModel(), chocoboEntity.isBaby() ? COLLAR_CHICOBO : COLLAR_CHOCOBO, poseStack, bufferSource, packedLightIn, chocoboEntity, -1); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/goal/ChocoboFollowOwnerGoal.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity.goal; 2 | 3 | import net.chococraft.common.entity.AbstractChocobo; 4 | import net.chococraft.common.entity.properties.MovementType; 5 | import net.minecraft.world.entity.LivingEntity; 6 | import net.minecraft.world.entity.ai.goal.FollowOwnerGoal; 7 | 8 | public class ChocoboFollowOwnerGoal extends FollowOwnerGoal { 9 | private final AbstractChocobo chocobo; 10 | 11 | public ChocoboFollowOwnerGoal(AbstractChocobo chocobo, double speedModifier, float startDistance, float stopDistance) { 12 | super(chocobo, speedModifier, startDistance, stopDistance); 13 | this.chocobo = chocobo; 14 | } 15 | 16 | public boolean canUse() { 17 | LivingEntity livingentity = this.chocobo.getOwner(); 18 | if (livingentity == null) { 19 | return false; 20 | } else if (livingentity.isSpectator()) { 21 | return false; 22 | } else if (this.chocobo.getMovementType() != MovementType.FOLLOW_OWNER) { 23 | return false; 24 | } else if (this.chocobo.distanceToSqr(livingentity) < (double) (this.startDistance * this.startDistance)) { 25 | return false; 26 | } else { 27 | this.owner = livingentity; 28 | return true; 29 | } 30 | } 31 | 32 | public boolean canContinueToUse() { 33 | if (this.navigation.isDone()) { 34 | return false; 35 | } else if (this.chocobo.isOrderedToSit()) { 36 | return false; 37 | } else { 38 | return !(this.chocobo.distanceToSqr(this.owner) <= (double) (this.stopDistance * this.stopDistance)) && this.chocobo.getMovementType() == MovementType.FOLLOW_OWNER; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/registry/ModSounds.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.registry; 2 | 3 | import dev.architectury.registry.registries.DeferredRegister; 4 | import dev.architectury.registry.registries.RegistrySupplier; 5 | import net.chococraft.Chococraft; 6 | import net.minecraft.core.registries.Registries; 7 | import net.minecraft.resources.ResourceLocation; 8 | import net.minecraft.sounds.SoundEvent; 9 | 10 | public class ModSounds { 11 | public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Chococraft.MOD_ID, Registries.SOUND_EVENT); 12 | 13 | public static final RegistrySupplier AMBIENT_SOUND = SOUND_EVENTS.register("entity.chocobo.kweh", () -> 14 | SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "entity.chocobo.kweh"))); 15 | public static final RegistrySupplier WHISTLE_SOUND_FOLLOW = SOUND_EVENTS.register("entity.chocobo.kwehwhistlefollow", () -> 16 | SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "entity.chocobo.kwehwhistlefollow"))); 17 | public static final RegistrySupplier WHISTLE_SOUND_STAY = SOUND_EVENTS.register("entity.chocobo.kwehwhistlestay", () -> 18 | SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "entity.chocobo.kwehwhistlestay"))); 19 | public static final RegistrySupplier WHISTLE_SOUND_WANDER = SOUND_EVENTS.register("entity.chocobo.kwehwhistlewander", () -> 20 | SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "entity.chocobo.kwehwhistlewander"))); 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/goal/ChocoboHealInPenGoal.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity.goal; 2 | 3 | import net.chococraft.common.entity.AbstractChocobo; 4 | import net.chococraft.registry.ModRegistry; 5 | import net.minecraft.core.BlockPos; 6 | import net.minecraft.world.entity.ai.goal.Goal; 7 | import net.minecraft.world.level.block.Blocks; 8 | import net.minecraft.world.level.block.state.BlockState; 9 | import net.minecraft.world.level.block.state.properties.BlockStateProperties; 10 | 11 | import java.util.EnumSet; 12 | 13 | public class ChocoboHealInPenGoal extends Goal { 14 | private final AbstractChocobo chocobo; 15 | 16 | public ChocoboHealInPenGoal(AbstractChocobo chocobo) { 17 | this.chocobo = chocobo; 18 | this.setFlags(EnumSet.of(Flag.JUMP)); 19 | } 20 | 21 | @Override 22 | public boolean canUse() { 23 | boolean cooldown = chocobo.level().getGameTime() % 40 == 0; 24 | boolean canHeal = chocobo.getHealth() != chocobo.getMaxHealth(); 25 | if (cooldown && canHeal) { 26 | return chocobo.level().getBlockState(chocobo.blockPosition()).is(ModRegistry.STRAW.get()); 27 | } 28 | 29 | return false; 30 | } 31 | 32 | @Override 33 | public void start() { 34 | BlockPos pos = chocobo.blockPosition(); 35 | Iterable positions = BlockPos.betweenClosed(pos.offset(-5, 0, -5), pos.offset(5, 0, 5)); 36 | for (BlockPos position : positions) { 37 | BlockState state = chocobo.level().getBlockState(position); 38 | if (state.is(Blocks.WATER_CAULDRON) && state.getValue(BlockStateProperties.LEVEL_CAULDRON) == 3) { 39 | chocobo.heal(chocobo.getRandom().nextInt(3) + 1); 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/modifier/AddChocoboModifier.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.modifier; 2 | 3 | import com.mojang.serialization.MapCodec; 4 | import net.chococraft.neoforge.common.config.NeoForgeChocoConfig; 5 | import net.chococraft.registry.ModEntities; 6 | import net.minecraft.core.Holder; 7 | import net.minecraft.core.HolderSet; 8 | import net.minecraft.world.entity.EntityType; 9 | import net.minecraft.world.level.biome.Biome; 10 | import net.minecraft.world.level.biome.MobSpawnSettings; 11 | import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; 12 | import net.neoforged.neoforge.common.world.BiomeModifier; 13 | import net.neoforged.neoforge.common.world.MobSpawnSettingsBuilder; 14 | import net.neoforged.neoforge.common.world.ModifiableBiomeInfo.BiomeInfo.Builder; 15 | 16 | public record AddChocoboModifier(HolderSet biomes) implements BiomeModifier { 17 | @Override 18 | public void modify(Holder biome, Phase phase, Builder builder) { 19 | if (phase == Phase.ADD && this.biomes.contains(biome)) { 20 | MobSpawnSettingsBuilder spawns = builder.getMobSpawnSettings(); 21 | 22 | MobSpawnSettings.SpawnerData spawner = new SpawnerData(ModEntities.CHOCOBO.get(), 23 | NeoForgeChocoConfig.COMMON.chocoboSpawnWeight.get(), 24 | NeoForgeChocoConfig.COMMON.chocoboPackSizeMin.get(), 25 | NeoForgeChocoConfig.COMMON.chocoboPackSizeMax.get()); 26 | EntityType type = spawner.type; 27 | spawns.addSpawn(type.getCategory(), spawner); 28 | } 29 | } 30 | 31 | @Override 32 | public MapCodec codec() { 33 | return ModModifiers.ADD_CHOCOBO.get(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build and Maven 2 | 3 | on: [push, workflow_dispatch] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v4 10 | - name: Set up JDK 21 11 | uses: actions/setup-java@v4 12 | with: 13 | distribution: 'temurin' 14 | java-version: 21 15 | cache: 'gradle' 16 | - name: Make gradlew executable 17 | run: chmod +x ./gradlew 18 | - name: Build with Gradle 19 | run: ./gradlew build 20 | - uses: actions/upload-artifact@v4 21 | with: 22 | name: NeoForgeArtifact 23 | path: ./neoforge/build/libs/*.jar 24 | - uses: actions/upload-artifact@v4 25 | with: 26 | name: FabricArtifact 27 | path: ./fabric/build/libs/*.jar 28 | - name: Publish to maven 29 | if: contains(github.event.head_commit.message, '[push]') || contains(github.event.head_commit.message, '[build]') 30 | env: 31 | SAP_SECRET: ${{ secrets.SAP_SECRET }} 32 | run: ./gradlew publish 33 | - name: Publish To Curseforge 34 | if: contains(github.event.head_commit.message, '[publish]') || contains(github.event.head_commit.message, '[curseforge]') 35 | env: 36 | CURSEFORGE_KEY: ${{ secrets.CURSEFORGE_KEY }} 37 | run: ./gradlew curseforge --stacktrace 38 | - name: Publish To Modrinth 39 | if: contains(github.event.head_commit.message, '[publish]') || contains(github.event.head_commit.message, '[modrinth]') 40 | env: 41 | MODRINTH_KEY: ${{ secrets.MODRINTH_KEY }} 42 | run: ./gradlew modrinth --stacktrace -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/mixins/HumanoidArmorLayerMixin.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.mixins; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.chococraft.fabric.common.items.FabricChocoDisguiseItem; 5 | import net.minecraft.client.model.HumanoidModel; 6 | import net.minecraft.client.renderer.MultiBufferSource; 7 | import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; 8 | import net.minecraft.world.entity.EquipmentSlot; 9 | import net.minecraft.world.entity.LivingEntity; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Unique; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | import org.spongepowered.asm.mixin.injection.Inject; 14 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 15 | 16 | import java.util.HashMap; 17 | import java.util.Map; 18 | 19 | @Mixin(HumanoidArmorLayer.class) 20 | public abstract class HumanoidArmorLayerMixin, A extends HumanoidModel> { 21 | 22 | @Unique 23 | private final Map> chocoArmorMap = new HashMap<>(); 24 | 25 | @Inject(method = "renderArmorPiece(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;ILnet/minecraft/client/model/HumanoidModel;)V", 26 | at = @At(value = "HEAD"), cancellable = true) 27 | public void chococraft_renderArmorPiece(PoseStack poseStack, MultiBufferSource multiBufferSource, T livingEntity, EquipmentSlot equipmentSlot, int i, A humanoidModel, CallbackInfo ci) { 28 | if (livingEntity.getItemBySlot(equipmentSlot).getItem() instanceof FabricChocoDisguiseItem) { 29 | ci.cancel(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/datagen/client/ChocoSoundProvider.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.datagen.client; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.registry.ModSounds; 5 | import net.minecraft.data.PackOutput; 6 | import net.minecraft.resources.ResourceLocation; 7 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 8 | import net.neoforged.neoforge.common.data.SoundDefinitionsProvider; 9 | 10 | public class ChocoSoundProvider extends SoundDefinitionsProvider { 11 | 12 | public ChocoSoundProvider(PackOutput packOutput, ExistingFileHelper existingFileHelper) { 13 | super(packOutput, Chococraft.MOD_ID, existingFileHelper); 14 | } 15 | 16 | @Override 17 | public void registerSounds() { 18 | this.add(ModSounds.AMBIENT_SOUND, definition() 19 | .subtitle(modSubtitle(ModSounds.AMBIENT_SOUND.getId())) 20 | .with(sound(modLoc("entity/chocobo/kweh")))); 21 | this.add(ModSounds.WHISTLE_SOUND_FOLLOW, definition() 22 | .subtitle(modSubtitle(ModSounds.WHISTLE_SOUND_FOLLOW.getId())) 23 | .with(sound(modLoc("entity/chocobo/kwehwhistlefollow")))); 24 | this.add(ModSounds.WHISTLE_SOUND_STAY, definition() 25 | .subtitle(modSubtitle(ModSounds.WHISTLE_SOUND_STAY.getId())) 26 | .with(sound(modLoc("entity/chocobo/kwehwhistlestay")))); 27 | this.add(ModSounds.WHISTLE_SOUND_WANDER, definition() 28 | .subtitle(modSubtitle(ModSounds.WHISTLE_SOUND_WANDER.getId())) 29 | .with(sound(modLoc("entity/chocobo/kwehwhistlewander")))); 30 | } 31 | 32 | 33 | public String modSubtitle(ResourceLocation id) { 34 | return Chococraft.MOD_ID + ".subtitle." + id.getPath(); 35 | } 36 | 37 | public ResourceLocation modLoc(String name) { 38 | return ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/config/FabricBreedingConfig.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.config; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.GsonBuilder; 5 | import com.google.gson.internal.LinkedTreeMap; 6 | import me.shedaniel.autoconfig.ConfigData; 7 | import me.shedaniel.autoconfig.annotation.Config; 8 | import me.shedaniel.autoconfig.annotation.ConfigEntry; 9 | import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.Comment; 10 | 11 | import java.io.InputStream; 12 | import java.io.InputStreamReader; 13 | import java.io.Reader; 14 | import java.nio.charset.StandardCharsets; 15 | import java.util.List; 16 | import java.util.Map; 17 | 18 | @Config(name = "chococraft-4-breeding") 19 | public class FabricBreedingConfig implements ConfigData { 20 | @ConfigEntry.Gui.Excluded 21 | private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); 22 | @ConfigEntry.Gui.Excluded 23 | public static final LinkedTreeMap>>> defaultBreedingInfo = new LinkedTreeMap<>(); 24 | 25 | @Comment("Controls the Patch Size [Default: 64]") 26 | public LinkedTreeMap>>> breedingInfo = defaultBreedingInfo; 27 | 28 | static { 29 | final LinkedTreeMap>>> breedingMap = new LinkedTreeMap<>(); 30 | 31 | InputStream inputStream = FabricBreedingConfig.class.getResourceAsStream("/breedingDefault.json"); 32 | assert inputStream != null; 33 | Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); 34 | breedingMap.putAll(GSON.fromJson(reader, Map.class)); 35 | if (!breedingMap.isEmpty()) { 36 | defaultBreedingInfo.putAll(breedingMap); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/mixins/EntityMixin.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.mixins; 2 | 3 | import net.chococraft.fabric.event.MountEvent; 4 | import net.minecraft.world.InteractionResult; 5 | import net.minecraft.world.entity.Entity; 6 | import org.jetbrains.annotations.Nullable; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.Shadow; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | import org.spongepowered.asm.mixin.injection.Inject; 11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 13 | 14 | @Mixin(Entity.class) 15 | public class EntityMixin { 16 | 17 | @Shadow 18 | @Nullable 19 | private Entity vehicle; 20 | 21 | @Inject(method = "startRiding(Lnet/minecraft/world/entity/Entity;Z)Z", at = @At( 22 | value = "INVOKE", 23 | target = "Lnet/minecraft/world/entity/Entity;canAddPassenger(Lnet/minecraft/world/entity/Entity;)Z", 24 | shift = At.Shift.BEFORE, 25 | ordinal = 0), cancellable = true) 26 | public void chococraft_startRiding(Entity entity, boolean bl, CallbackInfoReturnable cir) { 27 | //CanMount - Mounting: true 28 | Entity mountingEntity = (Entity) (Object) this; 29 | InteractionResult result = MountEvent.MOUNTING.invoker().onMount(mountingEntity, entity, mountingEntity.level(), true); 30 | if (result == InteractionResult.FAIL) { 31 | cir.setReturnValue(false); 32 | } 33 | } 34 | 35 | @Inject(method = "removeVehicle()V", at = @At(value = "HEAD"), cancellable = true) 36 | public void chococraft_removeVehicle(CallbackInfo ci) { 37 | //CanMount - Mounting: false 38 | if (this.vehicle != null) { 39 | Entity mountingEntity = (Entity) (Object) this; 40 | InteractionResult result = MountEvent.MOUNTING.invoker().onMount(mountingEntity, this.vehicle, mountingEntity.level(), false); 41 | if (result == InteractionResult.FAIL) { 42 | ci.cancel(); 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/mixins/LivingEntityRendererMixin.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.mixins; 2 | 3 | import net.chococraft.fabric.client.layer.ChocodisguiseArmorLayer; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.client.model.EntityModel; 6 | import net.minecraft.client.renderer.entity.EntityRenderer; 7 | import net.minecraft.client.renderer.entity.EntityRendererProvider; 8 | import net.minecraft.client.renderer.entity.LivingEntityRenderer; 9 | import net.minecraft.client.renderer.entity.RenderLayerParent; 10 | import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; 11 | import net.minecraft.client.renderer.entity.layers.RenderLayer; 12 | import net.minecraft.world.entity.LivingEntity; 13 | import org.spongepowered.asm.mixin.Final; 14 | import org.spongepowered.asm.mixin.Mixin; 15 | import org.spongepowered.asm.mixin.Shadow; 16 | import org.spongepowered.asm.mixin.injection.At; 17 | import org.spongepowered.asm.mixin.injection.Inject; 18 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 19 | 20 | import java.util.List; 21 | 22 | @Mixin(LivingEntityRenderer.class) 23 | public abstract class LivingEntityRendererMixin> extends EntityRenderer implements RenderLayerParent { 24 | 25 | @Shadow 26 | @Final 27 | protected List> layers; 28 | 29 | protected LivingEntityRendererMixin(EntityRendererProvider.Context context) { 30 | super(context); 31 | } 32 | 33 | @Inject(method = "addLayer(Lnet/minecraft/client/renderer/entity/layers/RenderLayer;)Z", 34 | at = @At("RETURN")) 35 | public final void chococraft_addLayer(RenderLayer renderLayer, CallbackInfoReturnable cir) { 36 | if (renderLayer instanceof HumanoidArmorLayer) { 37 | LivingEntityRenderer entityRenderer = (LivingEntityRenderer) (Object) this; 38 | this.layers.add(new ChocodisguiseArmorLayer<>(entityRenderer, Minecraft.getInstance().getEntityModels())); 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/datagen/client/ChocoBlockstates.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.datagen.client; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.common.blocks.GysahlGreenBlock; 5 | import net.chococraft.registry.ModRegistry; 6 | import net.minecraft.core.registries.BuiltInRegistries; 7 | import net.minecraft.data.PackOutput; 8 | import net.minecraft.resources.ResourceLocation; 9 | import net.minecraft.world.level.block.Block; 10 | import net.neoforged.neoforge.client.model.generators.BlockStateProvider; 11 | import net.neoforged.neoforge.client.model.generators.ModelFile; 12 | import net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder; 13 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 14 | 15 | public class ChocoBlockstates extends BlockStateProvider { 16 | public ChocoBlockstates(PackOutput packOutput, ExistingFileHelper existingFileHelper) { 17 | super(packOutput, Chococraft.MOD_ID, existingFileHelper); 18 | } 19 | 20 | @Override 21 | protected void registerStatesAndModels() { 22 | buildCrops((GysahlGreenBlock) ModRegistry.GYSAHL_GREEN.get()); 23 | buildStraw(ModRegistry.STRAW.get()); 24 | } 25 | 26 | protected void buildCrops(GysahlGreenBlock block) { 27 | VariantBlockStateBuilder builder = getVariantBuilder(block); 28 | for (int i = 0; i <= block.getMaxAge(); i++) { 29 | ModelFile file = models().cross(BuiltInRegistries.BLOCK.getKey(block).getPath() + "_stage" + (i), 30 | ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "block/" + BuiltInRegistries.BLOCK.getKey(block).getPath() + i)).renderType("cutout"); 31 | builder.partialState().with(block.getAgeProperty(), i).modelForState().modelFile(file).addModel(); 32 | } 33 | } 34 | 35 | protected void buildStraw(Block block) { 36 | ModelFile clusterBlock = models().getExistingFile(modLoc("block/" + BuiltInRegistries.BLOCK.getKey(block).getPath())); 37 | getVariantBuilder(block) 38 | .partialState().modelForState().modelFile(clusterBlock).addModel(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/blocks/GysahlGreenBlock.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.blocks; 2 | 3 | import net.chococraft.registry.ModRegistry; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.tags.BlockTags; 6 | import net.minecraft.world.level.BlockGetter; 7 | import net.minecraft.world.level.ItemLike; 8 | import net.minecraft.world.level.LevelReader; 9 | import net.minecraft.world.level.WorldGenLevel; 10 | import net.minecraft.world.level.block.Block; 11 | import net.minecraft.world.level.block.CropBlock; 12 | import net.minecraft.world.level.block.state.BlockState; 13 | import net.minecraft.world.level.block.state.StateDefinition; 14 | import net.minecraft.world.level.block.state.properties.IntegerProperty; 15 | 16 | public class GysahlGreenBlock extends CropBlock { 17 | public static final int MAX_AGE = 4; 18 | public static final IntegerProperty AGE = IntegerProperty.create("age", 0, MAX_AGE); 19 | 20 | @SuppressWarnings("unused") // used by class factory 21 | public GysahlGreenBlock(Properties properties) { 22 | super(properties); 23 | this.registerDefaultState(this.stateDefinition.any().setValue(this.getAgeProperty(), 0)); 24 | } 25 | 26 | @Override 27 | protected ItemLike getBaseSeedId() { 28 | return ModRegistry.GYSAHL_GREEN_SEEDS::get; 29 | } 30 | 31 | @Override 32 | public boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { 33 | boolean canSurvive = super.canSurvive(state, level, pos); 34 | if (level instanceof WorldGenLevel && state.getValue(AGE) == MAX_AGE) { 35 | BlockPos blockPos2 = pos.below(); 36 | return this.mayPlaceOn(level.getBlockState(blockPos2), level, blockPos2); 37 | } 38 | return canSurvive; 39 | } 40 | 41 | @Override 42 | protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { 43 | return super.mayPlaceOn(state, level, pos) || state.is(BlockTags.DIRT); 44 | } 45 | 46 | @Override 47 | protected void createBlockStateDefinition(StateDefinition.Builder builder) { 48 | builder.add(AGE); 49 | } 50 | 51 | @Override 52 | public IntegerProperty getAgeProperty() { 53 | return AGE; 54 | } 55 | 56 | @Override 57 | public int getMaxAge() { 58 | return MAX_AGE; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/config/ChocoConfig.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.config; 2 | 3 | public class ChocoConfig { 4 | public static final String[] maleNames = 5 | { 6 | "Arkio", "Boco", "Choco", "Patch", "Eddie", "Big Bird", "Chobi", "Horse Bird", "Mr. Yellowpuffs", "Oscar", "Wild", 7 | "Stitch", "Milo", "Lewis", "Simon", "Steed", "Bocobo", "Chobo", "Butter Fingers", "Caspar", "Chubby", 8 | "Coco", "Fuzzy", "Hulk", "Flopsy", "Lionel", "Tidus", "Cloud", "Sephiroth", "Butz", "Cecil", "Golbez", 9 | "Squall", "Zidane", "Garnet", "Kuja", "Locke", "Celes", "Crafty", "Sparky", "Skippy", 10 | "Whiskers", "Mog's Mount", "Ruffles", "Quistis", "Noctis", "Firecracker", "Ballistic", "Blizzard", 11 | "Torobo", "Leon", "Firas", "Travis", "Indigo", "Montoya", "Cobalt", "Jinx", "Komet", "Beau", "Bone", 12 | "Claw", "Duke", "Easy", "Fire", "Fury", "Idol", "Iron", "Jack", "Mars", "Noir", "Snow", "Star", "Zero", 13 | "Ace", "Air", "Ice", "Max", "Neo", "Ray", "Alpha", "Arrow", "Avian", "Black", "Blade", "Blaze", "Blitz", 14 | "Chaos", "Dandy", "Jolly", "Omega", "Pluto", "Point", "Quake", "Titan", "Hope", "Ifrit", "Shiva", "Polonium", 15 | "Radon", "Sparks", "Lunik" 16 | 17 | }; 18 | 19 | public static final String[] femaleNames = 20 | { 21 | "Choco", "Patch", "Chobi", "Wild", "Chubby", "Crystal", "Coco", "Fuzzy", "Flopsy", "Lulu", "Yuna", 22 | "Cecil", "Kuja", "Terra", "Locke", "Celes", "Rikku", "Yuffie", "Selphie", "Rinoa", "Sparky", 23 | "Skippy", "Whiskers", "Pupu", "Quistis", "Noctis", "Tranquille", "Twinkling", "Capucine", "Heidi", 24 | "Danseuse", "Mercedes", "Psyche", "Victory", "Liberty", "Emma", "Fortune", "Soleil", "Luna", "Violet", 25 | "Lilith", "Lilli", "Jinx", "Coco", "Fleur", "Feder", "Flora", "Kugel", "Bleu", "Blue", "Chic", "Ciel", 26 | "Face", "Fire", "Fury", "Iris", "Jade", "Joli", "Kiku", "Lady", "Miel", "Momo", "Moon", "Nana", 27 | "Noir", "Nova", "Rain", "Rose", "Ruby", "Star", "Vega", "Air", "Aki", "Ayu", "Fee", "Sky", "Sun", 28 | "Amber", "Angel", "Azure", "Belle", "Clair", "Ebony", "Ember", "Fairy", "Flare", "Glory", "Jaune", 29 | "Jeune", "Jolly", "Lucky", "Olive", "Orange", "Venus", "Lightning", "Galindorf" 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/loot_table/blocks/gysahl_green.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "functions": [ 4 | { 5 | "function": "minecraft:explosion_decay" 6 | } 7 | ], 8 | "pools": [ 9 | { 10 | "bonus_rolls": 0.0, 11 | "entries": [ 12 | { 13 | "type": "minecraft:item", 14 | "name": "chococraft:gysahl_green_seeds" 15 | } 16 | ], 17 | "rolls": 1.0 18 | }, 19 | { 20 | "bonus_rolls": 0.0, 21 | "conditions": [ 22 | { 23 | "block": "chococraft:gysahl_green", 24 | "condition": "minecraft:block_state_property", 25 | "properties": { 26 | "age": "4" 27 | } 28 | } 29 | ], 30 | "entries": [ 31 | { 32 | "type": "minecraft:item", 33 | "functions": [ 34 | { 35 | "enchantment": "minecraft:fortune", 36 | "formula": "minecraft:binomial_with_bonus_count", 37 | "function": "minecraft:apply_bonus", 38 | "parameters": { 39 | "extra": 3, 40 | "probability": 0.5714286 41 | } 42 | } 43 | ], 44 | "name": "chococraft:gysahl_green" 45 | } 46 | ], 47 | "rolls": 1.0 48 | }, 49 | { 50 | "bonus_rolls": 0.0, 51 | "conditions": [ 52 | { 53 | "block": "chococraft:gysahl_green", 54 | "condition": "minecraft:block_state_property", 55 | "properties": { 56 | "age": "4" 57 | } 58 | } 59 | ], 60 | "entries": [ 61 | { 62 | "type": "minecraft:item", 63 | "conditions": [ 64 | { 65 | "chance": 0.15, 66 | "condition": "minecraft:random_chance" 67 | } 68 | ], 69 | "name": "chococraft:loverly_gysahl_green" 70 | }, 71 | { 72 | "type": "minecraft:item", 73 | "conditions": [ 74 | { 75 | "chance": 0.05, 76 | "condition": "minecraft:random_chance" 77 | } 78 | ], 79 | "name": "chococraft:gold_gysahl" 80 | } 81 | ], 82 | "rolls": 1.0 83 | } 84 | ], 85 | "random_sequence": "chococraft:blocks/gysahl_green" 86 | } -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/items/NeoForgeChocoDisguiseItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.items; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.ChococraftClient; 5 | import net.chococraft.client.models.armor.ChocoDisguiseModel; 6 | import net.chococraft.common.items.armor.AbstractChocoDisguiseItem; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.model.HumanoidModel; 9 | import net.minecraft.core.Holder; 10 | import net.minecraft.resources.ResourceLocation; 11 | import net.minecraft.util.LazyLoadedValue; 12 | import net.minecraft.world.entity.Entity; 13 | import net.minecraft.world.entity.EquipmentSlot; 14 | import net.minecraft.world.entity.LivingEntity; 15 | import net.minecraft.world.item.ArmorItem; 16 | import net.minecraft.world.item.ArmorMaterial; 17 | import net.minecraft.world.item.ItemStack; 18 | import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; 19 | import org.jetbrains.annotations.Nullable; 20 | 21 | import java.util.function.Consumer; 22 | 23 | public class NeoForgeChocoDisguiseItem extends AbstractChocoDisguiseItem { 24 | 25 | public NeoForgeChocoDisguiseItem(Holder material, Type type, Properties properties) { 26 | super(material, type, properties); 27 | } 28 | 29 | @Override 30 | @Nullable 31 | public ResourceLocation getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, ArmorMaterial.Layer layer, boolean innerModel) { 32 | return ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/models/armor/chocodisguise.png"); 33 | } 34 | 35 | @SuppressWarnings("removal") 36 | @Override 37 | public void initializeClient(Consumer consumer) { 38 | consumer.accept(new IClientItemExtensions() { 39 | private final LazyLoadedValue> model = new LazyLoadedValue<>(() -> this.provideArmorModelForSlot(type)); 40 | 41 | public HumanoidModel provideArmorModelForSlot(ArmorItem.Type type) { 42 | return new ChocoDisguiseModel(Minecraft.getInstance().getEntityModels().bakeLayer(ChococraftClient.CHOCO_DISGUISE), type); 43 | } 44 | 45 | @Override 46 | public HumanoidModel getHumanoidArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlot armorSlot, HumanoidModel _default) { 47 | return model.get(); 48 | } 49 | }); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/client/renderer/layers/LayerSaddle.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.client.renderer.layers; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.chococraft.Chococraft; 5 | import net.chococraft.common.entity.AbstractChocobo; 6 | import net.chococraft.registry.ModRegistry; 7 | import net.minecraft.client.model.EntityModel; 8 | import net.minecraft.client.renderer.MultiBufferSource; 9 | import net.minecraft.client.renderer.entity.RenderLayerParent; 10 | import net.minecraft.client.renderer.entity.layers.RenderLayer; 11 | import net.minecraft.resources.ResourceLocation; 12 | import net.minecraft.world.item.Item; 13 | import net.minecraft.world.item.ItemStack; 14 | 15 | public class LayerSaddle extends RenderLayer> { 16 | private final ResourceLocation SADDLE = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chocobos/saddle.png"); 17 | private final ResourceLocation SADDLE_BAG = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chocobos/saddle_bag.png"); 18 | private final ResourceLocation PACK_BAG = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "textures/entities/chocobos/pack_bag.png"); 19 | 20 | public LayerSaddle(RenderLayerParent> rendererIn) { 21 | super(rendererIn); 22 | } 23 | 24 | @Override 25 | public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLightIn, AbstractChocobo chocoboEntity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { 26 | if (!chocoboEntity.isInvisible() && chocoboEntity.isSaddled() && !chocoboEntity.isBaby()) { 27 | ResourceLocation saddleTexture = null; 28 | 29 | ItemStack saddleStack = chocoboEntity.getSaddle(); 30 | if (!saddleStack.isEmpty()) { 31 | Item item = saddleStack.getItem(); 32 | if (item == ModRegistry.CHOCOBO_SADDLE.get()) { 33 | saddleTexture = SADDLE; 34 | } else if (item == ModRegistry.CHOCOBO_SADDLE_BAGS.get()) { 35 | saddleTexture = SADDLE_BAG; 36 | } else if (item == ModRegistry.CHOCOBO_SADDLE_PACK.get()) { 37 | saddleTexture = PACK_BAG; 38 | } 39 | } 40 | 41 | renderColoredCutoutModel(this.getParentModel(), saddleTexture, poseStack, bufferSource, packedLightIn, chocoboEntity, -1); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/armor/ModArmorMaterial.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items.armor; 2 | 3 | import net.chococraft.registry.ModRegistry; 4 | import net.minecraft.Util; 5 | import net.minecraft.core.Holder; 6 | import net.minecraft.core.Registry; 7 | import net.minecraft.core.registries.BuiltInRegistries; 8 | import net.minecraft.resources.ResourceLocation; 9 | import net.minecraft.sounds.SoundEvent; 10 | import net.minecraft.sounds.SoundEvents; 11 | import net.minecraft.world.item.ArmorItem; 12 | import net.minecraft.world.item.ArmorMaterial; 13 | import net.minecraft.world.item.crafting.Ingredient; 14 | 15 | import java.util.EnumMap; 16 | import java.util.List; 17 | import java.util.function.Supplier; 18 | 19 | public class ModArmorMaterial { 20 | 21 | public static final Holder CHOCO_DISGUISE = register( 22 | "choco_disguise", 23 | Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { 24 | map.put(ArmorItem.Type.BOOTS, 3); 25 | map.put(ArmorItem.Type.LEGGINGS, 7); 26 | map.put(ArmorItem.Type.CHESTPLATE, 6); 27 | map.put(ArmorItem.Type.HELMET, 3); 28 | map.put(ArmorItem.Type.BODY, 0); 29 | }), 30 | 10, 31 | SoundEvents.ARMOR_EQUIP_LEATHER, 32 | 0.0F, 33 | 0.0F, 34 | () -> Ingredient.of(ModRegistry.CHOCOBO_FEATHER.get()) 35 | ); 36 | 37 | private static Holder register(String string, EnumMap enumMap, int i, Holder arg, float f, float g, Supplier supplier) { 38 | List list = List.of(new ArmorMaterial.Layer(ResourceLocation.withDefaultNamespace(string))); 39 | return register(string, enumMap, i, arg, f, g, supplier, list); 40 | } 41 | 42 | private static Holder register(String string, EnumMap enumMap, int i, Holder arg, float f, float g, Supplier supplier, List list) { 43 | EnumMap enumMap2 = new EnumMap<>(ArmorItem.Type.class); 44 | ArmorItem.Type[] var9 = ArmorItem.Type.values(); 45 | int var10 = var9.length; 46 | 47 | for (int var11 = 0; var11 < var10; ++var11) { 48 | ArmorItem.Type type = var9[var11]; 49 | enumMap2.put(type, (Integer) enumMap.get(type)); 50 | } 51 | 52 | return Registry.registerForHolder(BuiltInRegistries.ARMOR_MATERIAL, ResourceLocation.withDefaultNamespace(string), new ArmorMaterial(enumMap2, i, arg, supplier, list, f, g)); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![build](https://github.com/Mrbysco/ChocoCraft4/actions/workflows/build.yml/badge.svg)](https://github.com/Mrbysco/ChocoCraft4/actions/workflows/build.yml) 2 | [![](http://cf.way2muchnoise.eu/versions/225280.svg)](https://www.curseforge.com/minecraft/mc-mods/chococraft) 3 | # Chococraft 4 4 | This repository is based on Slayer5934's [ChocoCraft3](https://github.com/Slayer5934/ChocoCraft3SLY) repository. 5 | 6 | Which was rewritten from scratch based on ChocoCraft 1 and 2. 7 | 8 | # License information 9 | The source code of this mod, which is located under `src/main/java`, is licensed under the MIT license, see [LICENSE-code.md](LICENSE-code.md) 10 | 11 | ![https://licensebuttons.net/l/by-sa/3.0/88x31.png](https://licensebuttons.net/l/by-sa/3.0/88x31.png) 12 | The assets in this mod are licensed under [**CC-BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/), see [LICENSE-code.md](LICENSE-art.md) 13 | 14 | # Changes 15 | To comply with the [**CC-BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/) license of the assets the following adjustments were made: 16 | - While porting Slayer5934's repository to 1.16.5 the `chocobo_stats.png` asset got slightly adjusted (A section got moved by a few pixels) otherwise it's identical. 17 | 18 | # Setting up a development workspace 19 | 1. Ensure that `Java` (found [here](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)), `Git` (found [here](http://git-scm.com/)) are installed correctly on your system. 20 | - Clone this repository into a new folder using your IDE, a git gui or the git command line. 21 | - In your IDE, import the `build.gradle` from the chococraft project 22 | - Generate the run configurations by running the following gradle task, depending on your IDE: 23 | - Eclipse: `gradlew genEclipseRuns` 24 | - IntelliJ IDEA: `gradlew genIntellijRuns` 25 | - VSCode: `gradlew genVSCodeRuns` 26 | 27 | # Credits 28 | * EddieV for creating the first version of [Chococraft for Minecraft 1.1](http://www.minecraftforum.net/forums/search?by-author=EddieV&page=5&search-thread-id=1280466) 29 | * ArnoSaxena for [creating Chococraft 2 for Minecraft 1.4+](http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1282382-1-6-x-1-5-x-forge-torojimas-chococraft-3-0-3). (Most of the Assets used in Chococraft 3 are done by him!) 30 | * Clienthax for porting [Chococraft 2 to Minecraft 1.7.10 and 1.8](http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/2269183-1-8-clienthaxs-chococraft-2-happiness-distilled) 31 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/common/config/FabricChocoConfig.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric.common.config; 2 | 3 | import me.shedaniel.autoconfig.ConfigData; 4 | import me.shedaniel.autoconfig.annotation.Config; 5 | import me.shedaniel.autoconfig.annotation.ConfigEntry; 6 | import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.Comment; 7 | import net.chococraft.Chococraft; 8 | import net.chococraft.common.config.ChocoConfig; 9 | 10 | import java.util.List; 11 | 12 | @Config(name = Chococraft.MOD_ID) 13 | public class FabricChocoConfig implements ConfigData { 14 | @ConfigEntry.Gui.CollapsibleObject 15 | public Spawning spawning = new Spawning(); 16 | 17 | @ConfigEntry.Gui.CollapsibleObject 18 | public Chocobo chocobo = new Chocobo(); 19 | 20 | @ConfigEntry.Gui.CollapsibleObject 21 | public Naming naming = new Naming(); 22 | 23 | public static class Spawning { 24 | @Comment("Controls Chocobo Spawn Weight [Default: 10]") 25 | @ConfigEntry.BoundedDiscrete(min = 0, max = Integer.MAX_VALUE) 26 | public int chocoboSpawnWeight = 10; 27 | 28 | @Comment("Controls Chocobo Pack Size Min [Default: 1]") 29 | @ConfigEntry.BoundedDiscrete(min = 0, max = Integer.MAX_VALUE) 30 | public int chocoboPackSizeMin = 1; 31 | 32 | @Comment("Controls Chocobo Pack Size Max [Default: 3]") 33 | @ConfigEntry.BoundedDiscrete(min = 0, max = Integer.MAX_VALUE) 34 | public int chocoboPackSizeMax = 3; 35 | } 36 | 37 | public static class Chocobo { 38 | @Comment("This multiplier controls the tame chance per gysahl used, so .15 results in 15% chance to tame [Default: 0.15]") 39 | @ConfigEntry.BoundedDiscrete(min = 0, max = 1) 40 | public double tameChance = 0.15; 41 | 42 | @Comment("If certain chocobos are allowed to fly [Default: true]") 43 | public boolean canChocobosFly = true; 44 | 45 | @Comment("Determines the maximum interval duration for the Chocobo's ambient sound [Default: 100]") 46 | @ConfigEntry.BoundedDiscrete(min = 1, max = Integer.MAX_VALUE) 47 | public int kwehIntervalLimit = 100; 48 | } 49 | 50 | public static class Naming { 51 | @Comment("If taming a chocobo will provide them with a name (unless already named) [Default: true]") 52 | public boolean nameTamedChocobos = true; 53 | 54 | @Comment("The list of male names it can choose from if 'nameTamedChocobos' is enabled") 55 | public List maleNames = List.of(ChocoConfig.maleNames); 56 | 57 | @Comment("The list of female names it can choose from if 'nameTamedChocobos' is enabled") 58 | public List femaleNames = List.of(ChocoConfig.femaleNames); 59 | } 60 | } -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/ChococraftClientFabric.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric; 2 | 3 | import dev.architectury.registry.client.rendering.RenderTypeRegistry; 4 | import dev.architectury.registry.menu.MenuRegistry; 5 | import net.chococraft.ChococraftClient; 6 | import net.chococraft.client.gui.ChocoboInventoryScreen; 7 | import net.chococraft.client.models.armor.ChocoDisguiseModel; 8 | import net.chococraft.client.models.entities.AdultChocoboModel; 9 | import net.chococraft.client.models.entities.ChicoboModel; 10 | import net.chococraft.client.renderer.entities.ChocoboRenderer; 11 | import net.chococraft.common.entity.AbstractChocobo; 12 | import net.chococraft.fabric.common.packets.OpenChocoboScreenPayload; 13 | import net.chococraft.registry.ModEntities; 14 | import net.chococraft.registry.ModMenus; 15 | import net.chococraft.registry.ModRegistry; 16 | import net.fabricmc.api.ClientModInitializer; 17 | import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; 18 | import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; 19 | import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; 20 | import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; 21 | import net.minecraft.client.renderer.RenderType; 22 | import net.minecraft.world.entity.Entity; 23 | import net.minecraft.world.entity.animal.horse.AbstractHorse; 24 | 25 | public class ChococraftClientFabric implements ClientModInitializer { 26 | 27 | @Override 28 | public void onInitializeClient() { 29 | EntityModelLayerRegistry.registerModelLayer(ChococraftClient.CHOCOBO, AdultChocoboModel::createBodyLayer); 30 | EntityModelLayerRegistry.registerModelLayer(ChococraftClient.CHICOBO, ChicoboModel::createBodyLayer); 31 | EntityModelLayerRegistry.registerModelLayer(ChococraftClient.CHOCO_DISGUISE, ChocoDisguiseModel::createArmorDefinition); 32 | 33 | EntityRendererRegistry.register(ModEntities.CHOCOBO.get(), ChocoboRenderer::new); 34 | 35 | ChococraftClient.init(); 36 | 37 | ClientPlayNetworking.registerGlobalReceiver(OpenChocoboScreenPayload.ID, (payload, context) -> { 38 | Entity entity = context.client().level.getEntity(payload.entityId()); 39 | if (entity instanceof AbstractHorse) { 40 | AbstractChocobo abstractChocobo = (AbstractChocobo) entity; 41 | ChocoboInventoryScreen.openInventory(payload.containerId(), abstractChocobo); 42 | } 43 | }); 44 | ClientLifecycleEvents.CLIENT_STARTED.register(client -> 45 | MenuRegistry.registerScreenFactory(ModMenus.CHOCOBO.get(), ChocoboInventoryScreen::new)); 46 | 47 | RenderTypeRegistry.register(RenderType.cutout(), ModRegistry.GYSAHL_GREEN.get()); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/BUG_REPORT.yaml: -------------------------------------------------------------------------------- 1 | name: 🐛 Bug / Crash Report 2 | description: File a bug / crash report 3 | title: "[Bug]: " 4 | labels: [bug, crash] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to fill out this bug report! 10 | - type: checkboxes 11 | id: general-info 12 | attributes: 13 | label: General Info 14 | description: You may select more than one. 15 | options: 16 | - label: I am running a modpack 17 | - label: I can reproduce this issue consistently in single-player 18 | - label: I can reproduce this issue consistently in multi-player 19 | - label: I have searched for this issue previously and it was either (1) not previously reported, or (2) previously fixed and I am having the same problem. 20 | required: true 21 | - label: I am crashing and can provide my crash report(s) 22 | - label: I am using the latest version of the mod 23 | - type: input 24 | id: loader-info 25 | attributes: 26 | label: Loader version 27 | placeholder: ex. Forge 36.2.0 / Fabric 0.14.12 28 | description: Please be as specific as possible, latest is not a valid version 29 | validations: 30 | required: true 31 | - type: input 32 | id: minecraft-info 33 | attributes: 34 | label: Minecraft version 35 | placeholder: ex. 1.16.5 36 | description: Please be as specific as possible, latest is not a valid version 37 | validations: 38 | required: true 39 | - type: input 40 | id: mod-info 41 | attributes: 42 | label: Mod version 43 | placeholder: ex. 0.0.1 44 | description: Please be as specific as possible, latest is not a valid version 45 | validations: 46 | required: true 47 | - type: input 48 | id: java-info 49 | attributes: 50 | label: Java version 51 | placeholder: ex. Java 8 update 51 52 | description: Please be as specific as possible, latest is not a valid version 53 | validations: 54 | required: true 55 | - type: textarea 56 | id: issue-description 57 | attributes: 58 | label: Issue Description 59 | description: Also tell us, what did you expect to happen? 60 | placeholder: Tell us what you see! 61 | value: "A bug happened!" 62 | validations: 63 | required: true 64 | - type: textarea 65 | id: logs 66 | attributes: 67 | label: Additional Information 68 | description: Please post any crash reports, screenshots, etc. here. (use Pastebin or Imgur accordingly) 69 | placeholder: Please put crash reports onto pastebin 70 | validations: 71 | required: false 72 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/common/config/BreedingConfig.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge.common.config; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.GsonBuilder; 5 | import com.google.gson.internal.LinkedTreeMap; 6 | import net.chococraft.Chococraft; 7 | import net.chococraft.ChococraftExpectPlatform; 8 | import org.apache.commons.io.FileUtils; 9 | 10 | import java.io.File; 11 | import java.io.FileReader; 12 | import java.io.InputStream; 13 | import java.util.List; 14 | import java.util.Map; 15 | 16 | public class BreedingConfig { 17 | public static final LinkedTreeMap>>> breedingInfoHashmap = new LinkedTreeMap<>(); 18 | 19 | private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); 20 | public static final File INITIAL_FILE = new File(ChococraftExpectPlatform.getConfigDirectory().toFile(), "chococraft-4-breeding.json"); 21 | 22 | public static void initializeConfig() { 23 | if (!INITIAL_FILE.exists()) { 24 | try { 25 | InputStream inputStream = BreedingConfig.class.getClassLoader().getResourceAsStream("/breedingDefault.json"); 26 | if (inputStream == null) { 27 | Chococraft.LOGGER.error("Unable to locate default breeding config"); 28 | } else { 29 | FileUtils.copyInputStreamToFile(inputStream, INITIAL_FILE); 30 | Chococraft.LOGGER.debug("Generated a default Breeding Config"); 31 | loadConfig(); 32 | } 33 | } catch (Exception e) { 34 | Chococraft.LOGGER.error("Unable to initialize breeding config"); 35 | Chococraft.LOGGER.error("Trace: ", e); 36 | } 37 | } 38 | } 39 | 40 | public static void loadConfig() { 41 | if (INITIAL_FILE.exists()) { 42 | breedingInfoHashmap.clear(); 43 | String fileName = INITIAL_FILE.getName(); 44 | try (FileReader json = new FileReader(INITIAL_FILE)) { 45 | final LinkedTreeMap>>> breedingMap = new LinkedTreeMap<>(); 46 | breedingMap.putAll(GSON.fromJson(json, Map.class)); 47 | if (!breedingMap.isEmpty()) { 48 | breedingInfoHashmap.putAll(breedingMap); 49 | Chococraft.LOGGER.debug("Loaded JSON config file {}", INITIAL_FILE.getAbsolutePath()); 50 | } else { 51 | Chococraft.LOGGER.error("Could not load Breeding Config from {}.", fileName); 52 | } 53 | } catch (final Exception e) { 54 | Chococraft.LOGGER.error("Unable to load file {}. Please make sure it's a valid json.", fileName); 55 | Chococraft.LOGGER.error("Trace: ", e); 56 | } 57 | } else { 58 | Chococraft.LOGGER.error("Could not locate Breeding Config from {}.", INITIAL_FILE.getAbsolutePath()); 59 | initializeConfig(); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/items/ChocoboSpawnEggItem.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.items; 2 | 3 | import net.chococraft.common.entity.AbstractChocobo; 4 | import net.chococraft.common.entity.properties.ChocoboColor; 5 | import net.chococraft.registry.ModEntities; 6 | import net.minecraft.core.BlockPos; 7 | import net.minecraft.core.Direction; 8 | import net.minecraft.server.level.ServerLevel; 9 | import net.minecraft.util.Mth; 10 | import net.minecraft.world.InteractionResult; 11 | import net.minecraft.world.entity.MobSpawnType; 12 | import net.minecraft.world.entity.SpawnGroupData; 13 | import net.minecraft.world.entity.player.Player; 14 | import net.minecraft.world.item.Item; 15 | import net.minecraft.world.item.ItemStack; 16 | import net.minecraft.world.item.context.UseOnContext; 17 | import net.minecraft.world.level.Level; 18 | import net.minecraft.world.level.block.state.BlockState; 19 | import net.minecraft.world.level.gameevent.GameEvent; 20 | 21 | public class ChocoboSpawnEggItem extends Item { 22 | private final ChocoboColor color; 23 | 24 | public ChocoboSpawnEggItem(Properties properties, ChocoboColor color) { 25 | super(properties); 26 | this.color = color; 27 | } 28 | 29 | @Override 30 | public InteractionResult useOn(UseOnContext context) { 31 | Level level = context.getLevel(); 32 | if (!(level instanceof ServerLevel)) { 33 | return InteractionResult.SUCCESS; 34 | } else { 35 | ItemStack stack = context.getItemInHand(); 36 | BlockPos blockPos = context.getClickedPos(); 37 | Direction direction = context.getClickedFace(); 38 | BlockState blockState = level.getBlockState(blockPos); 39 | Player player = context.getPlayer(); 40 | 41 | BlockPos pos; 42 | if (blockState.getCollisionShape(level, blockPos).isEmpty()) { 43 | pos = blockPos; 44 | } else { 45 | pos = blockPos.relative(direction); 46 | } 47 | 48 | AbstractChocobo chocobo = ModEntities.CHOCOBO.get().create(level); 49 | if (chocobo != null) { 50 | if (player != null) { 51 | if (player.isCrouching()) { 52 | chocobo.setAge(-24000); 53 | } 54 | } 55 | chocobo.moveTo(pos.getX() + .5, pos.getY() + 0.5F, pos.getZ() + .5, Mth.wrapDegrees(level.random.nextFloat() * 360.0F), 0.0F); 56 | chocobo.yHeadRot = chocobo.getYRot(); 57 | chocobo.yBodyRot = chocobo.getYRot(); 58 | chocobo.setChocoboColor(color); 59 | chocobo.finalizeSpawn((ServerLevel) level, level.getCurrentDifficultyAt(chocobo.blockPosition()), MobSpawnType.SPAWN_EGG, (SpawnGroupData) null); 60 | if (level.addFreshEntity(chocobo)) { 61 | stack.shrink(1); 62 | level.gameEvent(context.getPlayer(), GameEvent.ENTITY_PLACE, pos); 63 | } 64 | chocobo.playAmbientSound(); 65 | } 66 | 67 | return InteractionResult.CONSUME; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /neoforge/src/generated/.cache/cd090bff9ca93079474b6df48215a8307e531e73: -------------------------------------------------------------------------------- 1 | // 1.21.1 2024-12-29T15:34:41.5708111 Patchouli Book Provider 2 | 8cefbb9f2ff0998a96c8a44f3a75069ffae28ed8 assets/chococraft/patchouli_books/chocopedia/en_us/categories/chocobos.json 3 | bfa481910d11c591b1741900fbe9788abf9d309e assets/chococraft/patchouli_books/chocopedia/en_us/categories/equipments.json 4 | c5d8fc49de0d2e75a8da8d54cbb6bcf766e48690 assets/chococraft/patchouli_books/chocopedia/en_us/categories/gysahls.json 5 | e0062c2e2aaddfb0c0f40f7ac4cbea37a6545d44 assets/chococraft/patchouli_books/chocopedia/en_us/categories/legacy.json 6 | 398b96d7d59df96d2b072e085c4e00da70ac15fb assets/chococraft/patchouli_books/chocopedia/en_us/categories/misc.json 7 | e62380d0c38061a976ce4a6a83bf4ef27641bdc7 assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/chicobo.json 8 | 2717e4dc9ac36fa9125471b5b6d7b4f95ba2028e assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/chocobo.json 9 | 7e78dcc4725def654ebd5731f91906ef8285c04d assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/feather.json 10 | 24962115a8bf0015237af6f154c8e6fa38287cc8 assets/chococraft/patchouli_books/chocopedia/en_us/entries/chocobos/raw_drumstick.json 11 | e2c014dcbf22bb723319c47dec295bb72e5ffab4 assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/chocodisguise.json 12 | 95fdd543acbe13af3df154e1239c8c5271d195e6 assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/saddle.json 13 | 86911fa3d78fe6d4a203813e2b1698ebdb0a9195 assets/chococraft/patchouli_books/chocopedia/en_us/entries/equipments/whistle.json 14 | 68afb8e228a14ac3112cbc699aa96da96bbdce50 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gold_gysahl.json 15 | 60900804adffe08093d3b6974a091a74c3b0b1f7 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gysahl_cake.json 16 | ceff75d084d2e989e63cd3724d206cca8cd1e6e5 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/gysahl_green.json 17 | 08dfd02d7c64fc22ff31e70f4852caf3ec9a9e6e assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/loverly_gysahl.json 18 | 6642f98cec25b5c5112f289cb3f752ab8a1a5913 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/pickled_gysahl.json 19 | 3600857acf761b76390d7328633bfc34a769e491 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/pink_gysahl.json 20 | 720255959dd6e091639af87dfcbbaf194e195dd2 assets/chococraft/patchouli_books/chocopedia/en_us/entries/gysahls/red_gysahl.json 21 | 8e334abe07c4e01c0b2d8739f1d98874b73ce680 assets/chococraft/patchouli_books/chocopedia/en_us/entries/legacy/info.json 22 | 4465967ac51c56c3a2f8b64d9e0904e9413032ea assets/chococraft/patchouli_books/chocopedia/en_us/entries/misc/straw.json 23 | bf376cf1d12404ee859832e7c4d07c2395fab037 data/chococraft/patchouli_books/chocopedia/book.json 24 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/Chococraft.java: -------------------------------------------------------------------------------- 1 | package net.chococraft; 2 | 3 | import com.mojang.logging.LogUtils; 4 | import dev.architectury.event.events.common.LifecycleEvent; 5 | import dev.architectury.event.events.common.PlayerEvent; 6 | import dev.architectury.registry.CreativeTabRegistry; 7 | import dev.architectury.registry.level.entity.EntityAttributeRegistry; 8 | import dev.architectury.registry.registries.RegistrySupplier; 9 | import net.chococraft.common.entity.AbstractChocobo; 10 | import net.chococraft.registry.ModEntities; 11 | import net.chococraft.registry.ModMenus; 12 | import net.chococraft.registry.ModRegistry; 13 | import net.chococraft.registry.ModSounds; 14 | import net.minecraft.network.chat.Component; 15 | import net.minecraft.world.entity.Entity; 16 | import net.minecraft.world.item.CreativeModeTab; 17 | import net.minecraft.world.item.ItemStack; 18 | import net.minecraft.world.level.block.ComposterBlock; 19 | import org.slf4j.Logger; 20 | 21 | public class Chococraft { 22 | public static final String MOD_ID = "chococraft"; 23 | public static final Logger LOGGER = LogUtils.getLogger(); 24 | 25 | public static final RegistrySupplier CREATIVE_TAB = ModRegistry.CREATIVE_MODE_TABS.register( 26 | "tab", () -> dev.architectury.registry.CreativeTabRegistry.create( 27 | Component.translatable("itemGroup.chococraft.tab"), 28 | () -> new ItemStack(ModRegistry.GYSAHL_GREEN.get()) 29 | ) 30 | ); 31 | 32 | public static void init() { 33 | ModEntities.ENTITY_TYPES.register(); 34 | ModRegistry.BLOCKS.register(); 35 | ModRegistry.ITEMS.register(); 36 | ModRegistry.CREATIVE_MODE_TABS.register(); 37 | ModSounds.SOUND_EVENTS.register(); 38 | ModMenus.MENU_TYPES.register(); 39 | 40 | EntityAttributeRegistry.register(ModEntities.CHOCOBO, AbstractChocobo::createAttributes); 41 | 42 | LifecycleEvent.SETUP.register(() -> { 43 | registerCompostables(); 44 | 45 | ModRegistry.ITEMS.forEach(supplier -> CreativeTabRegistry.append(CREATIVE_TAB, supplier.get())); 46 | }); 47 | 48 | PlayerEvent.PLAYER_QUIT.register((player) -> { 49 | if (player.getVehicle() != null) { 50 | Entity entityRide = player.getVehicle(); 51 | if (entityRide instanceof AbstractChocobo) { 52 | player.removeVehicle(); 53 | } 54 | } 55 | }); 56 | } 57 | 58 | public static void registerCompostables() { 59 | // 30% chance 60 | ComposterBlock.COMPOSTABLES.put(ModRegistry.GYSAHL_GREEN_SEEDS.get(), 0.3F); 61 | 62 | // 65% chance 63 | ComposterBlock.COMPOSTABLES.put(ModRegistry.GYSAHL_GREEN_ITEM.get(), 0.65F); 64 | ComposterBlock.COMPOSTABLES.put(ModRegistry.LOVERLY_GYSAHL_GREEN.get(), 0.65F); 65 | ComposterBlock.COMPOSTABLES.put(ModRegistry.GOLD_GYSAHL.get(), 0.65F); 66 | ComposterBlock.COMPOSTABLES.put(ModRegistry.RED_GYSAHL.get(), 0.65F); 67 | ComposterBlock.COMPOSTABLES.put(ModRegistry.PINK_GYSAHL.get(), 0.65F); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /common/src/main/resources/data/chococraft/loot_table/entities/chocobo.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:entity", 3 | "pools": [ 4 | { 5 | "bonus_rolls": 0.0, 6 | "entries": [ 7 | { 8 | "type": "minecraft:item", 9 | "functions": [ 10 | { 11 | "add": false, 12 | "count": { 13 | "type": "minecraft:uniform", 14 | "max": 2.0, 15 | "min": 0.0 16 | }, 17 | "function": "minecraft:set_count" 18 | }, 19 | { 20 | "count": { 21 | "type": "minecraft:uniform", 22 | "max": 1.0, 23 | "min": 0.0 24 | }, 25 | "enchantment": "minecraft:looting", 26 | "function": "minecraft:enchanted_count_increase" 27 | } 28 | ], 29 | "name": "chococraft:chocobo_feather" 30 | } 31 | ], 32 | "rolls": 1.0 33 | }, 34 | { 35 | "bonus_rolls": 0.0, 36 | "entries": [ 37 | { 38 | "type": "minecraft:item", 39 | "functions": [ 40 | { 41 | "conditions": [ 42 | { 43 | "condition": "minecraft:any_of", 44 | "terms": [ 45 | { 46 | "condition": "minecraft:entity_properties", 47 | "entity": "this", 48 | "predicate": { 49 | "flags": { 50 | "is_on_fire": true 51 | } 52 | } 53 | }, 54 | { 55 | "condition": "minecraft:entity_properties", 56 | "entity": "direct_attacker", 57 | "predicate": { 58 | "equipment": { 59 | "mainhand": { 60 | "predicates": { 61 | "minecraft:enchantments": [ 62 | { 63 | "enchantments": "#minecraft:smelts_loot" 64 | } 65 | ] 66 | } 67 | } 68 | } 69 | } 70 | } 71 | ] 72 | } 73 | ], 74 | "function": "minecraft:furnace_smelt" 75 | }, 76 | { 77 | "count": { 78 | "type": "minecraft:uniform", 79 | "max": 1.0, 80 | "min": 0.0 81 | }, 82 | "enchantment": "minecraft:looting", 83 | "function": "minecraft:enchanted_count_increase" 84 | } 85 | ], 86 | "name": "chococraft:chocobo_drumstick_raw" 87 | } 88 | ], 89 | "rolls": 1.0 90 | } 91 | ], 92 | "random_sequence": "chococraft:entities/chocobo" 93 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/chococraft/patchouli_books/chocopedia/en_us/entries/legacy/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "category": "chococraft:legacy", 3 | "icon": "chococraft:chocopedia", 4 | "name": "info.chococraft.book.legacy.entry.name", 5 | "pages": [ 6 | { 7 | "type": "patchouli:text", 8 | "text": "info.chococraft.book.legacy.page1" 9 | }, 10 | { 11 | "type": "patchouli:text", 12 | "text": "info.chococraft.book.legacy.page2" 13 | }, 14 | { 15 | "type": "patchouli:text", 16 | "text": "info.chococraft.book.legacy.page3" 17 | }, 18 | { 19 | "type": "patchouli:text", 20 | "text": "info.chococraft.book.legacy.page4" 21 | }, 22 | { 23 | "type": "patchouli:text", 24 | "text": "info.chococraft.book.legacy.page5" 25 | }, 26 | { 27 | "type": "patchouli:text", 28 | "text": "info.chococraft.book.legacy.page6" 29 | }, 30 | { 31 | "type": "patchouli:text", 32 | "text": "info.chococraft.book.legacy.page7" 33 | }, 34 | { 35 | "type": "patchouli:text", 36 | "text": "info.chococraft.book.legacy.page8" 37 | }, 38 | { 39 | "type": "patchouli:text", 40 | "text": "info.chococraft.book.legacy.page9" 41 | }, 42 | { 43 | "type": "patchouli:text", 44 | "text": "info.chococraft.book.legacy.page10" 45 | }, 46 | { 47 | "type": "patchouli:text", 48 | "text": "info.chococraft.book.legacy.page11" 49 | }, 50 | { 51 | "type": "patchouli:text", 52 | "text": "info.chococraft.book.legacy.page12" 53 | }, 54 | { 55 | "type": "patchouli:text", 56 | "text": "info.chococraft.book.legacy.page13" 57 | }, 58 | { 59 | "type": "patchouli:text", 60 | "text": "info.chococraft.book.legacy.page14" 61 | }, 62 | { 63 | "type": "patchouli:text", 64 | "text": "info.chococraft.book.legacy.page15" 65 | }, 66 | { 67 | "type": "patchouli:text", 68 | "text": "info.chococraft.book.legacy.page16" 69 | }, 70 | { 71 | "type": "patchouli:text", 72 | "text": "info.chococraft.book.legacy.page17" 73 | }, 74 | { 75 | "type": "patchouli:text", 76 | "text": "info.chococraft.book.legacy.page18" 77 | }, 78 | { 79 | "type": "patchouli:text", 80 | "text": "info.chococraft.book.legacy.page19" 81 | }, 82 | { 83 | "type": "patchouli:text", 84 | "text": "info.chococraft.book.legacy.page20" 85 | }, 86 | { 87 | "type": "patchouli:text", 88 | "text": "info.chococraft.book.legacy.page21" 89 | }, 90 | { 91 | "type": "patchouli:text", 92 | "text": "info.chococraft.book.legacy.page22" 93 | }, 94 | { 95 | "type": "patchouli:text", 96 | "text": "info.chococraft.book.legacy.page23" 97 | }, 98 | { 99 | "type": "patchouli:text", 100 | "text": "info.chococraft.book.legacy.page24" 101 | }, 102 | { 103 | "type": "patchouli:text", 104 | "text": "info.chococraft.book.legacy.page25" 105 | } 106 | ] 107 | } -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/breeding/ChocoboAbilityInfo.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity.breeding; 2 | 3 | import net.minecraft.world.effect.MobEffectInstance; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | import java.util.function.Supplier; 8 | 9 | public class ChocoboAbilityInfo { 10 | private int maxHP; 11 | private boolean canClimb = false; 12 | private boolean canWalkOnWater = false; 13 | private boolean canFly = false; 14 | private boolean immuneToFire = false; 15 | private float landSpeed; 16 | private float waterSpeed; 17 | private float airbornSpeed; 18 | private float mountedStepHeight; 19 | private float normalStepHeight; 20 | private List> effectList = new ArrayList<>(); 21 | 22 | public ChocoboAbilityInfo() { 23 | } 24 | 25 | public ChocoboAbilityInfo setMaxHP(int maxHP) { 26 | this.maxHP = maxHP; 27 | return this; 28 | } 29 | 30 | public ChocoboAbilityInfo setCanClimb(boolean value) { 31 | this.canClimb = value; 32 | return this; 33 | } 34 | 35 | public boolean canClimb() { 36 | return this.canClimb; 37 | } 38 | 39 | public ChocoboAbilityInfo setCanWalkOnWater(boolean value) { 40 | this.canWalkOnWater = value; 41 | return this; 42 | } 43 | 44 | public boolean canWalkOnWater() { 45 | return this.canWalkOnWater; 46 | } 47 | 48 | public ChocoboAbilityInfo setCanFly(boolean value) { 49 | this.canFly = value; 50 | return this; 51 | } 52 | 53 | public ChocoboAbilityInfo setImmuneToFire(boolean value) { 54 | this.immuneToFire = value; 55 | return this; 56 | } 57 | 58 | public boolean isImmuneToFire() { 59 | return this.immuneToFire; 60 | } 61 | 62 | public ChocoboAbilityInfo setSpeeds(float landSpeed, float waterSpeed, float airbornSpeed) { 63 | this.landSpeed = landSpeed; 64 | this.waterSpeed = waterSpeed; 65 | this.airbornSpeed = airbornSpeed; 66 | return this; 67 | } 68 | 69 | public float getLandSpeed() { 70 | return this.landSpeed; 71 | } 72 | 73 | public float getWaterSpeed() { 74 | return this.waterSpeed; 75 | } 76 | 77 | public float getAirbornSpeed() { 78 | return this.airbornSpeed; 79 | } 80 | 81 | public ChocoboAbilityInfo setStepHeight(float mountedStepHeight, float normalStepHeight) { 82 | this.mountedStepHeight = mountedStepHeight; 83 | this.normalStepHeight = normalStepHeight; 84 | return this; 85 | } 86 | 87 | public ChocoboAbilityInfo setRiderAbilities(List> effectList) { 88 | this.effectList = effectList; 89 | return this; 90 | } 91 | 92 | public ChocoboAbilityInfo addRiderAbility(Supplier effectSupplier) { 93 | this.effectList.add(effectSupplier); 94 | return this; 95 | } 96 | 97 | public List> getRiderAbilities() { 98 | return effectList; 99 | } 100 | 101 | public int getMaxHP() { 102 | return maxHP; 103 | } 104 | 105 | public float getStepHeight(boolean mounted) { 106 | return mounted ? mountedStepHeight : normalStepHeight; 107 | } 108 | 109 | public boolean getCanFly() { 110 | return canFly; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 1>&2 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 48 | echo. 1>&2 49 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 50 | echo location of your Java installation. 1>&2 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 1>&2 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 62 | echo. 1>&2 63 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 64 | echo location of your Java installation. 1>&2 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/chococraft/fabric/ChococraftFabric.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.fabric; 2 | 3 | import dev.architectury.event.events.common.LifecycleEvent; 4 | import me.shedaniel.autoconfig.AutoConfig; 5 | import me.shedaniel.autoconfig.ConfigHolder; 6 | import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; 7 | import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer; 8 | import net.chococraft.Chococraft; 9 | import net.chococraft.common.entity.AbstractChocobo; 10 | import net.chococraft.fabric.common.config.FabricBreedingConfig; 11 | import net.chococraft.fabric.common.config.FabricChocoConfig; 12 | import net.chococraft.fabric.common.entity.FabricChocobo; 13 | import net.chococraft.fabric.common.packets.OpenChocoboScreenPayload; 14 | import net.chococraft.fabric.common.world.FeatureInjector; 15 | import net.chococraft.fabric.event.MountEvent; 16 | import net.chococraft.fabric.registry.ModDataSerializers; 17 | import net.chococraft.registry.ModEntities; 18 | import net.chococraft.registry.ModRegistry; 19 | import net.fabricmc.api.ModInitializer; 20 | import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; 21 | import net.minecraft.network.syncher.EntityDataSerializers; 22 | import net.minecraft.resources.ResourceLocation; 23 | import net.minecraft.world.InteractionResult; 24 | import net.minecraft.world.entity.SpawnPlacementTypes; 25 | import net.minecraft.world.entity.SpawnPlacements; 26 | import net.minecraft.world.level.levelgen.Heightmap; 27 | 28 | public class ChococraftFabric implements ModInitializer { 29 | public static final ResourceLocation OPEN_CHOCOBO_SCREEN = ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, "open_chocobo_screen"); 30 | 31 | public static ConfigHolder config; 32 | public static ConfigHolder breedingConfig; 33 | 34 | @Override 35 | public void onInitialize() { 36 | config = AutoConfig.register(FabricChocoConfig.class, Toml4jConfigSerializer::new); 37 | breedingConfig = AutoConfig.register(FabricBreedingConfig.class, GsonConfigSerializer::new); 38 | 39 | EntityDataSerializers.registerSerializer(ModDataSerializers.CHOCOBO_COLOR); 40 | EntityDataSerializers.registerSerializer(ModDataSerializers.MOVEMENT_TYPE); 41 | 42 | PayloadTypeRegistry.playS2C().register(OpenChocoboScreenPayload.ID, OpenChocoboScreenPayload.CODEC); 43 | 44 | Chococraft.init(); 45 | 46 | FeatureInjector.init(); 47 | 48 | SpawnPlacements.register(ModEntities.CHOCOBO.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, FabricChocobo::checkChocoboSpawnRules); 49 | 50 | MountEvent.MOUNTING.register((entityMounting, entityBeingMounted, level, isMounting) -> { 51 | if (isMounting) return InteractionResult.PASS; 52 | if (!entityBeingMounted.isAlive()) return InteractionResult.PASS; 53 | if (!(entityBeingMounted instanceof AbstractChocobo)) return InteractionResult.PASS; 54 | 55 | if (entityBeingMounted.isInWater()) return InteractionResult.PASS; 56 | 57 | if (!entityBeingMounted.onGround()) 58 | return InteractionResult.FAIL; 59 | 60 | return InteractionResult.PASS; 61 | }); 62 | 63 | LifecycleEvent.SETUP.register(() -> { 64 | ModRegistry.registerCompostables(); 65 | }); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/world/worldgen/ModFeatures.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.world.worldgen; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.common.blocks.GysahlGreenBlock; 5 | import net.chococraft.registry.ModRegistry; 6 | import net.minecraft.core.HolderGetter; 7 | import net.minecraft.core.registries.Registries; 8 | import net.minecraft.data.worldgen.BootstrapContext; 9 | import net.minecraft.data.worldgen.features.FeatureUtils; 10 | import net.minecraft.data.worldgen.placement.PlacementUtils; 11 | import net.minecraft.resources.ResourceKey; 12 | import net.minecraft.resources.ResourceLocation; 13 | import net.minecraft.util.valueproviders.UniformInt; 14 | import net.minecraft.world.level.block.state.BlockState; 15 | import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; 16 | import net.minecraft.world.level.levelgen.feature.Feature; 17 | import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; 18 | import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; 19 | import net.minecraft.world.level.levelgen.placement.BiomeFilter; 20 | import net.minecraft.world.level.levelgen.placement.CountPlacement; 21 | import net.minecraft.world.level.levelgen.placement.InSquarePlacement; 22 | import net.minecraft.world.level.levelgen.placement.PlacedFeature; 23 | import net.minecraft.world.level.levelgen.placement.RarityFilter; 24 | 25 | import java.util.List; 26 | 27 | public class ModFeatures { 28 | protected static final BlockState GYSAHL_GREEN = ModRegistry.GYSAHL_GREEN.get().defaultBlockState().setValue(GysahlGreenBlock.AGE, GysahlGreenBlock.MAX_AGE); 29 | 30 | public static final ResourceKey> PATCH_GYSAHL_GREEN = createConfiguredKey("patch_gysahl_green"); 31 | 32 | public static ResourceKey> createConfiguredKey(String pName) { 33 | return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, pName)); 34 | } 35 | 36 | public static void configuredBootstrap(BootstrapContext> context) { 37 | FeatureUtils.register(context, PATCH_GYSAHL_GREEN, 38 | Feature.RANDOM_PATCH, FeatureUtils.simplePatchConfiguration(Feature.SIMPLE_BLOCK, 39 | new SimpleBlockConfiguration(BlockStateProvider.simple(GYSAHL_GREEN))) 40 | ); 41 | } 42 | 43 | public static final ResourceKey PLACED_PATCH_GYSAHL_GREEN = createPlacedFeature("patch_gysahl_green"); 44 | 45 | public static ResourceKey createPlacedFeature(String pName) { 46 | return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Chococraft.MOD_ID, pName)); 47 | } 48 | 49 | public static void placedBootstrap(BootstrapContext context) { 50 | HolderGetter> holdergetter = context.lookup(Registries.CONFIGURED_FEATURE); 51 | 52 | PlacementUtils.register(context, PLACED_PATCH_GYSAHL_GREEN, holdergetter.getOrThrow(PATCH_GYSAHL_GREEN), 53 | List.of( 54 | CountPlacement.of(UniformInt.of(0, 5)), 55 | RarityFilter.onAverageOnceEvery(32), 56 | InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_WORLD_SURFACE, BiomeFilter.biome())); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /common/src/main/java/net/chococraft/common/entity/breeding/BreedingHelper.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.common.entity.breeding; 2 | 3 | import com.google.gson.internal.LinkedTreeMap; 4 | import net.chococraft.Chococraft; 5 | import net.chococraft.ChococraftExpectPlatform; 6 | import net.chococraft.common.entity.AbstractChocobo; 7 | import net.chococraft.common.entity.properties.ChocoboColor; 8 | 9 | import java.util.List; 10 | import java.util.Map; 11 | import java.util.regex.Pattern; 12 | 13 | public class BreedingHelper { 14 | 15 | public static ChocoboColor getColor(AbstractChocobo firstParent, AbstractChocobo secondParent) { 16 | final ChocoboColor firstColor = firstParent.getChocoboColor(); 17 | final ChocoboColor secondColor = secondParent.getChocoboColor(); 18 | int randColor = firstParent.getRandom().nextInt(100); 19 | boolean bothParentsFedGold = firstParent.isFedGoldGysahl() && secondParent.isFedGoldGysahl(); 20 | 21 | LinkedTreeMap>>> breedingInfoHashmap = ChococraftExpectPlatform.getBreedingInfoMap(); 22 | if (breedingInfoHashmap.isEmpty()) { 23 | Chococraft.LOGGER.error("BreedingInfoHashmap is empty!, make sure you have a valid breeding config file!"); 24 | } 25 | if (!breedingInfoHashmap.isEmpty() && breedingInfoHashmap.containsKey(firstColor.name())) { 26 | LinkedTreeMap>> secondParentColorMaps = breedingInfoHashmap.get(firstColor.name()); 27 | for (Map.Entry>> secondParentColorEntry : secondParentColorMaps.entrySet()) { 28 | if (secondParentColorEntry.getKey().contains(secondColor.name())) { 29 | List> breedingInfoList = secondParentColorEntry.getValue(); 30 | boolean flag = false; 31 | for (LinkedTreeMap breedingInfo : breedingInfoList) { 32 | String childColor = breedingInfo.get("childColor"); 33 | String conditions = breedingInfo.get("conditions"); 34 | String random = breedingInfo.get("random"); 35 | if (!conditions.equals("none")) { 36 | if (conditions.equals("bothParentsFedGold")) { 37 | flag = true; 38 | if (!bothParentsFedGold) { 39 | continue; 40 | } 41 | } else if (conditions.equals("bothParentsNotFedGold")) { 42 | flag = true; 43 | if (bothParentsFedGold) { 44 | continue; 45 | } 46 | } 47 | } else { 48 | if (flag && bothParentsFedGold) { 49 | continue; 50 | } 51 | } 52 | if (!random.equals("none")) { 53 | String[] parts = random.split(Pattern.quote(" ")); 54 | if (parts[0].equals("above")) { 55 | if (!(randColor > Integer.parseInt(parts[1]))) 56 | continue; 57 | } else if (parts[0].equals("under")) { 58 | if (!(randColor < Integer.parseInt(parts[1]))) 59 | continue; 60 | } 61 | } 62 | if (childColor.equals("secondParent")) { 63 | return secondColor; 64 | } else { 65 | return ChocoboColor.valueOf(childColor); 66 | } 67 | } 68 | } 69 | } 70 | } else { 71 | Chococraft.LOGGER.error("Breeding Config does not contain {}", firstColor.name()); 72 | } 73 | return ChocoboColor.YELLOW; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /neoforge/src/main/java/net/chococraft/neoforge/ChococraftNeoForge.java: -------------------------------------------------------------------------------- 1 | package net.chococraft.neoforge; 2 | 3 | import net.chococraft.Chococraft; 4 | import net.chococraft.common.entity.AbstractChocobo; 5 | import net.chococraft.neoforge.client.NeoForgeClientHandler; 6 | import net.chococraft.neoforge.common.config.BreedingConfig; 7 | import net.chococraft.neoforge.common.config.BreedingConfigReloadManager; 8 | import net.chococraft.neoforge.common.config.NeoForgeChocoConfig; 9 | import net.chococraft.neoforge.common.entity.NeoForgeChocobo; 10 | import net.chococraft.neoforge.common.modifier.ModModifiers; 11 | import net.chococraft.neoforge.registry.ModDataSerializers; 12 | import net.chococraft.registry.ModEntities; 13 | import net.chococraft.registry.ModRegistry; 14 | import net.minecraft.world.entity.SpawnPlacementTypes; 15 | import net.minecraft.world.level.levelgen.Heightmap; 16 | import net.neoforged.api.distmarker.Dist; 17 | import net.neoforged.bus.api.IEventBus; 18 | import net.neoforged.fml.ModContainer; 19 | import net.neoforged.fml.common.Mod; 20 | import net.neoforged.fml.config.ModConfig; 21 | import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; 22 | import net.neoforged.neoforge.capabilities.Capabilities; 23 | import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; 24 | import net.neoforged.neoforge.client.gui.ConfigurationScreen; 25 | import net.neoforged.neoforge.client.gui.IConfigScreenFactory; 26 | import net.neoforged.neoforge.common.NeoForge; 27 | import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; 28 | 29 | @Mod(Chococraft.MOD_ID) 30 | public class ChococraftNeoForge { 31 | public ChococraftNeoForge(IEventBus eventBus, ModContainer container, Dist dist) { 32 | container.registerConfig(ModConfig.Type.COMMON, NeoForgeChocoConfig.commonSpec); 33 | eventBus.register(NeoForgeChocoConfig.class); 34 | 35 | ModModifiers.BIOME_MODIFIER_SERIALIZERS.register(eventBus); 36 | ModDataSerializers.ENTITY_DATA_SERIALIZER.register(eventBus); 37 | 38 | NeoForge.EVENT_BUS.register(new BreedingConfigReloadManager()); 39 | 40 | eventBus.addListener(this::setup); 41 | eventBus.addListener(this::registerSpawnPlacements); 42 | eventBus.addListener(this::registerCapabilities); 43 | 44 | Chococraft.init(); 45 | 46 | if (dist.isClient()) { 47 | container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); 48 | eventBus.addListener(NeoForgeClientHandler::registerEntityRenders); 49 | eventBus.addListener(NeoForgeClientHandler::registerMenuScreen); 50 | eventBus.addListener(NeoForgeClientHandler::registerLayerDefinitions); 51 | } 52 | } 53 | 54 | private void setup(final FMLCommonSetupEvent event) { 55 | ModRegistry.registerCompostables(); 56 | BreedingConfig.initializeConfig(); 57 | } 58 | 59 | private void registerSpawnPlacements(RegisterSpawnPlacementsEvent event) { 60 | event.register(ModEntities.CHOCOBO.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AbstractChocobo::checkChocoboSpawnRules, RegisterSpawnPlacementsEvent.Operation.AND); 61 | } 62 | 63 | private void registerCapabilities(RegisterCapabilitiesEvent event) { 64 | event.registerEntity(Capabilities.ItemHandler.ENTITY, ModEntities.CHOCOBO.get(), (entity, ctx) -> ((NeoForgeChocobo) entity).getInventory()); 65 | } 66 | } 67 | --------------------------------------------------------------------------------