Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit 219461c

Browse files
author
IceCryptonym
committed
Removes the need for cancellable in hookHandleFallDamage
1 parent 47ab4d5 commit 219461c

4 files changed

Lines changed: 31 additions & 34 deletions

File tree

patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,16 @@ public static boolean onLivingAttack(LivingEntity entity, DamageSource src, floa
8787
public static float onLivingHurt(LivingEntity entity, DamageSource src, float damage) {
8888
LivingHurtEvent event = new LivingHurtEvent(entity, src, damage);
8989
return MinecraftForge.EVENT_BUS.post(event) ? 0 : event.getAmount();
90-
}
91-
92-
public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) {
93-
LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier);
94-
return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() };
95-
}
96-
97-
public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier)
98-
{
99-
MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier));
100-
}
90+
}
91+
92+
public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) {
93+
LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier);
94+
return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() };
95+
}
96+
97+
public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) {
98+
MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier));
99+
}
101100

102101
public static Result canEntitySpawn(MobEntity entity, IWorld world, double x, double y, double z, MobSpawnerLogic spawner, SpawnType spawnType) {
103102
if (entity == null) {
@@ -191,5 +190,5 @@ public void onInitialize() {
191190
});
192191

193192
// TODO: Note: UseEntityCallback is closer to EntityInteractSpecific. We're on our own for EntityInteract.
194-
}
193+
}
195194
}

patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434

3535
@Mixin(LivingEntity.class)
3636
public class MixinLivingEntity {
37-
@Unique
38-
private float[] fallData;
37+
@Unique
38+
private float[] fallData;
3939

4040
// TODO: Forge bug: PlayerEntity calls its super, so this event gets fired twice on the client.
4141
@Inject(method = "onDeath", at = @At("HEAD"), cancellable = true)
@@ -88,13 +88,14 @@ private float hookHandleFallDamageDistance(float distance, float damageMultiplie
8888
@ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1)
8989
private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) {
9090
return fallData[1];
91-
}
91+
}
9292

9393
@Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true)
9494
private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) {
9595
LivingEntity entity = (LivingEntity) (Object) this;
9696

9797
fallData = EntityEvents.onLivingFall(entity, distance, damageMultiplier);
98+
9899
if (fallData == null) {
99100
info.cancel();
100101
}

patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939

4040
@Mixin(PlayerEntity.class)
4141
public class MixinPlayerEntity {
42-
@Shadow
43-
public PlayerAbilities abilities;
42+
@Shadow
43+
public PlayerAbilities abilities;
4444

4545
@Inject(method = "interact", at = @At("HEAD"), cancellable = true)
4646
private void hookInteractEntity(Entity entity, Hand hand, CallbackInfoReturnable<ActionResult> callback) {
@@ -104,14 +104,11 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage
104104
}
105105
}
106106

107-
@Inject(method = "handleFallDamage", at = @At("RETURN"), cancellable = true)
108-
private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) {
109-
if (!abilities.allowFlying) {
110-
info.cancel();
111-
return;
107+
@Inject(method = "handleFallDamage", at = @At("RETURN"))
108+
private void hookHandleFallDamage(float distance, float damageMultiplier) {
109+
if (abilities.allowFlying) {
110+
PlayerEntity player = (PlayerEntity) (Object) this;
111+
EntityEvents.onPlayerFall(player, distance, damageMultiplier);
112112
}
113-
114-
PlayerEntity player = (PlayerEntity) (Object) this;
115-
EntityEvents.onPlayerFall(player, distance, damageMultiplier);
116113
}
117114
}

patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,20 @@
2323

2424
/**
2525
* LivingFallEvent is fired when an Entity is set to be falling.
26-
*
26+
*
2727
* <p>This event is fired whenever an Entity is set to fall in
28-
* {@link LivingEvent#fall(float, float)}.
29-
*
30-
* For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.</p>
31-
*
28+
* {@link LivingEvent#fall(float, float)}.</p>
29+
*
30+
* <p>For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.</p>
31+
*
3232
* <p>This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.</p>
33-
*
33+
*
3434
* <p>{@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.</p>
35-
*
35+
*
3636
* <p>This event is cancellable.
3737
* If this event is cancelled, the Entity does not fall.</p>
38-
*
39-
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
38+
*
39+
* <p>This event is fired on the {@link MinecraftForge#EVENT_BUS}.</p>
4040
*/
4141
public class LivingFallEvent extends LivingEvent {
4242
private float distance;

0 commit comments

Comments
 (0)