mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-06-02 21:49:42 +08:00
Stamina Manager
UpdateStamina
// will use consumption.consumptionType as reason
public int updateStaminaRelative(GameSession session, Consumption consumption);
public int updateStaminaAbsolute(GameSession session, String reason, int newStamina)
Pause and Resume
public void startSustainedStaminaHandler()
public void stopSustainedStaminaHandler()
Stamina change listeners and intercepting
BeforeUpdateStaminaListener
import emu.grasscutter.game.managers.StaminaManager.BeforeUpdateStaminaListener;
// Listener sample: plugin disable CLIMB_JUMP stamina cost.
private class MyClass implements BeforeUpdateStaminaListener {
// Make your class implement the listener, and pass in your class as a listener.
public MyClass() {
getStaminaManager().registerBeforeUpdateStaminaListener("myClass", this);
}
@Override
public boolean onBeforeUpdateStamina(String reason, int newStamina) {
// do not intercept this update
return false;
}
@Override
public boolean onBeforeUpdateStamina(String reason, Consumption consumption) {
// Try to intercept if this update is CLIMB_JUMP
if (consumption.consumptionType == ConsumptionType.CLIMB_JUMP) {
return true;
}
// If it is not CLIMB_JUMP, do not intercept.
return false;
}
}
AfterUpdateStaminaListener
import emu.grasscutter.game.managers.StaminaManager.AfterUpdateStaminaListener;
// Listener sample: plugin listens for changes already made.
private class MyClass implements AfterUpdateStaminaListener {
// Make your class implement the listener, and pass in your class as a listener.
public MyClass() {
registerAfterUpdateStaminaListener("myClass", this);
}
@Override
public void onAfterUpdateStamina(String reason, int newStamina) {
// ...
}
}