Feature/mars piles and layers (#1975)

* changes for some sand layer/pile stuff

* Martian wind (#1883)

* add texture for wind

* add multiple martian wind types

* fix semiheavy concurrent with tfg core

* rename wind to match convention

* fix blockstate registration error

* why is this even turned on by default

* translate code regions + placeholder bundle recipe

* add mars climate controller

* add debug stick functions

* cleanup

* add layer block models

* add jsons

* cleanup

---------

Signed-off-by: Zippity <i.wa.anderson.86@gmail.com>

* refactor

* undo bundle

* added a bunch of missing snow pile tags

* item model changes

* more snow piled tags

* add dust storm severity biome tags

* some cleanup

---------

Signed-off-by: Zippity <i.wa.anderson.86@gmail.com>
Co-authored-by: Zippity <i.wa.anderson.86@gmail.com>
This commit is contained in:
Pyritie 2025-10-07 18:22:41 +01:00 committed by GitHub
parent 8cfe1a0b55
commit 153ae76522
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
51 changed files with 540 additions and 170 deletions

View file

@ -109,7 +109,7 @@
# User overrides go here.
mixin.bugfix.packet_leak=true
mixin.feature.disable_unihex_font=true
mixin.feature.spark_profile_launch=true
mixin.feature.spark_profile_launch=false
mixin.perf.clear_mixin_classinfo=true
mixin.perf.deduplicate_location=true
mixin.perf.dynamic_entity_renderers=true

View file

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "tfg:block/fluid/semiheavy_ammoniacal_water"
}
}
}

View file

@ -0,0 +1,28 @@
{
"variants": {
"layers=1": {
"model": "tfg:block/pile/hematitic_sand/sand_height2"
},
"layers=2": {
"model": "tfg:block/pile/hematitic_sand/sand_height4"
},
"layers=3": {
"model": "tfg:block/pile/hematitic_sand/sand_height6"
},
"layers=4": {
"model": "tfg:block/pile/hematitic_sand/sand_height8"
},
"layers=5": {
"model": "tfg:block/pile/hematitic_sand/sand_height10"
},
"layers=6": {
"model": "tfg:block/pile/hematitic_sand/sand_height12"
},
"layers=7": {
"model": "tfg:block/pile/hematitic_sand/sand_height14"
},
"layers=8": {
"model": "minecraft:block/red_sand"
}
}
}

View file

@ -0,0 +1,28 @@
{
"variants": {
"layers=1": {
"model": "tfg:block/pile/hematitic_sand/sand_height2"
},
"layers=2": {
"model": "tfg:block/pile/hematitic_sand/sand_height4"
},
"layers=3": {
"model": "tfg:block/pile/hematitic_sand/sand_height6"
},
"layers=4": {
"model": "tfg:block/pile/hematitic_sand/sand_height8"
},
"layers=5": {
"model": "tfg:block/pile/hematitic_sand/sand_height10"
},
"layers=6": {
"model": "tfg:block/pile/hematitic_sand/sand_height12"
},
"layers=7": {
"model": "tfg:block/pile/hematitic_sand/sand_height14"
},
"layers=8": {
"model": "minecraft:block/red_sand"
}
}
}

View file

@ -0,0 +1,28 @@
{
"variants": {
"layers=1": {
"model": "tfg:block/pile/mars_sand/sand_height2"
},
"layers=2": {
"model": "tfg:block/pile/mars_sand/sand_height4"
},
"layers=3": {
"model": "tfg:block/pile/mars_sand/sand_height6"
},
"layers=4": {
"model": "tfg:block/pile/mars_sand/sand_height8"
},
"layers=5": {
"model": "tfg:block/pile/mars_sand/sand_height10"
},
"layers=6": {
"model": "tfg:block/pile/mars_sand/sand_height12"
},
"layers=7": {
"model": "tfg:block/pile/mars_sand/sand_height14"
},
"layers=8": {
"model": "ad_astra:block/mars_sand"
}
}
}

View file

