- Lots of food stuff (#1196)

* - Lots of food stuff

* Updated Changelog
This commit is contained in:
Redeix 2025-06-20 03:49:39 -05:00 committed by GitHub
parent 3428588b25
commit c567450875
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 371 additions and 11 deletions

View file

@ -9,6 +9,7 @@
- New bedrock ore veins on the moon! Much better sources of infinite materials than stone dusts. @TomPlop
- New machines to properly automate food, along with proper compatibility between machines and TFC's food system, so you can't turn rotten grains into fresh bread any more. The electric greenhouse now also always outputs fresh food. @ofoxsmith
- New electric refrigerator with different tiers. You can craft the old one into this new one, but please take your food out of it before upgrading otherwise it will be lost! @ofoxsmith
- Added many new advanced food items including freeze-dried fruit, calorie paste, and meal bags. @Redeix
- Quest updates for all of the above. @TomPlop
### Minor changes
- Balance changes for water wheels @Pyritie

View file

@ -282,6 +282,7 @@
"item.tfg.food.cooked_crawlermari": "Cooked Crawlermari",
"item.tfg.food.raw_limpet": "Raw Limpet",
"item.tfg.food.cooked_limpet": "Cooked Limpet",
"tfg.tooltip.foodtrait.freeze_dried": "Cryodesiccated",
"material.tfg.latex": "Latex",
"material.tfg.vulcanized_latex": "Vulcanized Latex",
"material.tfg.fluix": "Fluix",
@ -358,6 +359,41 @@
"item.gtceu.silver_purified_ore": "Deprecated Item, Craft to Upgrade",
"item.gtceu.tin_purified_ore": "Deprecated Item, Craft to Upgrade",
"item.gtceu.lead_purified_ore": "Deprecated Item, Craft to Upgrade",
"item.tfg.foil_pack": "Foil Pack",
"item.tfg.used_foil_pack": "Used Foil Pack",
"item.tfg.clean_foil_pack": "Clean Foil Pack",
"item.tfg.dry_ice": "Dry Ice",
"item.tfg.food.freeze_dried.red_grapes": "Freeze Dried Red Grapes",
"item.tfg.food.freeze_dried.white_grapes": "Freeze Dried White Grapes",
"item.tfg.food.freeze_dried.glow_berries": "Freeze Dried Glow Berries",
"item.tfg.food.freeze_dried.chorus_fruit": "Freeze Dried Chorus Fruit",
"item.tfg.food.freeze_dried.popped_chorus_fruit": "Freeze Dried Popped Chorus Fruit",
"item.tfg.food.freeze_dried.blackberry": "Freeze Dried Blackberries",
"item.tfg.food.freeze_dried.blueberry": "Freeze Dried Blueberries",
"item.tfg.food.freeze_dried.bunchberry": "Freeze Dried Bunchberries",
"item.tfg.food.freeze_dried.cloudberry": "Freeze Dried Cloudberries",
"item.tfg.food.freeze_dried.cranberry": "Freeze Dried Cranberries",
"item.tfg.food.freeze_dried.elderberry": "Freeze Dried Elderberries",
"item.tfg.food.freeze_dried.gooseberry": "Freeze Dried Gooseberries",
"item.tfg.food.freeze_dried.raspberry": "Freeze Dried Raspberries",
"item.tfg.food.freeze_dried.snowberry": "Freeze Dried Snowberries",
"item.tfg.food.freeze_dried.strawberry": "Freeze Dried Strawberries",
"item.tfg.food.freeze_dried.wintergreen_berry": "Freeze Dried Wintergreen Berries",
"item.tfg.food.freeze_dried.banana": "Freeze Dried Banana",
"item.tfg.food.freeze_dried.cherry": "Freeze Dried Cherries",
"item.tfg.food.freeze_dried.green_apple": "Freeze Dried Green Apple",
"item.tfg.food.freeze_dried.lemon": "Freeze Dried Lemon",
"item.tfg.food.freeze_dried.olive": "Freeze Dried Olives",
"item.tfg.food.freeze_dried.orange": "Freeze Dried Orange",
"item.tfg.food.freeze_dried.peach": "Freeze Dried Peach",
"item.tfg.food.freeze_dried.plum": "Freeze Dried Plum",
"item.tfg.food.freeze_dried.red_apple": "Freeze Dried Red Apple",
"item.tfg.food.freeze_dried.pumpkin_chunks": "Freeze Dried Pumpkin Chunks",
"item.tfg.food.freeze_dried.melon_slice": "Freeze Dried Melon Slice",
"item.tfg.food.freeze_dried.fig": "Freeze Dried Fig",
"item.tfg.food.freeze_dried.pineapple": "Freeze Dried Pineapple",
"item.tfg.food.calorie_paste": "Calorie Paste",
"item.tfg.food.meal_bag": "Meal Bag",
"gtceu:rich_raw_copper": "Deprecated Item, Craft to Upgrade",
"gtceu:poor_raw_copper": "Deprecated Item, Craft to Upgrade",
"gtceu:rich_raw_gold": "Deprecated Item, Craft to Upgrade",
@ -501,6 +537,7 @@
"tfg.food_recipe.brining": "Brining",
"tfg.food_recipe.smoking": "Smoking",
"tfg.food_recipe.drying": "Drying",
"tfg.food_recipe.freeze_drying": "Dessicate",
"tfg.recipe.macerator_warning": "Only outputs first slot until HV",
"tfg.grapplemod.repair": "Repair recipe, keeps your upgrades. §lNEVER combine two grapples or you'll lose ALL your upgrades!§r",
"tfg.grapplemod.upgrades.maxlen": "Increases §lMax Length§r by 20, up to 200.",

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -0,0 +1,5 @@
{
"animation": {
"frametime": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

View file

@ -215,4 +215,25 @@ function registerGTCEURecyclingRecipes(event) {
.duration(1792)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Clean Foil pack
event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack')
.itemInputs('tfg:clean_foil_pack')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack')
.itemInputs('tfg:clean_foil_pack')
.itemOutputs(
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 1)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -82,6 +82,10 @@ const registerTFCItemTags = (event) => {
// Make eggs not useless
event.add('tfc:foods/usable_in_salad', 'tfc:food/cooked_egg')
event.add('tfc:foods/usable_in_salad', 'tfc:food/boiled_egg')
event.add('tfc:foods/usable_in_jam_sandwich', 'tfc:food/cooked_egg')
event.add('tfc:foods/usable_in_jam_sandwich', 'tfc:food/boiled_egg')
event.add('tfc:foods/usable_in_sandwich', 'tfc:food/cooked_egg')
event.add('tfc:foods/usable_in_sandwich', 'tfc:food/boiled_egg')
// Чтобы жарились бревна из TFC в пиролиз. печке
// Почему нельзя просто добавить тег в тег? (допустим minecraft:logs), потому что из-за этого ломаются все рецепты minecraft:logs, магия...

View file

@ -102,4 +102,24 @@ const registerTFGFoodData = (event) => {
food.protein(2.4)
food.decayModifier(2.25)
})
global.FOOD_FRUIT.forEach(fruit => {
event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, food => {
food.hunger(4)
food.saturation(fruit.saturation)
food.water(0)
food.fruit(fruit.fruit)
food.decayModifier(fruit.decay)
})
})
event.foodItem('tfg:food/calorie_paste', food => {
food.hunger(6)
food.saturation(4)
food.decayModifier(4.5)
})
event.foodItem('tfg:food/meal_bag', food => {
food.type('dynamic')
})
}

View file

@ -116,6 +116,7 @@ function registerTFGFoodRecipes(event) {
// Raw crop to grain
processorRecipe(`${grain}_grain`, 100, 8, {
circuit: 30,
itemInputs: [`tfc:food/${grain}`],
itemOutputs: [`tfc:food/${grain}_grain`],
itemOutputProvider: TFC.isp.of(`tfc:food/${grain}_grain`).copyOldestFood()
@ -123,6 +124,7 @@ function registerTFGFoodRecipes(event) {
// Grain to flour
processorRecipe(`${grain}_flour`, 100, 8, {
circuit: 31,
itemInputs: [`tfc:food/${grain}_grain`],
itemOutputs: [`2x tfc:food/${grain}_flour`],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_flour`).copyOldestFood()
@ -171,9 +173,10 @@ function registerTFGFoodRecipes(event) {
})
//Note: Jam needs to be first in the recipe code or else it will consider it as the usable_in_jam_sandwhich ingredients.
processorRecipe(`${grain}_${type[0]}_jam_sandwich`, 100, 16, {
//1 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_1`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich'],
itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich_2'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, 'tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
@ -181,6 +184,30 @@ function registerTFGFoodRecipes(event) {
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
//2 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_2`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '2x #tfc:foods/preserves', '1x #tfc:foods/usable_in_jam_sandwich_2'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, '2x tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
//3 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_3`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '3x #tfc:foods/preserves'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, '3x tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
})
@ -344,6 +371,73 @@ function registerTFGFoodRecipes(event) {
})
})
global.FOOD_FRUIT.forEach(fruit => {
processorRecipeText(`${fruit.name}/drying`, 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 7,
itemInputs: [fruit.id, 'tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: [`tfg:food/freeze_dried/${fruit.name}`],
itemOutputProvider: TFC.isp.of(`tfg:food/freeze_dried/${fruit.name}`).copyOldestFood().removeTrait('firmalife:dried').addTrait('tfg:freeze_dried')
})
})
//#endregion
//#region Meal Bags
//1 Input
processorRecipeText('meal_bag/1', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 10,
itemInputs: ['1x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: ['2x tfg:food/meal_bag'],
itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal(
(food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [
(portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8),
]).addTrait('tfg:freeze_dried')
})
//2 Input
processorRecipeText('meal_bag/2', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 11,
itemInputs: ['2x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: ['2x tfg:food/meal_bag'],
itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal(
(food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [
(portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8),
]).addTrait('tfg:freeze_dried')
})
//3 Input
processorRecipeText('meal_bag/3', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 12,
itemInputs: ['3x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: ['2x tfg:food/meal_bag'],
itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal(
(food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [
(portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8),
]).addTrait('tfg:freeze_dried')
})
//4 Input
processorRecipeText('meal_bag/4', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 13,
itemInputs: ['4x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: ['2x tfg:food/meal_bag'],
itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal(
(food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [
(portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8),
]).addTrait('tfg:freeze_dried')
})
//5 Input
processorRecipeText('meal_bag/5', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 14,
itemInputs: ['5x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: ['2x tfg:food/meal_bag'],
itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal(
(food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [
(portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8),
]).addTrait('tfg:freeze_dried')
})
//#endregion
//#region ================= Misc =================
@ -414,6 +508,14 @@ function registerTFGFoodRecipes(event) {
itemOutputs: ['firmalife:food/soybean_paste'],
itemOutputProvider: TFC.isp.of('firmalife:food/soybean_paste').copyOldestFood(),
})
processorRecipeText('calorie_paste', 100, 512, "tfg.food_recipe.freeze_drying", {
circuit: 8,
itemInputs: ['firmalife:food/soybean_paste', 'tfg:foil_pack'],
itemOutputs: ['tfg:food/calorie_paste'],
fluidInputs: [Fluid.of('gtceu:fermented_biomass', 40)],
itemOutputProvider: TFC.isp.of('tfg:food/calorie_paste').copyOldestFood().addTrait('tfg:freeze_dried'),
})
// Vinegar
global.TFC_ALCOHOL.forEach(alcohol => {

View file

@ -424,4 +424,69 @@ function registerTFGMiscellaneousRecipes(event) {
.duration(40)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack')
.itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1))
.itemOutputs('1x tfg:foil_pack')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.compressor('tfg:compressor/dry_ice')
.inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000))
.itemOutputs('10x tfg:dry_ice')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/decompress_dry_ice')
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 100))
.itemInputs('1x tfg:dry_ice')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.ore_washer('tfg:ore_washer/clean_foil_pack')
.itemInputs('1x tfg:used_foil_pack')
.inputFluids(Fluid.of('minecraft:water', 100))
.itemOutputs('1x tfg:clean_foil_pack')
.duration(200)
.circuit(1)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack')
.itemInputs('1x tfg:used_foil_pack')
.inputFluids(Fluid.of('gtceu:distilled_water', 10))
.itemOutputs('1x tfg:clean_foil_pack')
.duration(200)
.circuit(2)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [
{item: 'tfg:used_foil_pack'}],
result: {item: 'tfg:clean_foil_pack'}
}).id('tfg:ae_transform/clean_foil_pack')
event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack')
.id('tfg:splashing/clean_foil_pack')
event.shapeless('1x tfg:used_foil_pack', [
'tfg:food/calorie_paste'
]).id('tfg:shapeless/emptying/calorie_paste')
event.shapeless('1x tfg:used_foil_pack', [
'tfg:food/meal_bag'
]).id('tfg:shapeless/emptying/meal_bag')
global.FOOD_FRUIT.forEach(fruit => {
event.shapeless('1x tfg:used_foil_pack', [
`tfg:food/freeze_dried/${fruit.name}`
]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`)
})
}

View file

@ -141,7 +141,7 @@ const registerTFGItemTags = (event) => {
event.add('forge:double_iron_ingots', '#forge:double_ingots/iron')
event.add('forge:double_iron_ingots', '#forge:double_ingots/wrought_iron')
// Food
//#region Food
const RAW_MEATS = [
'tfg:food/raw_birt',
'tfg:food/raw_crawlermari',
@ -164,6 +164,26 @@ const registerTFGItemTags = (event) => {
event.add('tfc:foods/cooked_meats', meat)
})
//jam sandwhich stuff
const usable_in_jam_sandwich = Ingredient.of('#tfc:foods/usable_in_jam_sandwich').itemIds.toArray().map(String);
const preserves = Ingredient.of('#tfc:foods/preserves').itemIds.toArray().map(String);
const usable_in_jam_sandwich_2 = usable_in_jam_sandwich.filter(item => !preserves.includes(item));
usable_in_jam_sandwich_2.forEach(item => {
event.add('tfc:foods/usable_in_jam_sandwich_2', item);
});
//meal bags
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/meats');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/grains');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/vegetables');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/fruits');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/dairy');
event.add('tfg:foods/usable_in_meal_bag', 'tfc:food/cooked_egg');
event.add('tfg:foods/usable_in_meal_bag', 'tfc:food/boiled_egg');
//#endregion
// #region 0.7.19 -> 0.9 conversion
event.add('c:hidden_from_recipe_viewers', 'treetap:tap')
event.add('c:hidden_from_recipe_viewers', 'tfcea:refrigerator')

View file

@ -87,6 +87,9 @@ GTCEuStartupEvents.registry('gtceu:dimension_marker', event => {
registerTFGDimensionMarkers(event)
})
TFCEvents.registerFoodTrait(event => {
registerTFGFoodTraits(event)
})
Platform.mods.kaolinclayze.name = "Primitive Creatures";
Platform.mods.tfg.name = "TerraFirmaGreg";

View file

@ -68,4 +68,36 @@ global.MARS_BIOMES = [
'tfg:mars/martian_mountains'
]
global.UNIVERSAL_CIRCUIT_TIERS = ["ulv", "lv", "mv", "hv", "ev", "iv", "luv", "zpm", "uv", "uhv"];
global.UNIVERSAL_CIRCUIT_TIERS = ["ulv", "lv", "mv", "hv", "ev", "iv", "luv", "zpm", "uv", "uhv"];
global.FOOD_FRUIT = [
{name: 'red_grapes', id: 'firmalife:food/red_grapes', saturation: 0.4, water: 2, fruit: 0.5, decay: 2.25},
{name: 'white_grapes', id: 'firmalife:food/white_grapes', saturation: 0.4, water: 2, fruit: 0.5, decay: 2.25},
{name: 'glow_berries', id: 'minecraft:glow_berries', saturation: 0, water: 5, fruit: 0.5, decay: 2.25},
{name: 'chorus_fruit', id: 'minecraft:chorus_fruit', saturation: 0, water: 5, fruit: 2, decay: 1.2},
{name: 'popped_chorus_fruit', id: 'minecraft:popped_chorus_fruit', saturation: 1, water: 0, fruit: 3, decay: 0.8},
{name: 'blackberry', id: 'tfc:food/blackberry', saturation: 0.2, water: 5, fruit: 0.8, decay: 4.5},
{name: 'blueberry', id: 'tfc:food/blueberry', saturation: 0.2, water: 5, fruit: 0.8, decay: 4.5},
{name: 'bunchberry', id: 'tfc:food/bunchberry', saturation: 0.4, water: 5, fruit: 0.8, decay: 4.5},
{name: 'cloudberry', id: 'tfc:food/cloudberry', saturation: 0.4, water: 5, fruit: 0.8, decay: 4.5},
{name: 'cranberry', id: 'tfc:food/cranberry', saturation: 0.2, water: 5, fruit: 1, decay: 2.25},
{name: 'elderberry', id: 'tfc:food/elderberry', saturation: 0.2, water: 5, fruit: 1, decay: 4.5},
{name: 'gooseberry', id: 'tfc:food/gooseberry', saturation: 0.4, water: 5, fruit: 0.8, decay: 4.5},
{name: 'raspberry', id: 'tfc:food/raspberry', saturation: 0.4, water: 5, fruit: 0.8, decay: 4.5},
{name: 'snowberry', id: 'tfc:food/snowberry', saturation: 0.2, water: 5, fruit: 1, decay: 4.5},
{name: 'strawberry', id: 'tfc:food/strawberry', saturation: 0.4, water: 10, fruit: 0.5, decay: 4.5},
{name: 'wintergreen_berry', id: 'tfc:food/wintergreen_berry', saturation: 0.2, water: 5, fruit: 1, decay: 2.1},
{name: 'banana', id: 'tfc:food/banana', saturation: 0.2, water: 0, fruit: 1, decay: 2.25},
{name: 'cherry', id: 'tfc:food/cherry', saturation: 0.2, water: 5, fruit: 1, decay: 3.5},
{name: 'green_apple', id: 'tfc:food/green_apple', saturation: 0.4, water: 0, fruit: 1, decay: 2.5},
{name: 'lemon', id: 'tfc:food/lemon', saturation: 0.2, water: 5, fruit: 0.08, decay: 2.25},
{name: 'olive', id: 'tfc:food/olive', saturation: 0.2, water: 0, fruit: 1, decay: 2.25},
{name: 'orange', id: 'tfc:food/orange', saturation: 0.4, water: 10, fruit: 0.5, decay: 2.25},
{name: 'peach', id: 'tfc:food/peach', saturation: 0.4, water: 10, fruit: 0.5, decay: 2.5},
{name: 'plum', id: 'tfc:food/plum', saturation: 0.4, water: 5, fruit: 0.8, decay: 2.25},
{name: 'red_apple', id: 'tfc:food/red_apple', saturation: 0.4, water: 0, fruit: 1, decay: 2.25},
{name: 'pumpkin_chunks', id: 'tfc:food/pumpkin_chunks', saturation: 1, water: 5, fruit: 0.8, decay: 2.25},
{name: 'melon_slice', id: 'tfc:food/melon_slice', saturation: 0.2, water: 5, fruit: 0.8, decay: 2.25},
{name: 'fig', id: 'firmalife:food/fig', saturation: 1, water: 5, fruit: 0.9, decay: 1},
{name: 'pineapple', id: 'firmalife:food/pineapple', saturation: 1, water: 1, fruit: 0.8, decay: 4.5}
];

View file

@ -0,0 +1,5 @@
function registerTFGFoodTraits(event) {
event.registerTraitWithTooltip(0.02, 'tfg:freeze_dried')
}

View file

@ -4,7 +4,7 @@ function registerTFGFoodItems(event) {
event.create('tfg:food/raw_birt')
.translationKey('item.tfg.food.raw_birt')
.food(food => food.hunger(2).saturation(2)
.food(food => food.hunger(2).saturation(1)
.effect('species:birtd', 50, 0, 1)
.eaten(ctx => {
ctx.player.level.runCommandSilent(`playsound species:effect.birtd.applied player ${ctx.player.username} ${ctx.player.x} ${ctx.player.y} ${ctx.player.z} 1 1`)
@ -12,21 +12,54 @@ function registerTFGFoodItems(event) {
event.create('tfg:food/cooked_birt')
.translationKey('item.tfg.food.cooked_birt')
.food(food => food.hunger(6).saturation(6))
.food(food => food.hunger(4).saturation(2))
event.create('tfg:food/raw_limpet')
.translationKey('item.tfg.food.raw_limpet')
.food(food => food.hunger(2).saturation(2))
.food(food => food.hunger(2).saturation(1))
event.create('tfg:food/cooked_limpet')
.translationKey('item.tfg.food.cooked_limpet')
.food(food => food.hunger(6).saturation(6))
.food(food => food.hunger(4).saturation(2))
event.create('tfg:food/raw_crawlermari')
.translationKey('item.tfg.food.raw_crawlermari')
.food(food => food.hunger(2).saturation(2))
.food(food => food.hunger(2).saturation(1))
event.create('tfg:food/cooked_crawlermari')
.translationKey('item.tfg.food.cooked_crawlermari')
.food(food => food.hunger(6).saturation(6))
.food(food => food.hunger(4).saturation(2))
global.FOOD_FRUIT.forEach(fruit => {
event.create(`tfg:food/freeze_dried/${fruit.name}`)
.translationKey(`item.tfg.food.freeze_dried/${fruit.name}`)
.texture(`tfg:item/food/freeze_dried_${fruit.name}`)
.food(food => food.hunger(4).saturation(1)
.eaten(ctx => {
ctx.player.give('tfg:used_foil_pack')
}))
})
event.create('tfg:food/calorie_paste')
.translationKey('item.tfg.food.calorie_paste')
.food(food => food.hunger(8).saturation(5)
.eaten(ctx => {
ctx.player.give('tfg:used_foil_pack')
}))
.texture('tfg:item/food/calorie_paste')
event.create('tfg:used_foil_pack')
.translationKey('item.tfg.food.used_foil_pack')
.food(food => food.hunger(0).saturation(0)
.effect('minecraft:nausea', 200, 0, 1)
)
.texture('tfg:item/used_foil_pack')
event.create('tfg:food/meal_bag')
.translationKey('item.tfg.food.meal_bag')
.food(food => food.hunger(6).saturation(3)
.eaten(ctx => {
ctx.player.give('tfg:used_foil_pack')
}))
.texture('tfg:item/food/meal_bag')
}

View file

@ -147,12 +147,24 @@ const registerTFGItems = (event) => {
.tooltip(`§9Instant Health II`)
//#endregion
//#region Wax
//#region Misc
event.create('tfg:paraffin_wax')
.translationKey('item.tfg.paraffin_wax')
event.create('tfg:conifer_rosin')
.translationKey('item.tfg.conifer_rosin')
event.create('tfg:foil_pack')
.translationKey('item.tfg.foil_pack')
.texture('tfg:item/foil_pack')
event.create('tfg:clean_foil_pack')
.translationKey('item.tfg.clean_foil_pack')
.texture('tfg:item/clean_foil_pack')
event.create('tfg:dry_ice')
.translationKey('item.tfg.dry_ice')
.texture('tfg:item/dry_ice')
//#endregion
//#region Cloth & String