Following my old post (which I fixed the problem lol) I am making a mod for devil fruits and basically how it is when you eat the fruit it makes it so that you can't swim in water (and you get a power which will be implemented later). Also you can't have eaten a devil fruit and eat another otherwise you will die. Anyway, I am implementing the part where you can't swim, and I keep running into this logical error, here is my code (without imports):
@Mod.EventBusSubscriber(modid = DevilFruitMod.MOD_ID)
public class PlayerEventHandler {
@SubscribeEvent
public static void onLivingUpdate(TickEvent.@NotNull PlayerTickEvent event) {
Player player = event.player;
if (player.getPersistentData().getBoolean("hasConsumedDevilFruit")) {
DevilFruitMod.LOGGER.info(player.getName().getString() + " has consumed a Devil Fruit and is in water: " + player.isInWater());
if (player.isInWater()) {
player.setDeltaMovement(0, player.getDeltaMovement().y - 0.1, 0);
DevilFruitMod.LOGGER.info("Setting downward movement for " + player.getName().getString());
}
}
}
}
Basically what is happening is that if I re log back in after have eaten a devil fruit already, it does not set the players delta movement correctly in water (its supposed to make it so that they can barely move and will drown in deeper waters), however as a debugging method, every tick it DOES print out that they have eaten a devil fruit meaning that it runs through these if statements. If I give myself another devil fruit eat it, die, and eat another, then only it makes it so that I can't swim. Can someone help me out? I hope I explained this well lol.