This commit is contained in:
Pyritie 2025-04-18 11:13:31 +01:00
commit b7223f7a19
11 changed files with 382 additions and 174 deletions

8
.github/README.md vendored
View file

@ -32,7 +32,10 @@
## Survival Modpack as it Should've Been
**TerraFirmaGreg-Modern** is a Forge modpack that redefines Minecraft survival by introducing realistic challenges alongside advanced technological mechanics. In this modpack, you will be put to the task of taking control of untouched wilderness and turning it to an industrial wonderland. Start from humble beginning picking up rocks, and end while traversing interstellar space (coming soon)! The heart of the modpack is formed by two standout mods:
**TerraFirmaGreg-Modern** is a Forge modpack that redefines Minecraft survival by introducing realistic challenges alongside advanced technological mechanics.
In this modpack, you will be put to the task of taking control of untouched wilderness and turning it to an industrial wonderland.
Start from humble beginning picking up rocks, and end while traversing interstellar space (coming soon)!
The heart of the modpack is formed by two standout mods:
- **[TerraFirmaCraft]** - Renowned for its immersive survival mechanics and a unique, challenging approach.
- **[GregTech Modern]** - A pinnacle of technical mods that brings deep, complex machinery and automation into the mix.
@ -41,8 +44,9 @@ In addition to these core mods, TerraFirmaGreg-Modern includes several other com
- **[Applied Energistics]** Cutting-edge storage and automation systems.
- **[Create]** Innovative machinery and kinetic contraptions.
- Several hand-picked TFC and Create addons to provide even more depth.
Several hand-picked TFC and Create addons to provide even more depth.
Many other small mods tie everything together, and the modpack also integrates quests to help you navigate its complex world.
---

View file