@ -0,0 +1,31 @@
{
"variants": {
"layers=1": [
{ "model": "tfg:block/pile/mars_snow/sand_height2a" },
{ "model": "tfg:block/pile/mars_snow/sand_height2b" },
{ "model": "tfg:block/pile/mars_snow/sand_height2c" },
{ "model": "tfg:block/pile/mars_snow/sand_height2d" }
],
"layers=2": {
"model": "tfg:block/pile/mars_snow/sand_height4"
},
"layers=3": {
"model": "tfg:block/pile/mars_snow/sand_height6"
},
"layers=4": {
"model": "tfg:block/pile/mars_snow/sand_height8"
},
"layers=5": {
"model": "tfg:block/pile/mars_snow/sand_height10"
},
"layers=6": {
"model": "tfg:block/pile/mars_snow/sand_height12"
},
"layers=7": {
"model": "tfg:block/pile/mars_snow/sand_height14"
},
"layers=8": {
"model": "tfg:block/pile/mars_snow/sand_height14"
}
}
}

View file

@ -0,0 +1,28 @@
{
"variants": {
"layers=1": {
"model": "tfg:block/pile/venus_sand/sand_height2"
},
"layers=2": {
"model": "tfg:block/pile/venus_sand/sand_height4"
},
"layers=3": {
"model": "tfg:block/pile/venus_sand/sand_height6"
},
"layers=4": {
"model": "tfg:block/pile/venus_sand/sand_height8"
},
"layers=5": {
"model": "tfg:block/pile/venus_sand/sand_height10"
},
"layers=6": {
"model": "tfg:block/pile/venus_sand/sand_height12"
},
"layers=7": {
"model": "tfg:block/pile/venus_sand/sand_height14"
},
"layers=8": {
"model": "ad_astra:block/venus_sand"
}
}
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "tfg:block/semiheavy_ammoniacal_water"
}
}
}

View file

