Meats and eats (#2001)

* meats and eats

* changelog and pt_br
This commit is contained in:
Redeix 2025-10-10 03:14:29 -05:00 committed by GitHub
parent 9f530f8fb3
commit 69d8e68ef1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 469 additions and 35 deletions

View file

@ -2,6 +2,7 @@
## [Unreleased]
### Changes
- Added meats for the surfer, cruncher, stackatick and primitive creatures mobs. #2001 @Redeix
### Bug fixes
## [0.11.2] - 09-10-2025

View file

@ -125,7 +125,7 @@
"entity": "species:cruncher",
"scale": 0.7,
"name": "Cruncher",
"text": "$(thing)Crunchers$() are territorial $(item)miniboss$() predators. Feed them meat to stop their regeneration."
"text": "$(thing)Crunchers$() are territorial $(item)miniboss$() predators. Feed them meat to stop their regeneration. They can also be eaten."
},
{
"type": "patchouli:entity",
@ -156,7 +156,7 @@
"entity": "species:springling",
"scale": 0.9,
"name": "Springling",
"text": "$(thing)Springlings$() are wild animals found above -108°C. Feeding them $(item)Saplings$() will let you ride them and extend their extremely long necks."
"text": "$(thing)Springlings$() are wild animals found above -108°C. Feeding them $(item)Saplings$() will let you ride them and extend their extremely long necks. They can also be eaten."
},
{
"type": "patchouli:entity",
@ -185,7 +185,7 @@
"entity": "species:stackatick",
"scale": 0.4,
"name": "Stackatick",
"text": "One of the few animals that can survive the Martian desert, $(thing)Stackaticks$() are passive prey animals. They cannot be eaten."
"text": "One of the few animals that can survive the Martian desert, $(thing)Stackaticks$() are passive prey animals. They can also be eaten."
}
],
"read_by_default": true

View file

@ -811,8 +811,8 @@
"item.tfg.spawn_egg.sniffer": "Sniffer Spawn Egg",
"item.tfg.food.raw_wraptor": "Raw Wraptor",
"item.tfg.food.cooked_wraptor": "Cooked Wraptor",
"item.tfg.food.raw_springling_chops": "Raw Springling Chops",
"item.tfg.food.cooked_springling_chops": "Cooked Springling Chops",
"item.tfg.food.raw_springling_collar": "Raw Springling Collar",
"item.tfg.food.cooked_springling_collar": "Cooked Springling Collar",
"item.tfg.food.raw_walker_steak": "Raw Walker Steak",
"item.tfg.food.cooked_walker_steak": "Cooked Walker Steak",
"item.tfg.food.raw_glider_wings": "Raw Glider Wings",
@ -823,6 +823,15 @@
"item.tfg.food.cooked_crusher_meat": "Cooked Crusher Meat",
"item.tfg.food.raw_goober_meat": "Raw Goober Meat",
"item.tfg.food.cooked_goober_meat": "Cooked Goober Meat",
"item.tfg.food.raw_long_pig_filet": "Raw Long Pig Filet",
"item.tfg.food.cooked_long_pig_filet": "Cooked Long Pig Filet",
"item.tfg.food.raw_surfer_steak": "Raw Surfer Steak",
"item.tfg.food.cooked_surfer_steak": "Cooked Surfer Steak",
"item.tfg.food.raw_stackatick_chunks": "Raw Stackatick Chunks",
"item.tfg.food.raw_stickastackatick": "Raw Stick'a'Stackatick",
"item.tfg.food.cooked_stickastackatick": "Cooked Stick'a'Stackatick",
"item.tfg.food.raw_cruncher_ribs": "Raw Cruncher Ribs",
"item.tfg.food.cooked_cruncher_ribs": "Cooked Cruncher Ribs",
"item.tfg.roasted_sunflower_seeds": "Roasted Sunflower Seeds",
"item.tfg.sunflower_seeds": "Sunflower Seed",
"item.tfg.sunflower_product": "Sunflower Cap",

View file

