43 lines
No EOL
1.6 KiB
JavaScript
43 lines
No EOL
1.6 KiB
JavaScript
"use strict";
|
|
|
|
// 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);
|
|
}) |