@ -423,6 +423,16 @@
"block.tfg.pile.moon_sand": "Lunar Sand",
"block.tfg.pile.mars_sand": "Argillite Sand",
"block.tfg.pile.venus_sand": "Trachyte Sand",
"block.tfg.layer.white_sand": "White Sand",
"block.tfg.layer.black_sand": "Black Sand",
"block.tfg.layer.brown_sand": "Brown Sand",
"block.tfg.layer.red_sand": "Red Sand",
"block.tfg.layer.yellow_sand": "Yellow Sand",
"block.tfg.layer.green_sand": "Green Sand",
"block.tfg.layer.pink_sand": "Pink Sand",
"block.tfg.layer.moon_sand": "Lunar Sand",
"block.tfg.layer.mars_sand": "Argillite Sand",
"block.tfg.layer.venus_sand": "Trachyte Sand",
"block.tfg.lunar_roots": "Lunar Lightblooms",
"block.tfg.lunar_sprouts": "Lunar Lightgrass",
"block.tfg.lunar_chorus_plant": "Chorus Plant",
@ -4130,4 +4140,4 @@
"quests.tfg_tips.tools_tips.harvest_basket.subtitle": "For competitive pie bakers.",
"quests.tfg_tips.tools_tips.harvest_basket.task": "Any #tfg:harvester",
"quests.tfg_tips.tools_tips.harvest_basket.desc": "&l&2Harvest Baskets&r&r are a new tool made just for &5TFG&r! These baskets can be used to harvest whole trees and bushes of fruit in one right-click! A regular &6Harvest Basket&r has a base durability of &n128&r. But an &3Aluminium Harvest Basket&r takes no damage on use."
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height10",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height12",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height14",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height4",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height6",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height8",
"textures": {
"particle": "minecraft:block/red_sand",
"texture": "minecraft:block/red_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height10",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height12",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height14",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height4",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height6",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "tfg:block/ash_pile/ash_height8",
"textures": {
"particle": "ad_astra:block/mars_sand",
"texture": "ad_astra:block/mars_sand"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height10",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height12",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height14",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "tfg:block/mars_snow_2",
"texture": "tfg:block/mars_snow_2"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "tfg:block/mars_snow_3",
"texture": "tfg:block/mars_snow_3"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height2",
"textures": {
"particle": "tfg:block/mars_snow_4",
"texture": "tfg:block/mars_snow_4"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height4",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height6",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "tfg:block/ash_pile/ash_height8",
"textures": {
"particle": "tfg:block/mars_snow_1",
"texture": "tfg:block/mars_snow_1"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "minecraft:block/red_sand"
}

View file

@ -0,0 +1,3 @@
{
"parent": "minecraft:block/red_sand"
}

View file

@ -1,3 +1,3 @@
{
"parent": "ad_astra:block/mars_sand"
"parent": "ad_astra:block/mars_sand"
}

View file

@ -0,0 +1,3 @@
{
"parent": "ad_astra:block/mars_sand"
}

View file

@ -0,0 +1,3 @@
{
"parent": "tfg:block/pile/mars_snow"
}

View file

@ -0,0 +1,3 @@
{
"parent": "ad_astra:block/venus_sand"
}

View file

@ -0,0 +1,5 @@
{
"textures": [
"tfg:colored_wind"
]
}

View file

@ -0,0 +1,5 @@
{
"textures": [
"tfg:colored_wind"
]
}

View file

@ -0,0 +1,5 @@
{
"textures": [
"tfg:colored_wind"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

View file

@ -428,6 +428,20 @@ const registerAdAstraBiomeTags = (event) => {
event.add('tfg:has_light_sand_particles', 'tfg:mars/rusticus_edge')
event.add('tfg:has_light_sand_particles', 'tfg:mars/sangnum_edge')
event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_river')
event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_mountains')
event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_river')
event.add('tfg:has_mild_dust_storms', 'tfg:mars/amber_hills')
event.add('tfg:has_mild_dust_storms', 'tfg:mars/rusticus_hills')
event.add('tfg:has_mild_dust_storms', 'tfg:mars/sangnum_hills')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_plains')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_edge')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_plains')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_edge')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_plains')
event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_edge')
event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_dunes')
event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_deep_desert')
}
const registerAdAstraEntityTypeTags = (event) => {

View file

@ -10,7 +10,7 @@ const registerMinecraftRecipes = (event) => {
removeMinecraftRecipes(event)
registerMinecraftDyeRecipes(event)
//#region Выход: Земля
//#region Выход: Земля, dirt
event.recipes.gtceu.macerator('dirt_from_bio_chaff')
.itemInputs('gtceu:bio_chaff')
@ -20,7 +20,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Стекло
//#region Выход: Стекло, glass
event.recipes.gtceu.arc_furnace('glass_from_sand')
.itemInputs('#forge:sand')
@ -30,12 +30,12 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Добавление
//#region Добавление, copper
for (let i = 0; i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length; i++) {
let element = global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS[i];
// Создание ржавчины
// Создание ржавчины, oxidation
if (i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length / 2 - 1) {
let element2 = global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS[i + 1]
@ -113,7 +113,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Кремний
//#region Выход: Кремний, flint
event.shapeless('minecraft:flint', [
'#tfc:rock/gravel',
@ -133,7 +133,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Шаблон баннера
//#region Выход: Шаблон баннера, banner template
event.shapeless('minecraft:flower_banner_pattern', [
'minecraft:paper',
@ -142,7 +142,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Бумага
//#region Выход: Бумага, paper
event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled')
.itemInputs('tfc:papyrus')
@ -167,7 +167,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Сахар
//#region Выход: Сахар, sugar
event.recipes.gtceu.centrifuge('sugar_from_sugarcane')
.itemInputs('tfc:food/sugarcane')
@ -184,7 +184,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Блок сена
//#region Выход: Блок сена, hay block
event.recipes.gtceu.packer('hay_block')
.itemInputs('9x tfc:straw')
@ -194,7 +194,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Светильник Джека
//#region Выход: Светильник Джека, jack o' lantern
event.recipes.gtceu.canner('jack_o_lantern')
.itemInputs('tfc:pumpkin')
@ -204,7 +204,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Светящийся арбуз
//#region Выход: Светящийся арбуз, glistering melon
event.shaped('minecraft:glistering_melon_slice', [
'AAA',
@ -229,7 +229,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Сухая губка
//#region Выход: Сухая губка, dry sponge
event.recipes.tfc.heating('minecraft:wet_sponge', 790)
.resultItem('minecraft:sponge')
@ -246,7 +246,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Тонированное стекло
//#region Выход: Тонированное стекло, tinted glass
event.recipes.gtceu.alloy_smelter('tfg:minecraft/tinted_glass')
.itemInputs('minecraft:glass', 'tfc:powder/amethyst')
@ -256,7 +256,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Пустая карта
//#region Выход: Пустая карта, maps
event.recipes.gtceu.assembler('map')
.itemInputs('8x minecraft:paper', 'firmaciv:firmaciv_compass')
@ -266,7 +266,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Книга
//#region Выход: Книга, books
event.shapeless('minecraft:book', [
'#forge:paper', '#forge:paper', '#forge:paper', '#forge:leather', 'tfc:glue'
@ -286,7 +286,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region
//#region Output: name tags
event.recipes.gtceu.assembler('tfg:assembler/name_tag')
.itemInputs('5x #forge:string', '#forge:paper')
@ -295,7 +295,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Компаратор
//#region Выход: Компаратор, comparator
// Компаратор
event.shaped('minecraft:comparator', [
@ -328,6 +328,10 @@ const registerMinecraftRecipes = (event) => {
C: '#tfc:rock/smooth'
}).id('tfg:shaped/comparator_nether_quartz');
//#endregion
//#region Output: redstone lamp
event.replaceInput({ id: 'gtceu:shaped/redstone_lamp' }, 'minecraft:glass_pane', '#forge:glass_panes')
event.recipes.gtceu.assembler('redstone_lamp')
.itemInputs('1x #forge:glass', '1x minecraft:glowstone', '1x #forge:rods/red_alloy')
@ -337,7 +341,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Рамка
//#region Выход: Рамка, item frame
event.recipes.gtceu.assembler('item_frame')
.itemInputs('8x #tfc:lumber', '#forge:leather')
@ -347,7 +351,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Свето-рамка
//#region Выход: Свето-рамка, glowing item frame
event.shapeless('minecraft:glow_item_frame', [
'minecraft:item_frame',
@ -362,7 +366,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Картина
//#region Выход: Картина, painting
event.recipes.gtceu.assembler('painting')
.itemInputs('#tfc:high_quality_cloth', '8x #forge:rods/wood')
@ -373,11 +377,11 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Факел
//#region Выход: Факел, torch
//#region В Верстаке
//#region В Верстаке, workbench recipes
// Из серы
// Из серы, from sulfur
event.shaped('2x tfc:dead_torch', [
'A',
'B'
@ -386,7 +390,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_sulfur')
// Из фосфора
// Из фосфора, from phosphorous
event.shaped('6x tfc:dead_torch', [
'A',
'B'
@ -395,7 +399,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_phosphorus')
// Из пыли кокса
// Из пыли кокса, from coke dust
event.shaped('8x tfc:dead_torch', [
'A',
'B'
@ -404,7 +408,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_coke_dust')
// Из гема кокса
// Из гема кокса, from coke gems
event.shaped('8x tfc:dead_torch', [
'A',
'B'
@ -413,7 +417,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_coke')
// Из пыли угля
// Из пыли угля, from coal dust
event.shaped('4x tfc:dead_torch', [
'A',
'B'
@ -422,7 +426,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_coal_dust')
// Из гема угля
// Из гема угля, from coal
event.shaped('4x tfc:dead_torch', [
'A',
'B'
@ -431,7 +435,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('tfg:crafting/torch_coal')
// Из пыли древесного угля
// Из пыли древесного угля, from charcoal dust
event.shaped('4x tfc:dead_torch', [
'A',
'B'
@ -440,7 +444,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('gtceu:shaped/torch_charcoal_dust')
// Из гема древесного угля
// Из гема древесного угля, from charcoal
event.shaped('4x tfc:dead_torch', [
'A',
'B'
@ -449,7 +453,7 @@ const registerMinecraftRecipes = (event) => {
B: '#tfc:can_be_lit_on_torch'
}).id('tfg:crafting/torch_charcoal')
// Из резины
// Из резины, from sticky resin
event.shaped('3x tfc:dead_torch', [
'A',
'B'
@ -460,51 +464,51 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region В сборщике
//#region В сборщике, assembler recipes
// Из серы
// Из серы, from sulfur
event.recipes.gtceu.assembler('torch_sulfur')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:sulfur_dust')
.itemOutputs('2x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из фосфора
// Из фосфора, from phosphorous
event.recipes.gtceu.assembler('torch_phosphorus')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:phosphorus_dust')
.itemOutputs('6x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из гема кокса
// Из гема коксаm, from coke gems
event.recipes.gtceu.assembler('torch_coke_gem')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:coke_gem')
.itemOutputs('8x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из пыли кокса
// Из пыли коксаm, from coke dust
event.recipes.gtceu.assembler('torch_coke_dust')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:coke_dust')
.itemOutputs('8x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из гема ванильного угля
// Из гема ванильного угляm, from coal
event.recipes.gtceu.assembler('torch_coal')
.itemInputs('#tfc:can_be_lit_on_torch', 'minecraft:coal')
.itemOutputs('4x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из пыли ванильного угля
// Из пыли ванильного угляm, from coal dust
event.recipes.gtceu.assembler('torch_coal_dust')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:coal_dust')
.itemOutputs('4x tfc:dead_torch')
.duration(100)
.EUt(1)
// Из пыли древесного угля
// Из пыли древесного угляm, from charcoal dust
event.recipes.gtceu.assembler('torch_charcoal_dust')
.itemInputs('#tfc:can_be_lit_on_torch', 'gtceu:charcoal_dust')
.itemOutputs('4x tfc:dead_torch')
@ -514,13 +518,13 @@ const registerMinecraftRecipes = (event) => {
//#endregion
// Мертвый факел в обычный
// Мертвый факел в обычный, smelt dead torch
event.smelting('tfc:torch', 'tfc:dead_torch')
.id('tfg:smelting/dead_torch_to_torch')
//#endregion
//#region Выход: Ведро
//#region Выход: Ведро, buckets
event.recipes.tfc.welding('minecraft:bucket', 'tfc:metal/bucket/red_steel', 'tfc:metal/bucket/blue_steel', 6)
.id('tfg:anvil/vanilla_bucket')
@ -546,7 +550,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Тигель
//#region Выход: Тигель, cauldron
event.shaped('minecraft:cauldron', [
'A A',
@ -566,7 +570,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Воронка
//#region Выход: Воронка, hopper
event.shaped('minecraft:hopper', [
'A A',
@ -588,7 +592,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Поршень (Piston)
//#region Выход: Поршень, piston
event.recipes.gtceu.assembler('piston')
.itemInputs(ChemicalHelper.get(TagPrefix.rod, GTMaterials.WroughtIron, 1),ChemicalHelper.get(TagPrefix.gearSmall, GTMaterials.Brass, 1) , '3x #tfc:lumber', '4x #forge:cobblestone')
@ -599,7 +603,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Шерсть
//#region Выход: Шерсть, wool
event.recipes.gtceu.assembler('wool_from_string')
.itemInputs('8x #forge:string')
@ -615,7 +619,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Лук
//#region Выход: Лук, bow
event.recipes.gtceu.assembler('bow')
.itemInputs('3x #forge:string', '3x #forge:rods/wooden')
@ -625,7 +629,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Наблюдатель
//#region Выход: Наблюдатель, observer
event.shaped('minecraft:observer', [
'AAA',
@ -677,7 +681,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Раздатчик
//#region Выход: Раздатчик, dispenser
event.recipes.gtceu.assembler('dispenser')
.itemInputs('7x #forge:cobblestone', 'minecraft:redstone', 'minecraft:bow')
@ -699,7 +703,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Выбрасыватель
//#region Выход: Выбрасыватель, dropper
event.recipes.gtceu.assembler('dropper')
.itemInputs('7x #forge:cobblestone', '2x minecraft:redstone')
@ -720,7 +724,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Рельсы
//#region Выход: Рельсы, rail
event.recipes.gtceu.assembler('rail')
.itemInputs('6x #forge:rods/wrought_iron', '#forge:rods/wooden')
@ -731,7 +735,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Заряженные рельсы
//#region Выход: Заряженные рельсы, powered rail
event.recipes.gtceu.assembler('powered_rail')
.itemInputs('6x #forge:rods/gold', '2x #forge:rods/wooden', '#forge:dusts/redstone')
@ -742,7 +746,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Активаторные рельсы
//#region Выход: Активаторные рельсы, activator rail
event.recipes.gtceu.assembler('activator_rail')
.itemInputs('6x #forge:rods/wrought_iron', '#forge:rods/wooden', 'minecraft:redstone_torch')
@ -753,7 +757,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Нажимные рельсы
//#region Выход: Нажимные рельсы, detector rail
event.recipes.gtceu.assembler('detector_rail')
.itemInputs('6x #forge:rods/wrought_iron', '#forge:rods/wooden', '#minecraft:stone_pressure_plates')
@ -764,7 +768,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Веревка
//#region Выход: Веревка, lead
event.shaped('minecraft:lead', [
' AA',
@ -786,7 +790,7 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Кирпич
//#region Выход: Кирпич, bricks
event.shaped('4x minecraft:bricks', [
'BAB',
@ -799,9 +803,9 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Элитра
//#region Выход: Элитра, elytra
// Ну и херь я придумал
// Ну и херь я придумал, here's some bullshit i came up with
event.recipes.gtceu.assembler('tfg:minecraft/elytra')
.itemInputs('16x tfg:polycaprolactam_fabric', '16x #forge:foils/aluminium', '8x tfg:phantom_silk', '4x #forge:rings/aluminium', '2x #forge:rods/long/vanadium_steel', '2x #forge:small_springs/aluminium', '1x #forge:small_gears/aluminium')
.circuit(4)
@ -920,7 +924,7 @@ const registerMinecraftRecipes = (event) => {
// #endregion
//#region Кожа из кожаных предметов
//#region Кожа из кожаных предметов, leather recycling
event.recipes.gtceu.macerator('tfg:leather_from_saddle')
.itemInputs('minecraft:saddle')
.itemOutputs('minecraft:leather')
@ -975,13 +979,13 @@ const registerMinecraftRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
//#endregion
// Slime
//#region Slime
event.smelting('tfc:glue', 'minecraft:slime_ball')
.id('tfg:smelting/slime_to_glue')
event.smelting('tfc:glue', 'minecraft:magma_cream')
.id('tfg:smelting/magma_cream_to_glue')
// Clay
//#region Clay
event.shaped('minecraft:clay', [
'AA',
'AA'
@ -993,7 +997,9 @@ const registerMinecraftRecipes = (event) => {
event.shapeless('4x minecraft:clay_ball', ['minecraft:clay'])
.id('tfg:shapeless/clay_block_to_balls')
// Mushrooms
//#endregion
//#region Mushrooms
event.shapeless('4x minecraft:red_mushroom', ['minecraft:red_mushroom_block', '#forge:tools/knives'])
.id('tfg:shapeless/cut_red_mushroom_block')
@ -1027,8 +1033,9 @@ const registerMinecraftRecipes = (event) => {
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
//#endregion
// Stonecutter
//#region Stonecutter
event.shaped('minecraft:stonecutter',
[
@ -1046,8 +1053,9 @@ const registerMinecraftRecipes = (event) => {
event.stonecutting('minecraft:smooth_quartz', 'minecraft:quartz_block')
event.stonecutting('create:cut_deepslate', 'minecraft:polished_deepslate')
//#endregion
//Glowing Ink Sacs
//#region Glowing Ink Sacs
event.recipes.gtceu.chemical_bath('minecraft:glow_inc_sac4')
.itemInputs("gtceu:thorium_dust", "4x #forge:dyes/black")
@ -1063,7 +1071,9 @@ const registerMinecraftRecipes = (event) => {
.duration(40)
.EUt(GTValues.VA[GTValues.MV])
// Gunpowder
//#endregion
//#region Gunpowder
event.shapeless('4x minecraft:gunpowder',
['#forge:tools/mortars', '2x #forge:dusts/saltpeter', '#forge:dusts/sulfur', '3x #forge:dusts/charcoal'])
@ -1085,7 +1095,10 @@ const registerMinecraftRecipes = (event) => {
event.replaceInput({ id: 'minecraft:writable_book' }, 'minecraft:ink_sac', '#forge:dyes/black')
//Pressure Plates
// #endregion
//#region Pressure Plates
const PRESSURE_PLATES = [
{type: 'bamboo', material: 'minecraft:bamboo_slab'},
{type: 'polished_blackstone', material: 'minecraft:polished_blackstone_slab'},
@ -1112,7 +1125,10 @@ const registerMinecraftRecipes = (event) => {
.EUt(2)
})
// Greenhouse
// #endregion
//#region Greenhouse
generateGreenHouseRecipe(event, '8x minecraft:bamboo', '#tfc:any_fresh_water', 4000,
'64x minecraft:bamboo', 'bamboo', 'minecraft:overworld', 8,
'8x minecraft:bamboo', GTValues.VA[GTValues.LV])
@ -1125,6 +1141,8 @@ const registerMinecraftRecipes = (event) => {
'24x minecraft:brown_mushroom', 'brown_mushroom', 'minecraft:the_nether', 8,
'4x minecraft:brown_mushroom', GTValues.VA[GTValues.LV])
// #endregion
// Minecart w/ Furnace
event.shapeless('minecraft:furnace_minecart', ['minecraft:water_bucket', 'gtceu:hp_steam_solid_boiler', 'minecraft:minecart']);

View file

@ -0,0 +1,78 @@
//"use strict";
//const $Vec2 = Java.loadClass("net.minecraft.world.phys.Vec2")
//ItemEvents.firstLeftClicked('gtceu:long_copper_rod', event => {
// //if (event.getItem().getHoverName().getString() !== "zippity") return;
// let player = event.player;
// player.sendSystemMessage(event.getItem().getHoverName());
// let biome = event.getLevel().getBiome(player.blockPosition());
// // player.sendSystemMessage("debug stick of dooooom!");
// let currentWind = TFC.climate.getWindVector(player.level, player.blockPosition());
// let tags = Array(
// ResourceLocation.tryParse("tfg:has_light_sand_particles"),
// ResourceLocation.tryParse("tfg:has_medium_sand_particles"),
// ResourceLocation.tryParse("tfg:has_dark_sand_particles")
// )
// // player.sendSystemMessage(`current biome tags are ${biome.getTagKeys().toString()}`);
// player.sendSystemMessage(biome.tags().map(tag => tag.location()).filter(element => tags.indexOf(element) > -1).toList());
// let text = `current wind vector is x: ${currentWind.x.toPrecision(2)} z: ${currentWind.y.toPrecision(2)}`;
// player.sendSystemMessage(text);
//});
//// scale wind up (down) on (crouch +) left click
//ItemEvents.firstLeftClicked('gtceu:long_tin_rod', event => {
// //if (event.getItem().getHoverName().getString() !== "zippity") return;
// const player = event.getPlayer()
// const climateManager = global.getMarsClimateController();
// const wind = climateManager.getWind();
// const windVec = new $Vec2(wind.x, wind.z);
// const increment = player.isCrouching() ? -0.1 : 0.1;
// player.sendSystemMessage(`current x: ${windVec.x.toFixed(1)}, z: ${windVec.y.toFixed(1)}`);
// let scaledVec = windVec.add(increment);
// let newX = 0.0;
// let newY = 0.0;
// // i can't modify windVec's properties without rhino throwing a shitfit so here have some extra variables
// newX = scaledVec.x
// newY = scaledVec.y
// if (scaledVec.lengthSquared() >= 1.0) {
// newX = scaledVec.normalized().scale(0.99).x;
// newY = scaledVec.normalized().scale(0.99).y;
// }
// newX = newX <= 0.1 ? 0.1 : newX
// newY = newY <= 0.1 ? 0.1 : newY
// climateManager.setWind({x: newX, z: newY})
// player.sendSystemMessage(`new x: ${newX.toFixed(1)}, z: ${newY.toFixed(1)}`);
//});
//ItemEvents.firstRightClicked('gtceu:long_tin_rod', event => {
// //if (event.getItem().getHoverName().getString() !== "zippity") return;
// const player = event.getPlayer();
// const climateManager = global.getMarsClimateController();
// const wind = climateManager.getWind();
// const windVec = new $Vec2(wind.x, wind.z);
// const initAngle = Math.atan2(windVec.y, windVec.x); // angle to x axis
// let increment = player.isCrouching() ? 15 : -15;
// increment = JavaMath.toRadians(increment)
// player.sendSystemMessage(`current angle: ${JavaMath.toDegrees(initAngle).toFixed(1)}`);
// let newX = (windVec.x * JavaMath.cos(increment)) - (windVec.y * JavaMath.sin(increment))
// let newY = (windVec.x * JavaMath.sin(increment)) + (windVec.y * JavaMath.cos(increment))
// player.sendSystemMessage(`new x: ${newX.toFixed(1)}, z: ${newY.toFixed(1)}`);
// climateManager.setWind({x: newX, z: newY});
// player.sendSystemMessage(`new angle: ${JavaMath.toDegrees(Math.atan2(newY, newX)).toFixed(1)}`);
//});

View file

@ -17,6 +17,7 @@ const registerTFGItemTags = (event) => {
event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product')
event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product')
// Actually "layers", can't rename them without screwing with peoples' worlds
event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/brown_sand')
@ -28,6 +29,13 @@ const registerTFGItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/moon_sand')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand')
// Actually "piles", the kind that can hide plants inside them
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering')
//temporary hidden items
event.add('c:hidden_from_recipe_viewers', 'tfg:geyser_source_small')
@ -1070,6 +1078,8 @@ const registerTFGBlockTags = (event) => {
event.add('minecraft:mushroom_grow_block', '#tfc:dirt')
event.add('minecraft:mushroom_grow_block', '#tfc:grass')
event.add('minecraft:mushroom_grow_block', '#forge:sand')
event.add('minecraft:mushroom_grow_block', '#forge:gravel')
// #endregion
event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves')

View file

@ -329,45 +329,6 @@ const registerTFGBlocks = (event) => {
// #endregion
// #region Layer blocks
event.create('tfg:ash_pile', 'tfg:layer_block')
.existingItem('tfc:powder/wood_ash')
.mapColor('color_light_gray')
event.create('tfg:pile/black_sand', 'tfg:layer_block')
.existingItem('tfc:sand/black')
event.create('tfg:pile/brown_sand', 'tfg:layer_block')
.existingItem('tfc:sand/brown')
event.create('tfg:pile/green_sand', 'tfg:layer_block')
.existingItem('tfc:sand/green')
event.create('tfg:pile/pink_sand', 'tfg:layer_block')
.existingItem('tfc:sand/pink')
event.create('tfg:pile/red_sand', 'tfg:layer_block')
.existingItem('tfc:sand/red')
event.create('tfg:pile/white_sand', 'tfg:layer_block')
.existingItem('tfc:sand/white')
event.create('tfg:pile/yellow_sand', 'tfg:layer_block')
.existingItem('tfc:sand/yellow')
event.create('tfg:pile/mars_sand', 'tfg:layer_block')
.existingItem('ad_astra:mars_sand')
event.create('tfg:pile/moon_sand', 'tfg:layer_block')
.existingItem('ad_astra:moon_sand')
event.create('tfg:pile/venus_sand', 'tfg:layer_block')
.existingItem('ad_astra:venus_sand')
// #endregion
// #region Reconstituted Stone
event.create(`tfg:rock/stone_wall`, 'wall')

View file

@ -229,8 +229,8 @@ const registerTFGCrops = (event) => {
dead.tagBlock('minecraft:mineable/hoe')
})
event.create('betterend:chorus_mushroom_wild', 'tfc:wild_crop')
.type('default')
event.create('betterend:chorus_mushroom_wild', 'tfc:wild_crop')
.type('default')
.box(2, 0, 2, 14, 4, 14)
.translationKey('block.betterend.chorus_mushroom_wild')
.soundType('nether_wart')
@ -264,8 +264,8 @@ const registerTFGCrops = (event) => {
dead.box(2, 0, 2, 14, 3, 14)
})
event.create('betterend:shadow_berry_wild', 'tfc:wild_crop')
.type('default')
event.create('betterend:shadow_berry_wild', 'tfc:wild_crop')
.type('default')
.box(2, 0, 2, 14, 3, 14)
.soundType('crop')
.seeds('betterend:shadow_berry_seeds')
@ -299,7 +299,7 @@ const registerTFGCrops = (event) => {
dead.box(2, 0, 2, 14, 5, 14)
})
event.create('betterend:bolux_mushroom_wild', 'tfc:wild_crop')
event.create('betterend:bolux_mushroom_wild', 'tfc:wild_crop')
.box(2, 0, 2, 14, 5, 14)
.type('default')
.soundType('nether_wart')

View file

@ -30,6 +30,40 @@ function invLerp(x, y, a) {
return (a - x) / (y - x);
}
/**
* allows runtime control of wind vector; called every tick
* @returns {Object} singleton manager object
*/
global.getMarsClimateController = function() {
if (!global._MARS_CLIMATE_CONTROLLER) {
console.info("Initializing MARS_CLIMATE_CONTROLLER...");
global._MARS_CLIMATE_CONTROLLER = {
windX: 0,
windZ: 0,
getWind: function() {
return {x: this.windX, z: this.windZ};
},
setWind: function(vector) {
const strength = Math.hypot(vector.x, vector.z);
// if (strength > 1.0) throw new RangeError("Vector length > 1");
this.windX = vector.x;
this.windZ = vector.z;
},
createCallbackForBuilder: function(builder) {
var self = this;
return function() {
const wind = self.getWind();
return builder.vector(wind.x, wind.z);
};
}
};
}
return global._MARS_CLIMATE_CONTROLLER;
};
/**
* @param {number} averageTemp Output from calcAverageTemp
@ -172,6 +206,8 @@ TFCEvents.registerClimateModel(event => {
builder.setAirFog((level, pos, calendarTicks) => 0)
builder.setWaterFog((level, pos, calendarTicks) => 0.1)
builder.setWindVector((level, block, calendarTicks) => builder.vector(0.25, 0.1))
const controller = global.getMarsClimateController();
builder.setWindVector(controller.createCallbackForBuilder(builder));
})
})