@ -551,6 +551,29 @@
"item.tfg.food.raw_sniffer_beef": "Bife de Farejador Cru",
"item.tfg.food.cooked_sniffer_beef": "Bife de Farejador Cozido",
"item.tfg.spawn_egg.sniffer": "Ovo Gerador de Farejador",
"item.tfg.food.raw_wraptor": "Carne de Distráptor Crua",
"item.tfg.food.cooked_wraptor": "Carne de Distráptor Cozida",
"item.tfg.food.raw_springling_collar": "Colar de Pescoçudo Cru",
"item.tfg.food.cooked_springling_collar": "Colar de Pescoçudo Cozido",
"item.tfg.food.raw_walker_steak": "Bife Andador Cru",
"item.tfg.food.cooked_walker_steak": "Bife Andador Cozido",
"item.tfg.food.raw_glider_wings": "Asas de Planador Cruas",
"item.tfg.food.cooked_glider_wings": "Asas de Planador Cozidas",
"item.tfg.food.raw_whole_soarer": "Carne de Voador Inteira Cru",
"item.tfg.food.cooked_whole_soarer": "Carne de Voador Inteira Cozida",
"item.tfg.food.raw_crusher_meat": "Carne de Esmagador Cru",
"item.tfg.food.cooked_crusher_meat": "Carne de Esmagador Cozida",
"item.tfg.food.raw_goober_meat": "Carne Espirrão Cru",
"item.tfg.food.cooked_goober_meat": "Carne Espirrão Cozida",
"item.tfg.food.raw_long_pig_filet": "Filé de \"Porco\" Cru",
"item.tfg.food.cooked_long_pig_filet": "Filé de \"Porco\" Cozido",
"item.tfg.food.raw_surfer_steak": "Bife de Surfista Cru",
"item.tfg.food.cooked_surfer_steak": "Bife de Surfista Cozido",
"item.tfg.food.raw_stackatick_chunks": "Pedaços de Carraplato Cru",
"item.tfg.food.raw_stickastackatick": "Carraplato no Taco Cru",
"item.tfg.food.cooked_stickastackatick": "Carraplato no Taco Cozido",
"item.tfg.food.raw_cruncher_ribs": "Costelas de mastigador Cru",
"item.tfg.food.cooked_cruncher_ribs": "Costelas de Mastigador Cozidas",
"item.tfg.roasted_sunflower_seeds": "Sementes de Girassol Torradas",
"item.tfg.sunflower_seeds": "Sementes de Girassol",
"item.tfg.sunflower_product": "Chapéu de Girassol",

View file

@ -0,0 +1,96 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"textures": {
"0": "tfg:item/food/cooked_stickastackatick",
"particle": "tfg:item/food/cooked_stickastackatick"
},
"elements": [
{
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7.5, 0, 7.5]},
"faces": {
"north": {"uv": [0, 0, 1, 16], "texture": "#0"},
"east": {"uv": [0, 0, 1, 16], "texture": "#0"},
"south": {"uv": [0, 0, 1, 16], "texture": "#0"},
"west": {"uv": [0, 0, 1, 16], "texture": "#0"},
"up": {"uv": [1, 1, 0, 0], "texture": "#0"},
"down": {"uv": [1, 15, 0, 16], "texture": "#0"}
}
},
{
"from": [6.5, 5, 6.5],
"to": [9.5, 8, 9.5],
"rotation": {"angle": 0, "axis": "x", "origin": [7.5, 5, 6.5]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
},
{
"from": [6.5, 8, 6.5],
"to": [9.5, 11, 9.5],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
},
{
"from": [6.5, 11, 6.5],
"to": [9.5, 14, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 8]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, 3, 1.25],
"scale": [0.6, 0.6, 0.6]
},
"thirdperson_lefthand": {
"translation": [0, 3, 1.25],
"scale": [0.6, 0.6, 0.6]
},
"firstperson_righthand": {
"rotation": [-85, 0, 6],
"translation": [-1.25, 3.75, 1.5],
"scale": [0.75, 0.75, 0.75]
},
"firstperson_lefthand": {
"rotation": [-85, 0, 6],
"translation": [-1.25, 3.75, 1.5],
"scale": [0.75, 0.75, 0.75]
},
"ground": {
"translation": [0, 2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [0, 41, -45]
},
"head": {
"rotation": [0, -90, -90],
"translation": [0, -4, -11.25]
},
"fixed": {
"rotation": [0, -180, 0]
}
}
}

View file

