Skip to content

Commit

Permalink
Fixed hydration not applying correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
Adubbz committed Jan 4, 2024
1 parent a8093f1 commit fc37fb6
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 8 deletions.
7 changes: 7 additions & 0 deletions common/src/main/java/toughasnails/api/thirst/IThirst.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@ public interface IThirst
*/
void addExhaustion(float exhaustion);

/**
* Consume a drink with the given thirst and hydration modifier.
* @param thirst amount to add to the thirst level.
* @param hydrationModifier modifier used to determine the amount of hydration to add.
*/
void drink(int thirst, float hydrationModifier);

/**
* Checks whether the player is thirsty or not.
* @return whether the player is thirsty.
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/java/toughasnails/config/ThirstConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void load()
enableThirst = add("toggles.enable_thirst", true, "Enable or disable thirst.");
enableHandDrinking = add("toggles.enable_hand_drinking", false, "Enable or disable hand drinking.");
thirstPreventSprint = add("toggles.thirst_prevent_sprint", true, "Prevent sprinting when thirsty.");
thirstPreventHealthRegen = add("toggles.thirst_prevent_health_regen", false, "Prevent health regeneration when thirsty.");
thirstPreventHealthRegen = add("toggles.thirst_prevent_health_regen", true, "Prevent health regeneration when thirsty.");

// General options
thirstExhaustionThreshold = addNumber("general.exhaustion_threshold", 8.0D, 0.0D, Double.MAX_VALUE, "The threshold at which exhaustion causes a reduction in hydration and the thirst bar.");
Expand Down
1 change: 1 addition & 0 deletions common/src/main/java/toughasnails/core/ToughAsNails.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ private static void addHandlers()
EventManager.addListener(ThirstHandler::onChangeDimension);
EventManager.addListener(ThirstHandler::onItemUseFinish);
EventManager.addListener(ThirstHandler::onPlayerUseItem);
EventManager.addListener(ThirstHandler::onUseBlock);

if (Environment.isClient())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ public void handle(DrinkInWorldPacket packet, Context context)
// Whilst we already checked on the client, check again to be sure
if (level.mayInteract(player, packet.pos) && level.getFluidState(packet.pos).is(FluidTags.WATER))
{
thirst.addThirst(ModConfig.thirst.handDrinkingThirst);
thirst.addHydration((float)ModConfig.thirst.handDrinkingHydration);
thirst.drink(ModConfig.thirst.handDrinkingThirst, (float)ModConfig.thirst.handDrinkingHydration);

Holder<Biome> biome = level.getBiome(packet.pos);

Expand Down
7 changes: 7 additions & 0 deletions common/src/main/java/toughasnails/thirst/ThirstData.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,13 @@ public void addExhaustion(float exhaustion)
this.exhaustionLevel += exhaustion;
}

@Override
public void drink(int thirst, float hydrationModifier)
{
this.thirstLevel = Math.min(thirst + this.thirstLevel, 20);
this.hydrationLevel = Math.min(this.hydrationLevel + (float)thirst * hydrationModifier * 2.0F, (float)this.thirstLevel);
}

@Override
public boolean isThirsty()
{
Expand Down
13 changes: 9 additions & 4 deletions common/src/main/java/toughasnails/thirst/ThirstHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import toughasnails.api.temperature.TemperatureHelper;
import toughasnails.api.thirst.IThirst;
import toughasnails.api.thirst.ThirstHelper;
import toughasnails.core.ToughAsNails;
import toughasnails.init.ModConfig;
import toughasnails.init.ModPackets;
import toughasnails.init.ModTags;
Expand Down Expand Up @@ -101,8 +102,6 @@ else if (difficulty != Difficulty.PEACEFUL)
thirst.setThirst(thirst.getThirst() + 1);
}
}


}

public static void onChangeDimension(PlayerEvent.ChangeDimension event)
Expand Down Expand Up @@ -158,8 +157,8 @@ public static void onItemUseFinish(LivingEntityUseItemEvent.Finish event)

///////////////////

thirst.addThirst(drink_thirst);
thirst.addHydration(drink_hydration);
// Based on FoodData's eat
thirst.drink(drink_thirst, drink_hydration);

if (player.level().random.nextFloat() < drink_poison_chance)
{
Expand Down Expand Up @@ -224,6 +223,12 @@ else if (biome.is(ModTags.Biomes.PURIFIED_WATER_BIOMES))
private static final int IN_WORLD_DRINK_COOLDOWN = 3 * 20;
private static int inWorldDrinkTimer = 0;

public static void onUseBlock(PlayerInteractEvent.UseBlock event)
{
if (canHandDrink() && canHandDrinkInWorld(event.getPlayer(), event.getHand()))
tryDrinkWaterInWorld(event.getPlayer());
}

public static void onUseEmpty(PlayerInteractEvent.UseEmpty event)
{
if (canHandDrink() && canHandDrinkInWorld(event.getPlayer(), event.getHand()))
Expand Down
1 change: 1 addition & 0 deletions common/src/main/java/toughasnails/thirst/ThirstHooks.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import toughasnails.api.damagesource.TANDamageTypes;
import toughasnails.api.thirst.IThirst;
import toughasnails.api.thirst.ThirstHelper;
import toughasnails.core.ToughAsNails;
import toughasnails.init.ModConfig;

public class ThirstHooks
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,5 @@ org.gradle.daemon=false

# Dependencies
nightconfig_version=3.6.7
glitchcore_version=1.0.0.31
glitchcore_version=1.0.0.33
serene_seasons_version=9.3.0.0

0 comments on commit fc37fb6

Please sign in to comment.