Помогите написать условие, что бы при удержании Ctr или при двойном нажатии ww игрок не ускорялся, когда стамина = 0.
Так же не сохраняется текущее значение стамины, при новом входе в игру стамина полная.
Так же не сохраняется текущее значение стамины, при новом входе в игру стамина полная.
StaminaHandler:
@Mod.EventBusSubscriber(modid = LegacyMod.MOD_ID)
public class StaminaHandler {
//Возвращает макс. значение стамины.
public static float getStaminaMax(PlayerEntity player) {
return (float) player.getAttribute(LegacyAttributes.MAX_STAMINA).getValue();
}
//Возвращает текущее значение стамины.
public static float getStamina(PlayerEntity player) {
return player.getDataManager().get(LegacyAttributes.STAMINA);
}
//Устанавливает текущее значение стамины.
public static void setStamina(PlayerEntity player, float value) {
player.getDataManager().set(LegacyAttributes.STAMINA, MathHelper.clamp(value, 0.0F, getStaminaMax(player)));
}
//Сбрасывает значение стамины.
public static void refillStamina(PlayerEntity player) {
player.getDataManager().set(LegacyAttributes.STAMINA, getStaminaMax(player));
}
//востонавление стамины на указанную величину.
public static void regenStamina(PlayerEntity player, float value) {
player.getDataManager().set(LegacyAttributes.STAMINA, MathHelper.clamp(getStamina(player) + value, 0.0F, getStaminaMax(player)));
}
//Уменьшает стамины на указанную величину.
public static void decreaseStamina(PlayerEntity player, float value) {
player.getDataManager().set(LegacyAttributes.STAMINA, MathHelper.clamp(getStamina(player) - value, 0.0F, getStaminaMax(player)));
}
//Сохранение значения стамины в NBT игрока
private static void saveStaminaToNBT(PlayerEntity player) {
player.getPersistentData().putFloat(LegacyMod.MOD_ID + ":stamina", getStamina(player));
}
//Загрузка стамины из NBT.
private static float loadStaminaFromNBT(PlayerEntity player) {
return player.getPersistentData().hasUniqueId(LegacyMod.MOD_ID + ":stamina") ? player.getPersistentData().getFloat(LegacyMod.MOD_ID + ":stamina") : getStaminaMax(player);
}
//Загрузка значения стамины из NBT при входе на сервер
@SubscribeEvent
public static void onPlayerLogIn(PlayerLoggedInEvent event) {
setStamina(event.getPlayer(), loadStaminaFromNBT(event.getPlayer()));
}
//Сохранение значения стамины в NBT игрока при выходе.
@SubscribeEvent
public static void onPlayerLogOut(PlayerLoggedOutEvent event) {
saveStaminaToNBT(event.getPlayer());
}
@SubscribeEvent
public static void onPlayerUpdate(LivingUpdateEvent event) {
if (event.getEntityLiving() instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) event.getEntityLiving();
if (!player.world.isRemote) {
//Условие
if(player.isSprinting()) {
decreaseStamina(player, 1.0F);
}
else if (getStamina(player) == 0.0F) {
player.setSprinting(false);
}
}
}
}
}
Последнее редактирование: