Skip to content

Commit

Permalink
fix leap
Browse files Browse the repository at this point in the history
  • Loading branch information
Cheaterpaul committed May 23, 2024
1 parent 392b2d5 commit 151e7b9
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void handleInputEvent(InputEvent event) {
Optional<KeyMapping> keyOpt = getPressedKeyBinding();
keyOpt.ifPresent(key -> {
LocalPlayer player = Minecraft.getInstance().player;
if (key == LEAP) {
if (key == LEAP && Minecraft.getInstance().options.keyJump.isDown()) {
if (Helper.isWerewolf(player)) {
WerewolfPlayer werewolf = WerewolfPlayer.get(player);
if (!werewolf.getActionHandler().isActionOnCooldown(ModActions.LEAP.get()) && werewolf.getForm().isTransformed()) {
Expand All @@ -85,10 +85,10 @@ public void handleInputEvent(InputEvent event) {
}

public Optional<KeyMapping> getPressedKeyBinding() {
if (LEAP.consumeClick()) {
return Optional.of(LEAP);
} else if (BITE.consumeClick()) {
if (BITE.consumeClick()) {
return Optional.of(BITE);
} else if (LEAP.isDown()) {
return Optional.of(LEAP);
}
return Optional.empty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@
import net.neoforged.neoforge.event.entity.EntityEvent;
import net.neoforged.neoforge.event.entity.EntityMountEvent;
import net.neoforged.neoforge.event.entity.living.*;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
import net.neoforged.neoforge.event.entity.player.PlayerWakeUpEvent;
import net.neoforged.neoforge.event.entity.player.SleepingTimeCheckEvent;
import net.neoforged.neoforge.event.entity.player.*;

import java.util.stream.StreamSupport;

Expand All @@ -65,6 +62,16 @@ public void onKilled(LivingDeathEvent event) {
}
}

@SubscribeEvent
public void onFall(PlayerFlyableFallEvent event) {
if (Helper.isWerewolf(event.getEntity())) {
WerewolfPlayer werewolf = WerewolfPlayer.get( event.getEntity());
if (werewolf.getSpecialAttributes().leap) {
((ActionHandler<IWerewolfPlayer>) werewolf.getActionHandler()).deactivateAction(ModActions.LEAP.get(), false, true);
}
}
}

@SubscribeEvent
public void onFall(LivingFallEvent event) {
if (event.getEntity() instanceof Player && Helper.isWerewolf(((Player) event.getEntity()))) {
Expand All @@ -74,7 +81,7 @@ public void onFall(LivingFallEvent event) {
event.setDamageMultiplier(event.getDamageMultiplier() * 0.8f);
}
if (werewolf.getSpecialAttributes().leap) {
werewolf.getActionHandler().toggleAction(ModActions.LEAP.get(), new ActionHandler.ActivationContext());
((ActionHandler<IWerewolfPlayer>) werewolf.getActionHandler()).deactivateAction(ModActions.LEAP.get(), false, true);
}

if (werewolf.getForm().isTransformed() && werewolf.getSkillHandler().isSkillEnabled(ModSkills.JUMP.get())) {
Expand All @@ -95,27 +102,24 @@ public void onEquipmentChange(LivingEquipmentChangeEvent event) {
public void onJump(LivingEvent.LivingJumpEvent event) {
if (event.getEntity() instanceof Player) {
if (Helper.isWerewolf(((Player) event.getEntity()))) {
WerewolfPlayer werewolf = WerewolfPlayer.get(((Player) event.getEntity()));
LivingEntity entity = event.getEntity();
WerewolfPlayer werewolf = WerewolfPlayer.get(((Player) entity));
if (werewolf.getSkillHandler().isSkillEnabled(ModSkills.WOLF_PAWN.get())) {
Vec3 motion = event.getEntity().getDeltaMovement().multiply(1.1, 1.2, 1.1);
event.getEntity().setDeltaMovement(motion);
Vec3 motion = entity.getDeltaMovement().multiply(1.1, 1.2, 1.1);
entity.setDeltaMovement(motion);
}

//unnecessary leap attribute because LivingFallEvent is not called for creative player
if (werewolf.getActionHandler().isActionActive(ModActions.LEAP.get())) {
if (werewolf.getSpecialAttributes().leap) {
werewolf.getActionHandler().toggleAction(ModActions.LEAP.get(), new ActionHandler.ActivationContext());
} else {
if (!werewolf.getSpecialAttributes().leap) {
werewolf.getSpecialAttributes().leap = true;
Vec3 vector3d = event.getEntity().getDeltaMovement();
event.getEntity().setDeltaMovement(vector3d.x, vector3d.y + (((LivingEntityAccessor) event.getEntity()).invokeGetJumpPower_werewolves() * 0.3), vector3d.z);
Vec3 viewVector = entity.getViewVector(0);
entity.addDeltaMovement(new Vec3(viewVector.x, ((LivingEntityAccessor) entity).invokeGetJumpPower_werewolves() * 0.5, viewVector.z).multiply(0.8,0.8,0.8));
}
} else {
werewolf.getSpecialAttributes().leap = false;
}

if (werewolf.getForm().isTransformed() && werewolf.getSkillHandler().isSkillEnabled(ModSkills.JUMP.get())) {
event.getEntity().setDeltaMovement(event.getEntity().getDeltaMovement().add(0, 0.5 * 0.1,0));
entity.addDeltaMovement(new Vec3(0, 0.5 * 0.1,0));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import de.teamlapen.werewolves.config.WerewolvesConfig;
import de.teamlapen.werewolves.core.ModRefinements;
import de.teamlapen.werewolves.entities.player.werewolf.WerewolfPlayer;
import de.teamlapen.werewolves.mixin.LivingEntityAccessor;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;

public class LeapAction extends DefaultWerewolfAction implements ILastingAction<IWerewolfPlayer>, IActionCooldownMenu {

Expand All @@ -17,8 +19,8 @@ public boolean isEnabled() {

@Override
protected boolean activate(IWerewolfPlayer iWerewolfPlayer, ActivationContext context) {
((WerewolfPlayer) iWerewolfPlayer).getSpecialAttributes().leap = false;
iWerewolfPlayer.asEntity().getAbilities().setFlyingSpeed(iWerewolfPlayer.asEntity().getAbilities().getFlyingSpeed() + 0.05F);
Player player = iWerewolfPlayer.asEntity();
player.getAbilities().setFlyingSpeed(player.getAbilities().getFlyingSpeed() + 0.05F);
return true;
}

Expand All @@ -43,6 +45,7 @@ public void onActivatedClient(IWerewolfPlayer iWerewolfPlayer) {

@Override
public void onDeactivated(IWerewolfPlayer iWerewolfPlayer) {
((WerewolfPlayer) iWerewolfPlayer).getSpecialAttributes().leap = false;
iWerewolfPlayer.asEntity().getAbilities().setFlyingSpeed(iWerewolfPlayer.asEntity().getAbilities().getFlyingSpeed() - 0.05F);
}

Expand Down

0 comments on commit 151e7b9

Please sign in to comment.