Fixes and features (#987)

* - Fixed hide duping recipes.
- Added quest book and field guide instances for fishing nets.
- Fixed rebar support recipe crash.
- Fixed red steel flask dupe.
- Fixed red alloy recipe inconsistency.

* - Fixed blue steel backpack block lang

* - Added max vessel fluid warning to small vessels.

* - Moved red steel flask recipe

* - Fixed fishing nets event function

* Update queststfc_tips.snbt

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>

* Update en_us.json

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>

* - Added item to summon armor stands with arms

* - Added recipes to empty vessels and molds

* - Added recipes for extracting/ forming magma blocks.

* - Added recipes for extracting/ forming magma blocks.

* - Nerfed steel support recipe output.

---------

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
This commit is contained in:
Redeix 2025-05-12 06:29:10 -05:00 committed by GitHub
parent 3b9c6e32a6
commit cf54f584b4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 148 additions and 55 deletions

View file

@ -16,6 +16,11 @@
- Fixed assembler clay recipes so they output the correct amount (Pyritie)
- Quest fixes/tweaks (Pyritie)
- Added aluminium, stainless steel, and titanium millstones (Pyritie)
- Fixed fishing nets behavior. (Redeix)
- Added item to summon armor stands with arms. (Redeix)
- Added recipes for emptying vessels and molds. (Redeix)
- Added recipes for extracting/ forming magma blocks. (Redeix)
- Nerfed steel support recipe output. (Redeix)
## [0.9.5] - 08.05.2025
### Changes

View file

@ -1,6 +1,5 @@
{
"__COMMENT__": "This file was auto generated by the LanguageMerger, read the file \".README IF TRANSLATING\" found in \"minecraft/kubejs\" for more information.",
"block.create.netherite_backtank": "Blue Steel Backtank",
"block.create.dark_oak_window": "Hickory Window",
"block.create.dark_oak_window_pane": "Hickory Window Pane",
"block.create.andesite_bars": "Metal Bars",
@ -69,6 +68,7 @@
"block.create.small_granite_brick_wall": "Small Chert Brick Wall",
"block.create.layered_granite": "Layered Chert",
"block.create.granite_pillar": "Chert Pillar",
"block.create.netherite_backtank": "Blue Steel Backtank",
"item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Blue Steel Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in a _Blue Steel Diving Equipment_, too.",
"item.create.netherite_backtank": "Blue Steel Backtank",
"item.create.netherite_diving_helmet": "Blue Steel Diving Helmet",
@ -89,4 +89,4 @@
"create.ponder.brass_funnel.text_1": "Metal Funnels can only ever extract single items.",
"create.ponder.cogwheel_casing.text_1": "Brass or Metal Casing can be used to decorate Cogwheels",
"create.ponder.shaft_casing.text_1": "Brass or Metal Casing can be used to decorate Shafts"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

View file

@ -117,6 +117,20 @@ BlockEvents.rightClicked(event => {
if (block.id != 'tfg:decorative_vase') {return}{
server.runCommandSilent(`playsound tfc:block.quern.drag block ${username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
}});
//#endregion
BlockEvents.rightClicked(event=>{
let item = event.item
if(item.id != 'tfg:armor_stand_arms') return
let mob = event.block[event.facing].createEntity('minecraft:armor_stand')
mob.mergeNbt('{ShowArms:1b}')
mob.setPos(mob.x + 0.5, mob.y, mob.z + 0.5)
mob.setYaw(event.player.yaw + 180)
mob.spawn()
if (event.player.isCreative() == false){
item.shrink(1)
}
})
/**
*
@ -131,7 +145,6 @@ function getTFGPersistentDataRoot(player)
}
return player.persistentData.getCompound("tfg:custom_data")
}
//#endregion
//#region Fishing Net
const fish = [
@ -153,16 +166,70 @@ function getTFGPersistentDataRoot(player)
'crayfish'
];
//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier.
const tiers = [
'wood',
'brass',
'rose_gold',
'sterling_silver',
'invar',
'tin_alloy',
'cupronickel',
'magnalium'
];
//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item.
fish.forEach(fish => {
ItemEvents.entityInteracted('#forge:tools/fishing_nets', event => {
tiers.forEach(tier => {
fish.forEach(fish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const {item, player, server, target} = event;
if (target.type != `tfc:${fish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give(`tfc:food/${fish}`)
player.swing()
if (player.isCreative() == false){
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Shellfish Exception
shellfish.forEach(shellfish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const {item, player, server, target} = event;
if (target.type != `tfc:${shellfish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('tfc:food/shellfish')
player.swing()
if (player.isCreative() == false){
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Pufferfish Exception
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const {item, player, server, target} = event;
if (target.type != `tfc:${fish}`) return
if (target.type != 'tfc:pufferfish') return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give(`tfc:food/${fish}`)
event.player.give('minecraft:pufferfish')
player.swing()
if (player.isCreative() == false){
item.damageValue++
@ -173,44 +240,4 @@ function getTFGPersistentDataRoot(player)
}
})
})
//Shellfish Exception
shellfish.forEach(shellfish => {
ItemEvents.entityInteracted('#forge:tools/fishing_nets', event => {
const {item, player, server, target} = event;
if (target.type != `tfc:${shellfish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('tfc:food/shellfish')
player.swing()
if (player.isCreative() == false){
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Pufferfish Exception
ItemEvents.entityInteracted('#forge:tools/fishing_nets', event => {
const {item, player, server, target} = event;
if (target.type != 'tfc:pufferfish') return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('minecraft:pufferfish')
player.swing()
if (player.isCreative() == false){
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
//#endregion

View file

@ -389,4 +389,12 @@ function registerTFGMiscellaneousRecipes(event) {
.dimension('minecraft:the_nether')
.duration(200)
.EUt(16)
event.shapeless('1x tfg:armor_stand_arms', [
'minecraft:armor_stand'
]).id(`tfg:shapeless/armor_stand_arms`)
event.shapeless('1x minecraft:armor_stand', [
'tfg:armor_stand_arms'
]).id(`tfg:shapeless/armor_stand`)
}

View file

@ -273,4 +273,20 @@ function registerTFGMoldRecipes(event) {
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
})
//craft mold to scrub nbt
const molds = Ingredient.of('#tfc:fired_molds').itemIds;
molds.forEach(mold => {
event.shapeless(Item.of(mold), [mold])
.id(`tfg:shapeless/mold_cleaning/${mold.replace(":", "/")}`);
});
//craft vessel to scrub nbt
const vessels = Ingredient.of('#tfc:fired_vessels').itemIds;
vessels.forEach(vessel => {
event.shapeless(Item.of(vessel), [vessel])
.id(`tfg:shapeless/vessel_cleaning/${vessel.replace(":", "/")}`);
});
}

View file

@ -256,4 +256,38 @@ function registerTFGRockRecipes(event) {
})
// #endregion
//#region Magma Blocks
event.remove({id: 'gtceu:compressor/magma_block'})
event.remove({id: 'greate:splashing/obsidian'})
//magma block + stone group
const magma_blocks = [
{magma: 'minecraft:magma_block', rock: 'minecraft:blackstone'},
{magma: 'tfc:rock/magma/granite', rock: 'tfc:rock/raw/granite'},
{magma: 'tfc:rock/magma/diorite', rock: 'tfc:rock/raw/diorite'},
{magma: 'tfc:rock/magma/gabbro', rock: 'tfc:rock/raw/gabbro'},
{magma: 'tfc:rock/magma/rhyolite', rock: 'tfc:rock/raw/rhyolite'},
{magma: 'tfc:rock/magma/basalt', rock: 'tfc:rock/raw/basalt'},
{magma: 'tfc:rock/magma/andesite', rock: 'tfc:rock/raw/andesite'},
{magma: 'tfc:rock/magma/dacite', rock: 'tfc:rock/raw/dacite'}
];
magma_blocks.forEach(block => {
event.recipes.gtceu.fluid_solidifier(`tfg:gtceu/fluid_solidifier/${block.magma}`.replace(/:/g, '/'))
.itemInputs(`1x ${block.rock}`)
.inputFluids(Fluid.of('minecraft:lava', 250))
.itemOutputs(`1x ${block.magma}`)
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:gtceu/extractor/${block.magma}`.replace(/:/g, "/"))
.itemInputs(`1x ${block.magma}`)
.outputFluids(Fluid.of('minecraft:lava', 250))
.itemOutputs(`1x ${block.rock}`)
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
})
//#endregion
}

View file

@ -185,7 +185,7 @@ function registerTFGSupportRecipes(event) {
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.anvil(
'4x tfg:steel_support',
'1x tfg:steel_support',
'#forge:double_ingots/steel',
[
'upset_last',
@ -196,7 +196,7 @@ function registerTFGSupportRecipes(event) {
event.recipes.gtceu.assembler('tfg:gtceu/assembler/steel_support')
.circuit(4)
.itemOutputs('8x tfg:steel_support')
.itemOutputs('4x tfg:steel_support')
.itemInputs('2x #forge:double_ingots/steel')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
@ -204,25 +204,25 @@ function registerTFGSupportRecipes(event) {
event.recipes.gtceu.macerator('tfg:macerator/recycling/steel_support')
.itemInputs('tfg:steel_support')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Steel, 1)
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Steel, 2)
)
.duration(GTMaterials.Steel.getMass() * 1)
.duration(GTMaterials.Steel.getMass() * 2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/steel_support')
.itemInputs('tfg:steel_support')
.itemOutputs(
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Steel, 2)
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Steel, 4)
)
.duration(GTMaterials.Steel.getMass() * 1)
.duration(GTMaterials.Steel.getMass() * 4)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.extractor('tfg:extractor/recycling/steel_support')
.itemInputs('tfg:steel_support')
.outputFluids(Fluid.of('gtceu:steel', 36))
.duration(GTMaterials.Steel.getMass() * 1)
.outputFluids(Fluid.of('gtceu:steel', 64))
.duration(GTMaterials.Steel.getMass() * 2)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}

View file

@ -161,6 +161,9 @@ const registerTFGItems = (event) => {
event.create('tfg:fletching')
.translationKey('item.tfg.fletching')
event.create('tfg:armor_stand_arms')
.translationKey('item.tfg.armor_stand_arms')
event.create('tfg:fishing_net/wood')
.translationKey('item.tfg.fishing_net.wood')
.parentModel('tfg:item/fishing_nets/wood_fishing_net')