@ -1,30 +1,33 @@
name: Project Build
run-name: "Project Build #${{ github.run_number }}"
run-name: "📦 Project Build #${{ github.run_number }}"
on:
push:
branches:
- dev
- main
concurrency:
group: ${{ github.workflow }}
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RELEASE_TYPE: "release"
MINECRAFT_VERSION: "1.20.1"
RELEASE_ON_GITHUB: "true"
RELEASE_ON_CURSEFORGE: "true"
RELEASE_ON_MODRINTH: "false"
DEV_ENVIRONMENT: ${{ github.branch != 'main' }}
jobs:
info:
name: 🖥️ Project Info
runs-on: ubuntu-latest
outputs:
project_version: ${{ steps.project_version.outputs.value }}
project_name: ${{ steps.project_name.outputs.value }}
project_full_name: ${{ steps.project_name.outputs.value }}-${{ steps.project_version.outputs.value }}
project_version: ${{ steps.check.outputs.version }}
project_name: ${{ steps.pakku_info.outputs.name }}
project_full_name: ${{ steps.pakku_info.outputs.name }}-${{ steps.check.outputs.version }}
changelog: ${{ steps.changelog.outputs.description }}
diff: ${{ steps.read_diff.outputs.diff }}
release_type: ${{ env.RELEASE_TYPE }}
minecraft_version: ${{ env.MINECRAFT_VERSION }}
exists: ${{ steps.check_tag.outputs.exists }}
steps:
@ -79,7 +82,7 @@ jobs:
- name: 📁 Check and copy pakku-lock.json from previous tag
id: check_copy_lock
if: steps.check_pakku_lock_prev.outputs.file_found == 'true'
if: steps.check_pakku_lock_prev.outputs.file_found
shell: bash
run: |
git show tags/${{ steps.latest_tag.outputs.tag }}:./pakku-lock.json > ./pakku-lock-prev.json
@ -91,7 +94,7 @@ jobs:
- name: 📦 Download pakku.jar
id: download_pakku
if: steps.check_pakku_lock_prev.outputs.file_found == 'true'
if: steps.check_pakku_lock_prev.outputs.file_found
shell: bash
run: |
curl https://github.com/juraj-hrivnak/pakku/releases/latest/download/pakku.jar -o pakku.jar -L -J
@ -99,7 +102,7 @@ jobs:
- name: 🔄 Run pakku diff
id: pakku_diff
if: steps.check_pakku_lock_prev.outputs.file_found == 'true'
if: steps.check_pakku_lock_prev.outputs.file_found
shell: bash
run: |
java -jar pakku.jar diff -v --markdown PROJECTS_DIFF.md ./pakku-lock-prev.json ./pakku-lock.json
@ -111,7 +114,7 @@ jobs:
- name: 📝 Read PROJECTS_DIFF.md to variable
id: read_diff
if: steps.check_pakku_lock_prev.outputs.file_found == 'true'
if: steps.check_pakku_lock_prev.outputs.file_found
shell: bash
run: |
echo "📝 Reading PROJECTS_DIFF.md to variable..."
@ -121,66 +124,82 @@ jobs:
echo EOF
} >> "$GITHUB_OUTPUT"
echo "✔️ Diff content read to variable"
- name: 📊 Get Project Name
id: project_name
uses: ActionsTools/read-json-action@v1.0.5
with:
file_path: "pakku.json"
prop_path: "name"
- name: 📊 Get Project Version
id: project_version
uses: ActionsTools/read-json-action@v1.0.5
with:
file_path: "pakku.json"
prop_path: "version"
- name: 📊 Get Minecraft Version
id: minecraft_version
- name: 📊 Get Pakku Info
id: pakku_info
uses: ActionsTools/read-json-action@v1.0.5
with:
file_path: "pakku.json"
- name: 📊 Get Pakku-lock Info
id: pakku_lock_info
uses: ActionsTools/read-json-action@v1.0.5
with:
file_path: "pakku-lock.json"
prop_path: "mc_versions"
- name: 🔍 Check if tag exists
uses: mukunku/tag-exists-action@v1.6.0
id: check_tag
with:
tag: ${{ steps.pakku_info.outputs.version }}
- name: 📝 Determine Version
id: determine_version
shell: bash
run: |
if [ ${{ steps.check_tag.outputs.exists }} ]; then
echo "version=unreleased" >> $GITHUB_OUTPUT
else
echo "version=${{ steps.pakku_info.outputs.version }}" >> $GITHUB_OUTPUT
fi
- name: 📄 Changelog Parser
id: changelog
uses: coditory/changelog-parser@v1.0.2
with:
path: CHANGELOG.md
- name: 📈 Upload Diff
id: upload_diff
if: ${{ steps.read_diff.outputs.diff != '' }} && steps.check_pakku_lock_prev.outputs.file_found == 'true'
uses: actions/upload-artifact@v4.6.2
version: ${{ steps.determine_version.outputs.version }}
continue-on-error: true
- name: 🔍 Check if changelog is empty
id: check
shell: bash
run: |
if [ ${{ steps.check_tag.outputs.exists }} ]; then
echo "version=build_#${{ github.run_number }}" >> $GITHUB_OUTPUT
echo "status=Unreleased" >> $GITHUB_OUTPUT
else
echo "status=${{ steps.changelog.outputs.status }}" >> $GITHUB_OUTPUT
echo "version=${{ steps.pakku_info.outputs.version }}" >> $GITHUB_OUTPUT
fi
- name: 📄 Format diff
id: format_diff
if: ${{ steps.read_diff.outputs.diff != '' }}
uses: roamingowl/template-output-with-eta@v1.12.0
with:
name: Mods-diff
path: PROJECTS_DIFF.md
- name: 🔍 Check if tag exists
uses: mukunku/tag-exists-action@v1.6.0
id: check_tag
with:
tag: ${{ steps.project_version.outputs.value }}
template: |
```markdown
${{ steps.read_diff.outputs.diff }}
```
- name: 📝 Generate Github Summary
uses: WcAServices/markdown-template-action@v1.1.1
with:
template: |
📃 **Name**: ${{ steps.project_name.outputs.value }}
📃 **Release**: ${{ steps.project_version.outputs.value }}
📃 **Release Type**: ${{ env.RELEASE_TYPE }}
📃 **Game Version**: ${{ env.MINECRAFT_VERSION }}
📃 **Name**: ${{ steps.pakku_info.outputs.name }}
📃 **Release**: `${{ steps.check.outputs.version }}`
📃 **Release Type**: `${{ steps.check.outputs.status }}`
📃 **Game Version**: `${{ steps.pakku_lock_info.outputs.mc_versions }}`
${{ steps.changelog.outputs.description }}
${{ steps.read_diff.outputs.diff }}
${{ steps.format_diff.outputs.text }}
build-modpack:
name: 📦 Build Modpack
needs: [info]
runs-on: ubuntu-latest
if: needs.info.outputs.exists != 'true'
steps:
- name: Checkout
@ -192,14 +211,16 @@ jobs:
set +e
VERSION=${{ needs.info.outputs.project_version }}
sed -i -e "s/\"version\": \"[0-9.]*\"/\"version\": \"${VERSION}\"/g" pakku.json
sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
# - name: Cache pakku
# uses: actions/cache@v4.1.2
# with:
# path: build/.cache
# key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# restore-keys: ${{ runner.OS }}-pakku-cache-
- name: Cache pakku
uses: actions/cache@v4.2.3
id: cache
with:
path: build/.cache
key: pakku-cache-${{ hashFiles('pakku-lock.json') }}
restore-keys: pakku-cache-
- name: 📦 Export modpack
run: |
@ -234,7 +255,6 @@ jobs:
name: 📦 Build Server
needs: [info]
runs-on: ubuntu-latest
if: needs.info.outputs.exists != 'true'
steps:
- name: Checkout
@ -246,14 +266,16 @@ jobs:
set +e
VERSION=${{ needs.info.outputs.project_version }}
sed -i -e "s/\"version\": \"[0-9.]*\"/\"version\": \"${VERSION}\"/g" pakku.json
sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
# - name: Cache pakku
# uses: actions/cache@v4.1.2
# with:
# path: build/.cache
# key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# restore-keys: ${{ runner.OS }}-pakku-cache-
- name: Cache pakku
uses: actions/cache@v4.2.3
id: cache
with:
path: build/.cache
key: pakku-cache-${{ hashFiles('pakku-lock.json') }}
restore-keys: pakku-cache-
- name: 📦 Export modpack
run: |
@ -277,7 +299,6 @@ jobs:
name: 📦 Build MultiMC
needs: [info]
runs-on: ubuntu-latest
if: needs.info.outputs.exists != 'true'
steps:
- name: Checkout
@ -289,15 +310,17 @@ jobs:
set +e
VERSION=${{ needs.info.outputs.project_version }}
sed -i -e "s/\"version\": \"[0-9.]*\"/\"version\": \"${VERSION}\"/g" pakku.json
sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
sed -i -e "s/DEV/${VERSION}/g" .pakku/multimc-overrides/instance.cfg
# - name: Cache pakku
# uses: actions/cache@v4.1.2
# with:
# path: build/.cache
# key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# restore-keys: ${{ runner.OS }}-pakku-cache-
- name: Cache pakku
uses: actions/cache@v4.2.3
id: cache
with:
path: build/.cache
key: pakku-cache-${{ hashFiles('pakku-lock.json') }}
restore-keys: pakku-cache-
- name: 📦 Export
run: |
@ -327,6 +350,7 @@ jobs:
name: 🚀 Release to GitHub
needs: [info, build-modpack, build-server, build-multimc]
runs-on: ubuntu-latest
if: github.env.RELEASE_ON_GITHUB && !github.env.DEV_ENVIRONMENT && !needs.info.outputs.exists
outputs:
url: ${{ steps.release.outputs.url }}
@ -339,6 +363,24 @@ jobs:
with:
merge-multiple: true
- name: 🔍 Check if artifact exist
id: check_artifact
shell: bash
run: |
if [ ! -f ${{ needs.info.outputs.project_full_name }}-curseforge.zip ]; then
echo '::error::No value found for artifact `curseforge.zip`.' && exit 1
fi
if [ ! -f ${{ needs.info.outputs.project_full_name }}-modrinth.mrpack ]; then
echo '::error::No value found for artifact `modrinth.mrpack`.' && exit 1
fi
if [ ! -f ${{ needs.info.outputs.project_full_name }}-serverpack.zip ]; then
echo '::error::No value found for artifact `serverpack.zip`.' && exit 1
fi
if [ ! -f ${{ needs.info.outputs.project_full_name }}-multimc.zip ]; then
echo '::error::No value found for artifact `multimc.zip`.' && exit 1
fi
echo "✔️ All artifacts found"
- name: 🚫 Сlose fixed in dev
uses: Xikaro/close-issues-based-on-label@master
env:
@ -346,7 +388,7 @@ jobs:
COMMENT: In ${{ needs.info.outputs.project_version }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Format diff
- name: 📄 Format diff
id: format_diff
if: ${{ needs.info.outputs.diff != '' }}
uses: roamingowl/template-output-with-eta@v1.12.0
@ -369,7 +411,7 @@ jobs:
${{ needs.info.outputs.project_full_name }}-curseforge.zip
${{ needs.info.outputs.project_full_name }}-serverpack.zip
${{ needs.info.outputs.project_full_name }}-multimc.zip
prerelease: ${{ needs.info.outputs.release_type != 'release' }}
prerelease: ${{ env.RELEASE_TYPE != 'release' }}
generate_release_notes: true
token: ${{ secrets.GITHUB_TOKEN }}
@ -377,6 +419,7 @@ jobs:
name: 🚀 Release to CurseForge
needs: [info, build-modpack, build-server, release-github]
runs-on: ubuntu-latest
if: github.env.RELEASE_ON_CURSEFORGE && !github.env.DEV_ENVIRONMENT && !needs.info.outputs.exists
outputs:
id: ${{ steps.release.outputs.id }}
@ -388,15 +431,22 @@ jobs:
echo '::error::No value found for secret key `CURSEFORGE_TOKEN`. See https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
fi
- name: 📦 Download artifact curseforge
- name: 📦 Download artifact
uses: actions/download-artifact@v4.2.1
with:
name: ${{ needs.info.outputs.project_full_name }}-curseforge
merge-multiple: true
- name: 📦 Download artifact server
uses: actions/download-artifact@v4.2.1
with:
name: ${{ needs.info.outputs.project_full_name }}-serverpack
- name: 🔍 Check if artifact exist
id: check_artifact
shell: bash
run: |
if [ ! -f ${{ needs.info.outputs.project_full_name }}-curseforge.zip ]; then
echo '::error::No value found for artifact `curseforge.zip`.' && exit 1
fi
if [ ! -f ${{ needs.info.outputs.project_full_name }}-serverpack.zip ]; then
echo '::error::No value found for artifact `serverpack.zip`.' && exit 1
fi
echo "✔️ All artifacts found"
- name: 🚀 Upload Curseforge
id: release
@ -412,47 +462,56 @@ jobs:
${{ needs.info.outputs.changelog }}
${{ needs.info.outputs.diff }}
changelog-format: markdown
game-version: ${{ needs.info.outputs.minecraft_version }}
release-type: ${{ needs.info.outputs.release_type }}
game-version: ${{ env.MINECRAFT_VERSION }}
release-type: ${{ env.RELEASE_TYPE }}
# release-modrinth:
# name: 🚀 Release to Modrinth
# needs: [info, build-modpack, build-server, release-github]
# runs-on: ubuntu-latest
release-modrinth:
name: 🚀 Release to Modrinth
needs: [info, build-modpack, build-server, release-github]
runs-on: ubuntu-latest
if: github.env.RELEASE_ON_MODRINTH && !github.env.DEV_ENVIRONMENT && !needs.info.outputs.exists
outputs:
id: ${{ steps.release.outputs.id }}
# steps:
# - name: 🔒 Check if MODRINTH_API_TOKEN exist
# shell: bash
# run: |
# if [ "${{ secrets.MODRINTH_TOKEN }}" == '' ]; then
# echo '::error::No value found for secret key `MODRINTH_TOKEN`. See https://docs.github.com/en/ actionssecurity-guides/ encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
# fi
steps:
- name: 🔒 Check if MODRINTH_API_TOKEN exist
shell: bash
run: |
if [ "${{ secrets.MODRINTH_TOKEN }}" == '' ]; then
echo '::error::No value found for secret key `MODRINTH_TOKEN`. See https://docs.github.com/en/ actionssecurity-guides/ encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
fi
# - name: 📦 Download artifact modrinth
# uses: actions/download-artifact@v4.2.1
# with:
# name: ${{ needs.info.outputs.project_full_name }}-modrinth
# - name: 📦 Download artifact server
# uses: actions/download-artifact@v4.2.1
# with:
# name: ${{ needs.info.outputs.project_full_name }}-serverpack
# - name: 🚀 Upload Modrinth
# id: release
# uses: Xikaro/upload-curseforge-modpack-action@1.1.1
# with:
# api-token: ${{ secrets.MODRINTH_TOKEN }}
# project-id: ${{ vars.MODRINTH_ID }}
# modpack-path: ${{ needs.info.outputs.project_full_name }}-modrinth.mrpack
# modpack-server-path: ${{ needs.info.outputs.project_full_name }}-serverpack.zip
# changelog: ${{ needs.info.outputs.changelog }}
# changelog-format: markdown
# game-version: ${{ needs.info.outputs.minecraft_version }}
# display-name: ${{ needs.info.outputs.project_full_name }}
# server-display-name: ${{ needs.info.outputs.project_full_name }}-serverpack
# release-type: ${{ needs.info.outputs.release_type }}
- name: 📦 Download artifact
uses: actions/download-artifact@v4.2.1
with:
merge-multiple: true
- name: 🔍 Check if artifact exist
id: check_artifact
shell: bash
run: |
if [ ! -f ${{ needs.info.outputs.project_full_name }}-modrinth.mrpack ]; then
echo '::error::No value found for artifact `modrinth.mrpack`.' && exit 1
fi
if [ ! -f ${{ needs.info.outputs.project_full_name }}-serverpack.zip ]; then
echo '::error::No value found for artifact `serverpack.zip`.' && exit 1
fi
echo "✔️ All artifacts found"
- name: 🚀 Upload Modrinth
id: release
uses: Xikaro/upload-curseforge-modpack-action@1.1.1
with:
api-token: ${{ secrets.MODRINTH_TOKEN }}
project-id: ${{ vars.MODRINTH_ID }}
modpack-path: ${{ needs.info.outputs.project_full_name }}-modrinth.mrpack
modpack-server-path: ${{ needs.info.outputs.project_full_name }}-serverpack.zip
changelog: ${{ needs.info.outputs.changelog }}
changelog-format: markdown
game-version: ${{ env.MINECRAFT_VERSION }}
display-name: ${{ needs.info.outputs.project_full_name }}
server-display-name: ${{ needs.info.outputs.project_full_name }}-serverpack
release-type: ${{ env.RELEASE_TYPE }}
discord-message:
name: 📱 Discord Message
@ -475,8 +534,8 @@ jobs:
content_links_no_embed: .+
content: |
**Release**: `${{ needs.info.outputs.project_version }}`
**Release Type**: `${{ needs.info.outputs.release_type }}`
**Game Version**: `${{ needs.info.outputs.minecraft_version }}`
**Release Type**: `${{ env.RELEASE_TYPE }}`
**Game Version**: `${{ env.MINECRAFT_VERSION }}`
[CurseForge](https://www.curseforge.com/minecraft/modpacks/terrafirmagreg-modern/files/${{ needs.release-curseforge.outputs.id }}) • [GitHub](${{ needs.release-github.outputs.url }}) • [Issues](https://github.com/${{ github.repository }}/issues)
```markdown

View file

@ -1,20 +1,29 @@
# Changelog
## [Unreleased]
## [Unreleased] - 18.04.2025
### Warning for upgrading your world
- This is a major update that changes many things!
- It is safest to create a new instance and copy your world across, instead of trying to update your world in-place.
- Check that everything works before permanently changing over to the new version!
- GregTech has removed its kinetic machines, so they will disappear when upgrading. Please recycle your machines first!
- Several ores and ingots have changed. After upgrading, they will have a "REPLACE ME" texture. Put them in a crafting grid to change to the new version.
- Create mechanisms will stop working and will need to be replaced with "Greate" equivalents. This means that if you have any boilers running off of create THEY MAY EXPLODE!
- Tree tap has been replaced you will need to craft your old taps into the new ones.
- Gregicality Rocketry has been removed and will be replaced with Ad Astra soon. Please recycle whatever you can and make sure you are in the overworld.
### Changes
- Latest version of GregTech! Comes with new textures and a few new features, many bug fixes and much more stability.
- Early game overhaul! You start getting into some automation much earlier and gradually unlock more as you progress, instead of having it all dumped on you after steel.
- New dimension! The Beneath, basically a TFG-ified version of the nether. Stand on overworld bedrock for a bit to start exploring!
- Quest rewrite! The first few quest chapters have been totally remade from the ground up to be more readable, have fewer breaking dependencies, and reflect actual progression. Most of the optional but useful content has been put into its own dedicated section.
- The minimum amount of lava source blocks to be considered infinite has been increased from 1 to 2000. There's many lava lakes underground, and trains are more accessible.
- Many other bug fixes, too many to list!
- Create has changed completely with the addition of "Greate", "VintageImprovements", and "Horse Power".
- New structures have been added to the overworld. Some with loot!
- More cave supports have been added. Including stone, concrete, and steel supports. Higher tier supports can hold a larger area of blocks.
- Medicine had been added and can apply some helpful potion effects or be applied to arrows.
- Wax alternatives have been added, including paraffin wax and tree rosin.
- Planes! Snake-free.
- Many mods have been updated and include new features. Check out the mods list!
- Many other bug fixes, QoL features, mod integration, and recipes tweaks. too many to list!
## [0.7.19] - 25.01.2025
### Changes

View file

@ -89,12 +89,10 @@
subtitle: "{quests.stone_age.find_potable_water.subtitle}"
tasks: [{
icon: "minecraft:water_bucket"
id: "73E3594A5481E63F"
observe_type: 0
timer: 0L
title: "{quests.tasktype.lookat} {quests.stone_age.find_potable_water.task}"
to_observe: "minecraft:water"
type: "observation"
id: "3601D2311BB1383F"
stage: "tfg.stages.quests.drank_fresh_water_with_hand"
title: "{quests.stone_age.find_potable_water.task}"
type: "gamestage"
}]
title: "{quests.stone_age.find_potable_water.title}"
x: 4.5d

View file

@ -2,8 +2,11 @@ Files located at "assets/x/lang" (where x is the modid youre looking to translat
This means that any changes done to the files in "assets/x/lang" WILL BE OVERWRITTEN the next time the tool is ran!
If you wish to properly write localization for an already supported/translated mod:
1. Go to the TerraFirmaGreg-Team/Tools-Modern repo
1. Go to the [Tools-Modern] repo
2. Go to the folder of your mod of choice.
3. Open the Localization folder for your language, these are the actual locales supported by the mod (ie: en_us)
* If youre looking to add a new language, create a new folder with your chosen locale
4. Edit, or add a new JSON file with your language values.
4. Edit, or add a new JSON file with your language values.
<!-- Links: -->
[Tools-Modern]: https://github.com/TerraFirmaGreg-Team/Tools-Modern

View file

@ -1076,8 +1076,8 @@
"quests.stone_age.garlic_bread.task": "1024 slices of Garlic Bread",
"quests.stone_age.find_potable_water.title": "Thirsty?",
"quests.stone_age.find_potable_water.subtitle": "Remember to drink water!",
"quests.stone_age.find_potable_water.desc": "Thirst is represented by the blue bar above your hunger. You can and will die of dehydration if you dont keep your thirst meter filled! The easiest way to have a drink is by drinking from natural ponds in the wild, by right-clicking on them with an empty hand.\n\nYou don't have to worry about purifying water here, though Salt Water will just make you more thirsty.",
"quests.stone_age.find_potable_water.task": "A source of fresh Water",
"quests.stone_age.find_potable_water.desc": "Thirst is represented by the blue bar above your hunger. You can and will die of dehydration if you dont keep your thirst meter filled! The easiest way to have a drink is by drinking from natural ponds in the wild, by right-clicking on them with an empty hand.\nTo complete this quest, you need to drink a Potable source of water, can be regular or river water. You may need to drink multiple times so the quest completes properly\n\nYou don't have to worry about purifying water here, though Salt Water will just make you more thirsty.",
"quests.stone_age.find_potable_water.task": "Drink from a Water Source with your Hand. (Not Salty or Hot)",
"quests.stone_age.hydration.title": "Mechanic: Hydration",
"quests.stone_age.hydration.subtitle": "Yet another bar to keep full...",
"quests.stone_age.hydration.desc": "Water is an important resource, not just for staying hydrated! Setting up a base near a fresh lake or river is recommended, so you have easy access to the stuff. Other items can quench your thirst, such as certain types of food or drinks.\n\nWater won't always be available when you go exploring, however, so here are some ways to carry drinks around with you. Drinking consumes 100mB from the container.",

View file

@ -0,0 +1,41 @@
// Handles the quest for drinking water. The drinking water quest checks if the player has this stage.
ItemEvents.firstRightClicked(evt =>
{
const FORGE_CAPS = "ForgeCaps";
const TFC_PLAYERDATA = "tfc:player_data";
const FOOD = "food";
const THIRST = "thirst";
const PREVIOUS_THIRST = "previous_thirst";
const STAGE = "tfg.stages.quests.drank_fresh_water_with_hand";
const {player, level} = evt;
if(evt.target.block == null)
return;
//We reach for the "food" compound tag, that contains the tfc thirst.
let forgecaps = player.nbt.getCompound(FORGE_CAPS);
let tfc_playerdata = forgecaps.getCompound(TFC_PLAYERDATA);
let food = tfc_playerdata.getCompound(FOOD);
let thirstValue = food.getFloat(THIRST);
//Do we already keep track of the previous thirst value? if not, put it and then return.
let customData = getTFGPersistentDataRoot(player);
let containsPreviousThirst = customData.contains(PREVIOUS_THIRST);
if(!containsPreviousThirst)
{
customData.putFloat(PREVIOUS_THIRST, thirstValue);
return;
}
let previousThirstValue = customData.getFloat(PREVIOUS_THIRST);
//As long as our new thirst is greater than our previous, it means we hydrated ourselves. OFC we need to make sure the block clicked was potable.
let blockID = evt.target.block.id;
let isFreshWater = blockID == "minecraft:water" || blockID == "tfc:fluid/river_water";
if(isFreshWater && thirstValue > previousThirstValue && !player.stages.has(STAGE))
{
player.stages.add(STAGE);
}
//Put it back in.
customData.putFloat(PREVIOUS_THIRST, thirstValue);
})

View file

@ -186,7 +186,7 @@ const registerTFCRecipes = (event) => {
.duration(600)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter('tfg:oops_I_smelted_all_my_kaolin')
event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin')
.itemInputs('5x minecraft:clay_ball', 'tfc:powder/kaolinite')
.itemOutputs('5x tfc:kaolin_clay')
.duration(600)

View file

@ -83,35 +83,49 @@ salvo_event.forEach(salvo_event => {
});
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:absorption_salvo`) return
item.count--
player.addItemCooldown(item, 200)
player.runCommandSilent(`effect give ${username} minecraft:absorption 480 4 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:absorption_salvo`) return
item.count--
player.addItemCooldown(item, 200)
player.runCommandSilent(`effect give ${username} minecraft:absorption 480 4 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:instant_health_salvo`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:instant_health 1 1 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:instant_health_salvo`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:instant_health 1 1 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
// Vase Sounds
global.MINECRAFT_DYE_NAMES.forEach(color => {
BlockEvents.rightClicked(event => {
const {block,server,player,player:{x,y,z,username}} = event
if (block.id != `tfg:decorative_vase/${color}`) {return}{
server.runCommandSilent(`playsound tfc:block.quern.drag block ${username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
}})
});
global.MINECRAFT_DYE_NAMES.forEach(color => {
BlockEvents.rightClicked(event => {
const {block,server,player,player:{x,y,z,username}} = event
if (block.id != 'tfg:decorative_vase') {return}{
if (block.id != `tfg:decorative_vase/${color}`) {return}{
server.runCommandSilent(`playsound tfc:block.quern.drag block ${username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
}});
}})
});
BlockEvents.rightClicked(event => {
const {block,server,player,player:{x,y,z,username}} = 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`)
}});
/**
*
* @param {Internal.Player} player
* @returns {Internal.CompoundTag}
*/
function getTFGPersistentDataRoot(player)
{
if(!player.persistentData.contains("tfg:custom_data"))
{
player.persistentData.put("tfg:custom_data", {});
}
return player.persistentData.getCompound("tfg:custom_data")
}

View file

@ -2317,6 +2317,67 @@
}
]
},
{
"pakku_id": "M4PNTNZvxOW9zDWV",
"type": "MOD",
"side": "BOTH",
"slug": {
"curseforge": "chalk",
"modrinth": "chalk-mod"
},
"name": {
"curseforge": "Chalk",
"modrinth": "Chalk"
},
"id": {
"curseforge": "533748",
"modrinth": "YWGP4Y1d"
},
"files": [
{
"type": "modrinth",
"file_name": "chalk-1.20.1-1.6.5.jar",
"mc_versions": [
"1.20.1"
],
"loaders": [
"forge"
],
"release_type": "release",
"url": "https://cdn.modrinth.com/data/YWGP4Y1d/versions/HA8yrJaB/chalk-1.20.1-1.6.5.jar",
"id": "HA8yrJaB",
"parent_id": "YWGP4Y1d",
"hashes": {
"sha512": "49220d73636378eae9f55d3dbeedaddcc2afa8949dc656d1ea2c64625aeda210bee3d28e7f704d0ec652020173025235a1d6fd0ef94797409c08defac622fe57",
"sha1": "e4dee75dfe5f8ca8ec21f89ff877d3564bd5c9df"
},
"required_dependencies": [],
"size": 321480,
"date_published": "2024-12-10T13:00:12.908950Z"
},
{
"type": "curseforge",
"file_name": "chalk-1.20.1-1.6.5.jar",
"mc_versions": [
"1.20.1"
],
"loaders": [
"forge"
],
"release_type": "release",
"url": "https://edge.forgecdn.net/files/5979/807/chalk-1.20.1-1.6.5.jar",
"id": "5979807",
"parent_id": "533748",
"hashes": {
"sha1": "e4dee75dfe5f8ca8ec21f89ff877d3564bd5c9df",
"md5": "cd1b8ce2f43d8dd29935778f3575d4f0"
},
"required_dependencies": [],
"size": 321480,
"date_published": "2024-12-10T12:59:38.420Z"
}
]
},
{
"pakku_id": "uNx0hefaZ7i6Gtgo",
"type": "MOD",
@ -4540,7 +4601,7 @@
"uCACXyPoJ4iKQzNG"
],
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "enderman-overhaul",
"modrinth": "enderman-overhaul"
@ -6266,7 +6327,7 @@
{
"pakku_id": "uCACXyPoJ4iKQzNG",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "geckolib",
"modrinth": "geckolib"
@ -6488,27 +6549,43 @@
]
},
{
"pakku_id": "j6fA0JbUIMVAq3q2",
"pakku_id": "JYHQVYwIGQYRij0G",
"type": "MOD",
"side": "BOTH",
"slug": {
"github": "GreateBeyondTheHorizon/Greate"
"modrinth": "greate"
},
"name": {
"github": "Greate"
"modrinth": "Greate"
},
"id": {
"github": "673422318"
"modrinth": "8wDcQuht"
},
"files": [
{
"type": "github",
"type": "modrinth",
"file_name": "greate-0.0.38.jar",
"release_type": "release",
"url": "https://github.com/GreateBeyondTheHorizon/Greate/releases/download/0.0.38/greate-0.0.38.jar",
"id": "227638684",
"parent_id": "673422318",
"mc_versions": [
"1.20.1"
],
"loaders": [
"forge",
"neoforge"
],
"release_type": "alpha",
"url": "https://cdn.modrinth.com/data/8wDcQuht/versions/jfXaHhi2/greate-0.0.38.jar",
"id": "jfXaHhi2",
"parent_id": "8wDcQuht",
"hashes": {
"sha512": "53a5d9985b31660cac20a708ceb13b1855ae5c3f948c9adf242c37fa6f19b9f03b51a3f566696a922039ecad2a7d6afce962f40f1bae181032d972aca0779d44",
"sha1": "4b3cde954b102e5f5c4b940a42220c2979a5eb70"
},
"required_dependencies": [
"7tG215v7",
"LNytGWDc"
],
"size": 1514248,
"date_published": "2025-02-09T16:31:16Z"
"date_published": "2025-02-09T16:31:14.824605Z"
}
]
},
@ -10363,7 +10440,7 @@
{
"pakku_id": "nZjo5dxgrxl4zm2b",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "particular-reforged",
"modrinth": "particular-reforged"
@ -10726,7 +10803,7 @@
{
"pakku_id": "pITFJNUBx59dBitK",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "primitive-creatures"
},
@ -11032,7 +11109,7 @@
{
"pakku_id": "J5CyvX6hIaMAyzVK",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "resourceful-config",
"modrinth": "resourceful-config"
@ -11093,7 +11170,7 @@
{
"pakku_id": "cxgo5IyMJwtpohRH",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "resourceful-lib",
"modrinth": "resourceful-lib"
@ -12994,7 +13071,7 @@
{
"pakku_id": "xiwzCRvkCtCl2GLq",
"type": "MOD",
"side": "CLIENT",
"side": "BOTH",
"slug": {
"curseforge": "tfcgenviewer",
"modrinth": "tfcgenviewer"

View file

@ -190,6 +190,9 @@
"dynamiclights-reforged": {
"side": "CLIENT"
},
"rainboows": {
"side": "CLIENT"
},
"resourceful-config": {
"side": "BOTH"
},
@ -214,7 +217,7 @@
"tfc-hot-or-not": {
"side": "BOTH"
},
"particular-reforged":{
"particular-reforged": {
"side": "BOTH"
}
}