@ -0,0 +1,96 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"textures": {
"0": "tfg:item/food/raw_stickastackatick",
"particle": "tfg:item/food/raw_stickastackatick"
},
"elements": [
{
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7.5, 0, 7.5]},
"faces": {
"north": {"uv": [0, 0, 1, 16], "texture": "#0"},
"east": {"uv": [0, 0, 1, 16], "texture": "#0"},
"south": {"uv": [0, 0, 1, 16], "texture": "#0"},
"west": {"uv": [0, 0, 1, 16], "texture": "#0"},
"up": {"uv": [1, 1, 0, 0], "texture": "#0"},
"down": {"uv": [1, 15, 0, 16], "texture": "#0"}
}
},
{
"from": [6.5, 5, 6.5],
"to": [9.5, 8, 9.5],
"rotation": {"angle": 0, "axis": "x", "origin": [7.5, 5, 6.5]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
},
{
"from": [6.5, 8, 6.5],
"to": [9.5, 11, 9.5],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
},
{
"from": [6.5, 11, 6.5],
"to": [9.5, 14, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 8]},
"faces": {
"north": {"uv": [1, 0, 4, 3], "texture": "#0"},
"east": {"uv": [4, 0, 1, 3], "texture": "#0"},
"south": {"uv": [1, 3, 4, 0], "texture": "#0"},
"west": {"uv": [4, 3, 1, 0], "texture": "#0"},
"up": {"uv": [4, 0, 1, 3], "texture": "#0"},
"down": {"uv": [1, 0, 4, 3], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, 3, 1.25],
"scale": [0.6, 0.6, 0.6]
},
"thirdperson_lefthand": {
"translation": [0, 3, 1.25],
"scale": [0.6, 0.6, 0.6]
},
"firstperson_righthand": {
"rotation": [-85, 0, 6],
"translation": [-1.25, 3.75, 1.5],
"scale": [0.75, 0.75, 0.75]
},
"firstperson_lefthand": {
"rotation": [-85, 0, 6],
"translation": [-1.25, 3.75, 1.5],
"scale": [0.75, 0.75, 0.75]
},
"ground": {
"translation": [0, 2, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [0, 41, -45]
},
"head": {
"rotation": [0, -90, -90],
"translation": [0, -4, -11.25]
},
"fixed": {
"rotation": [0, -180, 0]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 885 B

After

Width:  |  Height:  |  Size: 373 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
{"animation": {"frametime": 1, "frames": [{"index": 0, "time":40}, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 959 B

After

Width:  |  Height:  |  Size: 367 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
{"animation": {"frametime": 1, "frames": [{"index": 0, "time":40}, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

View file

@ -20,6 +20,7 @@ function registerPrimitiveCreaturesLoots(event) {
// forager - light tan clothes, holds a stone axe
event.addEntityLootModifier('primitive_creatures:iloger_1')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([
// the illusion of randomness
Item.of('tfc:food/bunchberry', 3),
@ -46,10 +47,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:raw_shirt'),
Item.of('tfc_textile:raw_pants'),
Item.of('tfc_textile:raw_socks')])
event.addEntityLootModifier('primitive_creatures:iloger_1')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// herbalist - brown clothes with a mask that looks like a Creaking
event.addEntityLootModifier('primitive_creatures:iloger_2')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([3,4], ['gtceu:tricalcium_phosphate_dust'])
.addAlternativesLoot(
LootEntry.of('gtceu:cobalt_brass_mortar').damage([0.3, 0.9]).when(c => c.randomChance(0.3)),
@ -63,10 +68,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:grizzly_bear_shirt'),
Item.of('tfc_textile:grizzly_bear_pants'),
Item.of('tfc_textile:grizzly_bear_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_2')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// bonebreaker - skull helmet, bone armor? hits harder, has knockback
event.addEntityLootModifier('primitive_creatures:iloger_3')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([0,2], ['minecraft:flint'])
.addWeightedLoot([1,3], ['minecraft:bone'])
.addAlternativesLoot(
@ -80,12 +89,16 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:direwolf_shirt'),
Item.of('tfc_textile:direwolf_pants'),
Item.of('tfc_textile:direwolf_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_3')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// ambusher - leaf on head, leafy clothes (like the swamp vanilla villager type), ranged with poison
event.addEntityLootModifier('primitive_creatures:iloger_4')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([8,12], LootEntry.of('minecraft:tipped_arrow')).addPotion("poison")
.addWeightedLoot([4,8], ['firmalife:food/nightshade_berry'])
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addAlternativesLoot(
LootEntry.of('minecraft:bow').damage([0.3, 0.9]).when(c => c.randomChance(0.5)),
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.05)),
@ -98,11 +111,15 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:crocodile_shirt'),
Item.of('tfc_textile:crocodile_pants'),
Item.of('tfc_textile:crocodile_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_4')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// hunter - wears brown and white fur, briefly disappears when hit, ranged with weakness
event.addEntityLootModifier('primitive_creatures:iloger_5')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([8,12], LootEntry.of('minecraft:tipped_arrow')).addPotion("weakness")
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addAlternativesLoot(
// placeholder for a blowpipe
LootEntry.of('minecraft:bamboo').when(c => c.randomChance(0.5)),
@ -116,10 +133,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:sabertooth_shirt'),
Item.of('tfc_textile:sabertooth_pants'),
Item.of('tfc_textile:sabertooth_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_5')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// shaman - yellow clothes, throws fireballs
event.addEntityLootModifier('primitive_creatures:iloger_6')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([1,2], ['primitive_creatures:f_1']) // primitive explosives
.addWeightedLoot([1,3], ['minecraft:gunpowder'])
.addAlternativesLoot(
@ -134,10 +155,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:cougar_shirt'),
Item.of('tfc_textile:cougar_pants'),
Item.of('tfc_textile:cougar_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_6')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// beast tamer - wears tiger fur, holds vanilla sugarcane? fucking summons ravagers
event.addEntityLootModifier('primitive_creatures:wiloger')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([0,2], ['primitive_creatures:grh']) // battered wool
.addAlternativesLoot(
LootEntry.of('gtceu:cobalt_brass_butchery_knife').damage([0.3, 0.9]).when(c => c.randomChance(0.3)),
@ -151,10 +176,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:tiger_shirt'),
Item.of('tfc_textile:tiger_pants'),
Item.of('tfc_textile:tiger_boots')])
event.addEntityLootModifier('primitive_creatures:wiloger')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// warrior - lion fur, holds flint club - stuns you in place when hit
event.addEntityLootModifier('primitive_creatures:piloger_9')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addAlternativesLoot(
LootEntry.of('primitive_creatures:yhgi').when(c => c.randomChance(0.8)), // flint club
LootEntry.of('tfc:small_raw_hide').when(c => c.randomChance(0.4)),
@ -166,10 +195,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:lion_shirt'),
Item.of('tfc_textile:lion_pants'),
Item.of('tfc_textile:lion_boots')])
event.addEntityLootModifier('primitive_creatures:piloger_9')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// mercenary
event.addEntityLootModifier('primitive_creatures:viloger_10')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([1,2], ['minecraft:emerald'])
.addAlternativesLoot(
LootEntry.of('gtceu:cobalt_brass_knife').damage([0.3, 0.7]).when(c => c.randomChance(0.3)),
@ -183,10 +216,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:raw_shirt'),
Item.of('tfc_textile:raw_pants'),
Item.of('tfc_textile:raw_socks')])
event.addEntityLootModifier('primitive_creatures:viloger_10')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// huntmaster - miniboss
event.addEntityLootModifier('primitive_creatures:nahida')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([
LootEntry.of('gtceu:cobalt_brass_spade').damage([0.85, 1]),
LootEntry.of('gtceu:cobalt_brass_sickle').damage([0.85, 1]),
@ -209,10 +246,14 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:panther_shirt'),
Item.of('tfc_textile:panther_pants'),
Item.of('tfc_textile:panther_boots')])
event.addEntityLootModifier('primitive_creatures:nahida')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// berserker - guy with celtic blue face paint
event.addEntityLootModifier('primitive_creatures:iloger_10')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([5, 8], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([
LootEntry.of('gtceu:cobalt_brass_sword').damage([0.85, 1]),
LootEntry.of('sns:burlap_sack'),
@ -225,13 +266,18 @@ function registerPrimitiveCreaturesLoots(event) {
Item.of('tfc_textile:sabertooth_shirt'),
Item.of('tfc_textile:sabertooth_pants'),
Item.of('tfc_textile:sabertooth_boots')])
event.addEntityLootModifier('primitive_creatures:iloger_10')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_long_pig_filet'])
// mistah beeeaaaasssstt
event.addEntityLootModifier('primitive_creatures:beast')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([20, 30], ['tfg:food/raw_long_pig_filet'])
.addWeightedLoot([12,16], ['minecraft:bone'])
.addWeightedLoot([2,3], ['tfc:large_raw_hide'])
.addWeightedLoot([4,6], ['tfc:blubber'])
// change to our own raw meat?
.addWeightedLoot([20, 30], ['tfc:food/bear'])
event.addEntityLootModifier('primitive_creatures:beast')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([10, 15], ['tfg:food/raw_long_pig_filet'])
}

View file

@ -33,17 +33,29 @@ function registerSpeciesLoots(event) {
event.addEntityLootModifier('species:springling')
.addLoot('tfc:small_raw_hide')
.addWeightedLoot([2, 4], ['minecraft:bone'])
.addWeightedLoot([6, 8], ['tfg:food/raw_springling_chops'])
.addWeightedLoot([6, 8], ['tfg:food/raw_springling_collar'])
event.addEntityLootModifier('species:springling')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([3, 5], ['tfg:food/raw_springling_chops'])
.addWeightedLoot([3, 5], ['tfg:food/raw_springling_collar'])
// TODO: meat
event.addEntityLootModifier('species:cruncher')
.addLoot('tfc:large_raw_hide')
.addWeightedLoot([10, 13], ['minecraft:bone'])
.addWeightedLoot([14, 24], ['tfg:food/raw_cruncher_ribs'])
event.addEntityLootModifier('species:cruncher')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([7, 12], ['tfg:food/raw_cruncher_ribs'])
event.addEntityLootModifier('species:stackatick')
.addWeightedLoot([5, 8], ['tfg:food/raw_stackatick_chunks'])
event.addEntityLootModifier('species:stackatick')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfg:food/raw_stackatick_chunks'])
event.addEntityLootModifier('species:quake')

View file

@ -396,19 +396,77 @@ function registerTFGFoodData(event) {
food.decayModifier(1.5);
});
event.foodItem("tfg:food/raw_springling_chops", (food) => {
event.foodItem("tfg:food/raw_springling_collar", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_springling_chops", (food) => {
event.foodItem("tfg:food/cooked_springling_collar", (food) => {
food.hunger(4);
food.saturation(3);
food.protein(5);
food.decayModifier(1.5);
});
event.foodItem("tfg:food/raw_surfer_steak", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_surfer_steak", (food) => {
food.hunger(6);
food.saturation(3);
food.protein(6);
food.decayModifier(1.5);
});
event.foodItem("tfg:food/raw_cruncher_ribs", (food) => {
food.hunger(3);
food.protein(2.0);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => {
food.hunger(6);
food.saturation(3);
food.protein(8);
food.decayModifier(1.4);
});
event.foodItem("tfg:food/raw_long_pig_filet", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_long_pig_filet", (food) => {
food.hunger(6);
food.saturation(3);
food.protein(5);
food.decayModifier(1.5);
});
event.foodItem("tfg:food/raw_stackatick_chunks", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/raw_stickastackatick", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_stickastackatick", (food) => {
food.hunger(6);
food.saturation(3);
food.protein(4);
food.decayModifier(1.5);
});
event.foodItem("tfg:food/raw_walker_steak", (food) => {
food.hunger(3);
food.protein(2.0);
@ -465,6 +523,7 @@ function registerTFGFoodData(event) {
food.hunger(2);
food.protein(3.0);
food.decayModifier(3);
food.water(1);
});
event.foodItem("tfg:food/cooked_goober_meat", (food) => {

View file

@ -1139,9 +1139,9 @@ function registerTFGFoodRecipes(event) {
event.recipes.tfc.heating('tfg:food/raw_wraptor', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_wraptor').copyFood())
event.recipes.tfc.heating('tfg:food/raw_springling_chops', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_springling_chops').copyFood())
event.recipes.tfc.heating('tfg:food/raw_springling_collar', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_springling_collar').copyFood())
event.recipes.tfc.heating('tfg:food/raw_walker_steak', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_walker_steak').copyFood())
@ -1157,6 +1157,23 @@ function registerTFGFoodRecipes(event) {
event.recipes.tfc.heating('tfg:food/raw_goober_meat', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_goober_meat').copyFood())
event.recipes.tfc.heating('tfg:food/raw_surfer_steak', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_surfer_steak').copyFood())
event.recipes.tfc.heating('tfg:food/raw_cruncher_ribs', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_cruncher_ribs').copyFood())
event.recipes.tfc.heating('tfg:food/raw_stickastackatick', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_stickastackatick').copyFood())
event.recipes.tfc.heating('tfg:food/raw_long_pig_filet', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_long_pig_filet').copyFood())
event.recipes.tfc.advanced_shapeless_crafting(
TFC.itemStackProvider.of('tfg:food/raw_stickastackatick').copyFood(),
[TFC.ingredient.notRotten('tfg:food/raw_stackatick_chunks'), '#forge:rods/wood'], 'tfg:food/raw_stackatick_chunks')
.id(`tfg:crafting/raw_stickastackatick`)
event.recipes.tfc.advanced_shapeless_crafting(
TFC.itemStackProvider.of('4x betterend:cave_pumpkin_chunks').copyFood(),
[TFC.ingredient.notRotten('betterend:cave_pumpkin'), '#forge:tools/hammers'], 'betterend:cave_pumpkin')

View file

@ -60,9 +60,9 @@ function registerWansAncientBeastsLoots(event) {
event.addEntityLootModifier('wan_ancient_beasts:surfer')
.addLoot('tfc:medium_raw_hide')
.addWeightedLoot([1, 3], ['minecraft:bone'])
// TODO: meat
.addWeightedLoot([6, 8], ['tfg:food/raw_surfer_steak'])
//event.addEntityLootModifier('wan_ancient_beasts:surfer')
// .matchMainHand('#forge:tools/butchery_knives')
// .addWeightedLoot([1, 2], ['tfg:food/raw_whole_soarer'])
event.addEntityLootModifier('wan_ancient_beasts:surfer')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([3, 4], ['tfg:food/raw_surfer_steak'])
}

View file

@ -908,22 +908,18 @@ global.TFC_MEAT_RECIPE_COMPONENTS = /** @type {const} */ ([
{ input: "tfg:food/raw_glacian_mutton", output: "tfg:food/cooked_glacian_mutton", name: "cooked_glacian_mutton" },
{ input: "tfg:food/raw_sniffer_beef", output: "tfg:food/cooked_sniffer_beef", name: "cooked_sniffer_beef" },
{ input: "tfg:food/raw_wraptor", output: "tfg:food/cooked_wraptor", name: "cooked_wraptor" },
{
input: "wan_ancient_beasts:toxlacanth",
output: "wan_ancient_beasts:cooked_toxlacanth",
name: "cooked_toxlacanth",
},
{
input: "tfg:food/raw_springling_chops",
output: "tfg:food/cooked_springling_chops",
name: "cooked_springling_chops",
},
{ input: "wan_ancient_beasts:toxlacanth", output: "wan_ancient_beasts:cooked_toxlacanth", name: "cooked_toxlacanth" },
{ input: "tfg:food/raw_springling_collar", output: "tfg:food/cooked_springling_collar", name: "cooked_springling_collar" },
{ input: "tfg:food/raw_walker_steak", output: "tfg:food/cooked_walker_steak", name: "cooked_walker_steak" },
{ input: "tfg:food/raw_glider_wings", output: "tfg:food/cooked_glider_wings", name: "cooked_glider_wings" },
{ input: "tfg:food/raw_whole_soarer", output: "tfg:food/cooked_whole_soarer", name: "cooked_whole_soarer" },
{ input: "tfg:food/raw_crusher_meat", output: "tfg:food/cooked_crusher_meat", name: "cooked_crusher_meat" },
{ input: "tfg:food/raw_goober_meat", output: "tfg:food/cooked_goober_meat", name: "cooked_goober_meat" },
{ input: "wan_ancient_beasts:raw_ancient_meat", output: "wan_ancient_beasts:cooked_ancient_meat", name: "cooked_eater_meat" }
{ input: "wan_ancient_beasts:raw_ancient_meat", output: "wan_ancient_beasts:cooked_ancient_meat", name: "cooked_eater_meat" },
{ input: "tfg:food/raw_surfer_steak", output: "tfg:food/cooked_surfer_steak", name: "cooked_surfer_steak" },
{ input: "tfg:food/raw_long_pig_filet", output: "tfg:food/cooked_long_pig_filet", name: "cooked_long_pig_filet" },
{ input: "tfg:food/raw_cruncher_ribs", output: "tfg:food/cooked_cruncher_ribs", name: "cooked_cruncher_ribs" },
{ input: "tfg:food/raw_stickastackatick", output: "tfg:food/cooked_stickastackatick", name: "cooked_stickastackatick" },
]);
global.TFC_QUERN_POWDER_RECIPE_COMPONENTS = /** @type {const} */ ([

View file

@ -140,17 +140,17 @@ function registerTFGFoodItems(event) {
.tag('tfc:foods/cooked_meats')
//Springling
event.create('tfg:food/raw_springling_chops')
event.create('tfg:food/raw_springling_collar')
.translationKey('item.tfg.food.raw_springling_chops')
.texture('tfg:item/food/raw_springling_chops')
.texture('tfg:item/food/raw_springling_collar')
.food(food => food.hunger(2).saturation(2)
.effect('minecraft:hunger', 100, 0, 1))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/cooked_springling_chops')
event.create('tfg:food/cooked_springling_collar')
.translationKey('item.tfg.food.cooked_springling_chops')
.texture('tfg:item/food/cooked_springling_chops')
.texture('tfg:item/food/cooked_springling_collar')
.food(food => food.hunger(4).saturation(4))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
@ -231,10 +231,87 @@ function registerTFGFoodItems(event) {
event.create('tfg:food/cooked_goober_meat')
.translationKey('item.tfg.food.cooked_goober_meat')
.texture('tfg:item/food/cooked_goober_meat')
.food(food => food.hunger(3).saturation(6))
.food(food => food.hunger(3).saturation(9))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
//Stackatick
event.create('tfg:food/raw_stackatick_chunks')
.translationKey('item.tfg.food.raw_stackatick_chunks')
.texture('tfg:item/food/raw_stackatick_chunks')
.food(food => food.hunger(1).saturation(1)
.effect('minecraft:hunger', 100, 0, 1))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/raw_stickastackatick')
.translationKey('item.tfg.food.raw_stickastackatick')
.parentModel('tfg:item/food/raw_stickastackatick')
.food(food => food.hunger(1).saturation(1)
.effect('minecraft:hunger', 100, 0, 1)
.eaten(ctx => {
ctx.player.give('minecraft:stick')
}))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/cooked_stickastackatick')
.translationKey('item.tfg.food.cooked_stickastackatick')
.parentModel('tfg:item/food/cooked_stickastackatick')
.food(food => food.hunger(2).saturation(5)
.eaten(ctx => {
ctx.player.give('minecraft:stick')
}))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
//Cruncher
event.create('tfg:food/raw_cruncher_ribs')
.translationKey('item.tfg.food.raw_cruncher_ribs')
.texture('tfg:item/food/raw_cruncher_ribs')
.food(food => food.hunger(2).saturation(2)
.effect('minecraft:hunger', 100, 0, 1))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/cooked_cruncher_ribs')
.translationKey('item.tfg.food.cooked_cruncher_ribs')
.texture('tfg:item/food/cooked_cruncher_ribs')
.food(food => food.hunger(10).saturation(14))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
//Surfer
event.create('tfg:food/raw_surfer_steak')
.translationKey('item.tfg.food.raw_surfer_steak')
.texture('tfg:item/food/raw_surfer_steak')
.food(food => food.hunger(2).saturation(2)
.effect('minecraft:hunger', 100, 0, 1))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/cooked_surfer_steak')
.translationKey('item.tfg.food.cooked_surfer_steak')
.texture('tfg:item/food/cooked_surfer_steak')
.food(food => food.hunger(8).saturation(8))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
//Longpig
event.create('tfg:food/raw_long_pig_filet')
.translationKey('item.tfg.food.raw_long_pig_filet')
.texture('tfg:item/food/raw_long_pig_filet')
.food(food => food.hunger(2).saturation(2)
.effect('minecraft:hunger', 100, 0, 1))
.tag('tfc:foods/meats')
.tag('tfc:foods/raw_meats')
event.create('tfg:food/cooked_long_pig_filet')
.translationKey('item.tfg.food.cooked_long_pig_filet')
.texture('tfg:item/food/cooked_long_pig_filet')
.food(food => food.hunger(7).saturation(8))
.tag('tfc:foods/meats')
.tag('tfc:foods/cooked_meats')
event.create('tfg:food/ice_soup')
.translationKey('item.tfg.food.ice_soup')