From 12fa2b04e0668c5200d43d3934b4f6b0f526cf53 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 21 Jan 2020 18:05:43 +1000 Subject: [PATCH 01/13] Implements LivingFallEvent and PlayerFlyableFallEven --- .../impl/event/entity/EntityEvents.java | 16 +++- .../mixin/event/entity/MixinLivingEntity.java | 25 +++++- .../mixin/event/entity/MixinPlayerEntity.java | 15 +++- .../event/entity/living/LivingFallEvent.java | 77 +++++++++++++++++++ .../entity/player/PlayerFlyableFallEvent.java | 58 ++++++++++++++ 5 files changed, 186 insertions(+), 5 deletions(-) create mode 100644 patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java create mode 100644 patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java index b1c554ce..000046d9 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java @@ -26,7 +26,9 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingSpawnEvent; import net.minecraftforge.event.entity.living.LivingEvent; +import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.entity.player.PlayerFlyableFallEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event.Result; @@ -85,7 +87,17 @@ public static boolean onLivingAttack(LivingEntity entity, DamageSource src, floa public static float onLivingHurt(LivingEntity entity, DamageSource src, float damage) { LivingHurtEvent event = new LivingHurtEvent(entity, src, damage); return MinecraftForge.EVENT_BUS.post(event) ? 0 : event.getAmount(); - } + } + + public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) { + LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier); + return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; + } + + public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) + { + MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); + } public static Result canEntitySpawn(MobEntity entity, IWorld world, double x, double y, double z, MobSpawnerLogic spawner, SpawnType spawnType) { if (entity == null) { @@ -179,5 +191,5 @@ public void onInitialize() { }); // TODO: Note: UseEntityCallback is closer to EntityInteractSpecific. We're on our own for EntityInteract. - } + } } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java index c1633713..e94bf845 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java @@ -74,5 +74,28 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage if (damage <= 0) { info.cancel(); } - } + } + + @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.BEFORE), ordinal = 0) + private float hookHandleFallDamageDistance(float distance, float damageMultiplier) { + LivingEntity entity = (LivingEntity) (Object) this; + + return EntityEvents.onLivingFall(entity, distance, damageMultiplier)[0]; + } + + @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1) + private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) { + LivingEntity entity = (LivingEntity) (Object) this; + + return EntityEvents.onLivingFall(entity, distance, damageMultiplier)[1]; + } + + @Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true) + private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) { + LivingEntity entity = (LivingEntity) (Object) this; + + if (EntityEvents.onLivingFall(entity, distance, damageMultiplier) == null) { + info.cancel(); + } + } } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index cc4b2611..eabf74b6 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -96,6 +96,17 @@ private float hookApplyDamageForHurtEvent(float damage, DamageSource source) { private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage, CallbackInfo info) { if (damage <= 0) { info.cancel(); - } - } + } + } + + @Inject(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/LivingEntity.handleFallDamage(FF)V", shift = At.Shift.AFTER), cancellable = true) + private void hookHandleFallDamageFlyingNotAllowed(float distance, float damageMultiplier, CallbackInfo info) { + info.cancel(); + } + + @Inject(method = "handleFallDamage", at = @At("TAIL")) + private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { + PlayerEntity player = (PlayerEntity) (Object) this; + EntityEvents.onPlayerFall(player, distance, damageMultiplier); + } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java new file mode 100644 index 00000000..0e296cd5 --- /dev/null +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -0,0 +1,77 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2019, 2019 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.event.entity.living; + +import net.minecraft.entity.LivingEntity; + +/** + * LivingFallEvent is fired when an Entity is set to be falling.
+ * This event is fired whenever an Entity is set to fall in + * {@link EntityLivingBase#fall(float, float)}.
+ *
+ * This event is fired via the + * {@link ForgeHooks#onLivingFall(EntityLivingBase, float, float)}.
+ *
+ * {@link #distance} contains the distance the Entity is to fall. If this event + * is canceled, this value is set to 0.0F.
+ * This event is cancelable.
+ * If this event is canceled, the Entity does not fall.
+ *
+ * This event does not have a result. {@link HasResult}
+ *
+ * This event is fired on the {@link MinecraftForge#EVENT_BUS}. + */ +public class LivingFallEvent extends LivingEvent { + private float distance; + private float damageMultiplier; + + // For EventBus + public LivingFallEvent() { + this(null, 0, 0); + } + + public LivingFallEvent(LivingEntity entity, float distance, float damageMultiplier) { + super(entity); + + this.setDistance(distance); + this.setDamageMultiplier(damageMultiplier); + } + + public float getDistance() { + return distance; + } + + public void setDistance(float distance) { + this.distance = distance; + } + + public float getDamageMultiplier() { + return damageMultiplier; + } + + public void setDamageMultiplier(float damageMultiplier) { + this.damageMultiplier = damageMultiplier; + } + + @Override + public boolean isCancelable() { + return true; + } +} diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java new file mode 100644 index 00000000..60ba1539 --- /dev/null +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java @@ -0,0 +1,58 @@ +/* + * Minecraft Forge, Patchwork Project + * Copyright (c) 2016-2019, 2019 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.event.entity.player; + +import net.minecraft.entity.player.PlayerEntity; + +/** + * Occurs when a player falls, but is able to fly. + */ +public class PlayerFlyableFallEvent extends PlayerEvent { + private float distance; + private float multiplier; + + // For EventBus + public PlayerFlyableFallEvent() { + this(null, 0, 0); + } + + public PlayerFlyableFallEvent(PlayerEntity player, float distance, float multiplier) { + super(player); + + this.distance = distance; + this.multiplier = multiplier; + } + + public float getDistance() { + return distance; + } + + public void setDistance(float distance) { + this.distance = distance; + } + + public float getMultiplier() { + return multiplier; + } + + public void setMultiplier(float multiplier) { + this.multiplier = multiplier; + } +} From eecf8fd15e0b2f3119423714b9a47d7928c5aef8 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 21 Jan 2020 18:20:27 +1000 Subject: [PATCH 02/13] Implements LivingFallEvent and PlayerFlyableFallEvent --- .../mixin/event/entity/MixinPlayerEntity.java | 2 +- .../event/entity/living/LivingFallEvent.java | 26 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index eabf74b6..5424176e 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -104,7 +104,7 @@ private void hookHandleFallDamageFlyingNotAllowed(float distance, float damageMu info.cancel(); } - @Inject(method = "handleFallDamage", at = @At("TAIL")) + @Inject(method = "handleFallDamage", at = @At("RETURN")) private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { PlayerEntity player = (PlayerEntity) (Object) this; EntityEvents.onPlayerFall(player, distance, damageMultiplier); diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index 0e296cd5..45433fd6 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -22,20 +22,18 @@ import net.minecraft.entity.LivingEntity; /** - * LivingFallEvent is fired when an Entity is set to be falling.
- * This event is fired whenever an Entity is set to fall in - * {@link EntityLivingBase#fall(float, float)}.
- *
- * This event is fired via the - * {@link ForgeHooks#onLivingFall(EntityLivingBase, float, float)}.
- *
- * {@link #distance} contains the distance the Entity is to fall. If this event - * is canceled, this value is set to 0.0F.
- * This event is cancelable.
- * If this event is canceled, the Entity does not fall.
- *
- * This event does not have a result. {@link HasResult}
- *
+ * LivingFallEvent is fired when an Entity is set to be falling. + * + *

This event is fired whenever an Entity is set to fall in + * {@link LivingEvent#fall(float, float)}.

+ * + *

This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.

+ * + *

{@link #distance} contains the distance the Entity is to fall. If this event is canceled, this value is set to 0.0F.

+ * + *

This event is cancelable. + * If this event is canceled, the Entity does not fall.

+ * * This event is fired on the {@link MinecraftForge#EVENT_BUS}. */ public class LivingFallEvent extends LivingEvent { From a0153c5cd813027aaade1ed270c8000f41a371e4 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Mon, 27 Jan 2020 09:51:58 +1000 Subject: [PATCH 03/13] Fixes comment typos --- .../patchworkmc/mixin/event/entity/MixinPlayerEntity.java | 1 + .../minecraftforge/event/entity/living/LivingFallEvent.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index 5424176e..cd6b9f93 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -20,6 +20,7 @@ package com.patchworkmc.mixin.event.entity; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index 45433fd6..cfc537a3 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -29,10 +29,10 @@ * *

This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.

* - *

{@link #distance} contains the distance the Entity is to fall. If this event is canceled, this value is set to 0.0F.

+ *

{@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.

* - *

This event is cancelable. - * If this event is canceled, the Entity does not fall.

+ *

This event is cancellable. + * If this event is cancelled, the Entity does not fall.

* * This event is fired on the {@link MinecraftForge#EVENT_BUS}. */ From 0d5682ddd332fc275880c27534332cb19b120474 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Mon, 27 Jan 2020 10:04:27 +1000 Subject: [PATCH 04/13] Shadows abilities for one method instead of two. --- .../mixin/event/entity/MixinPlayerEntity.java | 19 ++++++++++++------- .../event/entity/living/LivingFallEvent.java | 4 +++- .../entity/player/PlayerFlyableFallEvent.java | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index cd6b9f93..8db68938 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -20,7 +20,7 @@ package com.patchworkmc.mixin.event.entity; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -30,6 +30,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.player.PlayerAbilities; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; @@ -38,6 +39,9 @@ @Mixin(PlayerEntity.class) public class MixinPlayerEntity { + @Shadow + public PlayerAbilities abilities; + @Inject(method = "interact", at = @At("HEAD"), cancellable = true) private void hookInteractEntity(Entity entity, Hand hand, CallbackInfoReturnable callback) { PlayerEntity player = (PlayerEntity) (Object) this; @@ -99,14 +103,15 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage info.cancel(); } } - - @Inject(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/LivingEntity.handleFallDamage(FF)V", shift = At.Shift.AFTER), cancellable = true) - private void hookHandleFallDamageFlyingNotAllowed(float distance, float damageMultiplier, CallbackInfo info) { - info.cancel(); - } - @Inject(method = "handleFallDamage", at = @At("RETURN")) + @Inject(method = "handleFallDamage", at = @At("RETURN"), cancellable = true) private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { + if (!abilities.allowFlying) + { + info.cancel(); + return; + } + PlayerEntity player = (PlayerEntity) (Object) this; EntityEvents.onPlayerFall(player, distance, damageMultiplier); } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index cfc537a3..da84c1e9 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -25,7 +25,9 @@ * LivingFallEvent is fired when an Entity is set to be falling. * *

This event is fired whenever an Entity is set to fall in - * {@link LivingEvent#fall(float, float)}.

+ * {@link LivingEvent#fall(float, float)}. + * + * For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.

* *

This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.

* diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java index 60ba1539..8273ca26 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java @@ -23,6 +23,7 @@ /** * Occurs when a player falls, but is able to fly. + * {@link net.minecraftforge.event.entity.living.LivingFallEvent} will be fired for players that are not able to fly. */ public class PlayerFlyableFallEvent extends PlayerEvent { private float distance; From 3ba5fd942bb9785a7a29e30e70386dbbd0f82822 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Mon, 27 Jan 2020 11:15:48 +1000 Subject: [PATCH 05/13] Changes so onLivingFall is called once instead of twice --- .../mixin/event/entity/MixinLivingEntity.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java index e94bf845..d3092c30 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java @@ -20,6 +20,7 @@ package com.patchworkmc.mixin.event.entity; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -33,6 +34,9 @@ @Mixin(LivingEntity.class) public class MixinLivingEntity { + @Unique + private float[] fallData; + // TODO: Forge bug: PlayerEntity calls its super, so this event gets fired twice on the client. @Inject(method = "onDeath", at = @At("HEAD"), cancellable = true) private void hookDeath(DamageSource source, CallbackInfo callback) { @@ -78,23 +82,20 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.BEFORE), ordinal = 0) private float hookHandleFallDamageDistance(float distance, float damageMultiplier) { - LivingEntity entity = (LivingEntity) (Object) this; - - return EntityEvents.onLivingFall(entity, distance, damageMultiplier)[0]; + return fallData[0]; } @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1) private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) { - LivingEntity entity = (LivingEntity) (Object) this; - - return EntityEvents.onLivingFall(entity, distance, damageMultiplier)[1]; + return fallData[1]; } @Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true) private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) { LivingEntity entity = (LivingEntity) (Object) this; - if (EntityEvents.onLivingFall(entity, distance, damageMultiplier) == null) { + fallData = EntityEvents.onLivingFall(entity, distance, damageMultiplier); + if (fallData == null) { info.cancel(); } } From 47ab4d5ed84f8d4d941f96eaed54a318df4c059b Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Mon, 27 Jan 2020 13:38:35 +1000 Subject: [PATCH 06/13] Clean up to be compliant with checkstyle --- .../mixin/event/entity/MixinLivingEntity.java | 42 ++++++------- .../mixin/event/entity/MixinPlayerEntity.java | 27 ++++----- .../event/entity/living/LivingFallEvent.java | 54 ++++++++--------- .../entity/player/PlayerFlyableFallEvent.java | 60 +++++++++---------- 4 files changed, 91 insertions(+), 92 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java index d3092c30..f80b9ed3 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java @@ -78,25 +78,25 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage if (damage <= 0) { info.cancel(); } - } - - @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.BEFORE), ordinal = 0) - private float hookHandleFallDamageDistance(float distance, float damageMultiplier) { - return fallData[0]; - } - - @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1) - private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) { - return fallData[1]; - } - - @Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true) - private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) { - LivingEntity entity = (LivingEntity) (Object) this; - - fallData = EntityEvents.onLivingFall(entity, distance, damageMultiplier); - if (fallData == null) { - info.cancel(); - } - } + } + + @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.BEFORE), ordinal = 0) + private float hookHandleFallDamageDistance(float distance, float damageMultiplier) { + return fallData[0]; + } + + @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1) + private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) { + return fallData[1]; + } + + @Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true) + private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) { + LivingEntity entity = (LivingEntity) (Object) this; + + fallData = EntityEvents.onLivingFall(entity, distance, damageMultiplier); + if (fallData == null) { + info.cancel(); + } + } } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index 8db68938..77eecf79 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -101,18 +101,17 @@ private float hookApplyDamageForHurtEvent(float damage, DamageSource source) { private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage, CallbackInfo info) { if (damage <= 0) { info.cancel(); - } - } - - @Inject(method = "handleFallDamage", at = @At("RETURN"), cancellable = true) - private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { - if (!abilities.allowFlying) - { - info.cancel(); - return; - } - - PlayerEntity player = (PlayerEntity) (Object) this; - EntityEvents.onPlayerFall(player, distance, damageMultiplier); - } + } + } + + @Inject(method = "handleFallDamage", at = @At("RETURN"), cancellable = true) + private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { + if (!abilities.allowFlying) { + info.cancel(); + return; + } + + PlayerEntity player = (PlayerEntity) (Object) this; + EntityEvents.onPlayerFall(player, distance, damageMultiplier); + } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index da84c1e9..a043e90f 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -39,39 +39,39 @@ * This event is fired on the {@link MinecraftForge#EVENT_BUS}. */ public class LivingFallEvent extends LivingEvent { - private float distance; - private float damageMultiplier; + private float distance; + private float damageMultiplier; - // For EventBus - public LivingFallEvent() { - this(null, 0, 0); - } + // For EventBus + public LivingFallEvent() { + this(null, 0, 0); + } - public LivingFallEvent(LivingEntity entity, float distance, float damageMultiplier) { - super(entity); + public LivingFallEvent(LivingEntity entity, float distance, float damageMultiplier) { + super(entity); - this.setDistance(distance); - this.setDamageMultiplier(damageMultiplier); - } + this.setDistance(distance); + this.setDamageMultiplier(damageMultiplier); + } - public float getDistance() { - return distance; - } + public float getDistance() { + return distance; + } - public void setDistance(float distance) { - this.distance = distance; - } + public void setDistance(float distance) { + this.distance = distance; + } - public float getDamageMultiplier() { - return damageMultiplier; - } + public float getDamageMultiplier() { + return damageMultiplier; + } - public void setDamageMultiplier(float damageMultiplier) { - this.damageMultiplier = damageMultiplier; - } + public void setDamageMultiplier(float damageMultiplier) { + this.damageMultiplier = damageMultiplier; + } - @Override - public boolean isCancelable() { - return true; - } + @Override + public boolean isCancelable() { + return true; + } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java index 8273ca26..a17bb217 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java @@ -26,34 +26,34 @@ * {@link net.minecraftforge.event.entity.living.LivingFallEvent} will be fired for players that are not able to fly. */ public class PlayerFlyableFallEvent extends PlayerEvent { - private float distance; - private float multiplier; - - // For EventBus - public PlayerFlyableFallEvent() { - this(null, 0, 0); - } - - public PlayerFlyableFallEvent(PlayerEntity player, float distance, float multiplier) { - super(player); - - this.distance = distance; - this.multiplier = multiplier; - } - - public float getDistance() { - return distance; - } - - public void setDistance(float distance) { - this.distance = distance; - } - - public float getMultiplier() { - return multiplier; - } - - public void setMultiplier(float multiplier) { - this.multiplier = multiplier; - } + private float distance; + private float multiplier; + + // For EventBus + public PlayerFlyableFallEvent() { + this(null, 0, 0); + } + + public PlayerFlyableFallEvent(PlayerEntity player, float distance, float multiplier) { + super(player); + + this.distance = distance; + this.multiplier = multiplier; + } + + public float getDistance() { + return distance; + } + + public void setDistance(float distance) { + this.distance = distance; + } + + public float getMultiplier() { + return multiplier; + } + + public void setMultiplier(float multiplier) { + this.multiplier = multiplier; + } } From 219461ca06a6d0b1b3defb65e9349f415aa5c855 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 28 Jan 2020 08:16:57 +1000 Subject: [PATCH 07/13] Removes the need for cancellable in hookHandleFallDamage --- .../impl/event/entity/EntityEvents.java | 23 +++++++++---------- .../mixin/event/entity/MixinLivingEntity.java | 7 +++--- .../mixin/event/entity/MixinPlayerEntity.java | 17 ++++++-------- .../event/entity/living/LivingFallEvent.java | 18 +++++++-------- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java index 000046d9..639cf2ec 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java @@ -87,17 +87,16 @@ public static boolean onLivingAttack(LivingEntity entity, DamageSource src, floa public static float onLivingHurt(LivingEntity entity, DamageSource src, float damage) { LivingHurtEvent event = new LivingHurtEvent(entity, src, damage); return MinecraftForge.EVENT_BUS.post(event) ? 0 : event.getAmount(); - } - - public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) { - LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier); - return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; - } - - public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) - { - MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); - } + } + + public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) { + LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier); + return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; + } + + public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) { + MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); + } public static Result canEntitySpawn(MobEntity entity, IWorld world, double x, double y, double z, MobSpawnerLogic spawner, SpawnType spawnType) { if (entity == null) { @@ -191,5 +190,5 @@ public void onInitialize() { }); // TODO: Note: UseEntityCallback is closer to EntityInteractSpecific. We're on our own for EntityInteract. - } + } } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java index f80b9ed3..f7822343 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinLivingEntity.java @@ -34,8 +34,8 @@ @Mixin(LivingEntity.class) public class MixinLivingEntity { - @Unique - private float[] fallData; + @Unique + private float[] fallData; // TODO: Forge bug: PlayerEntity calls its super, so this event gets fired twice on the client. @Inject(method = "onDeath", at = @At("HEAD"), cancellable = true) @@ -88,13 +88,14 @@ private float hookHandleFallDamageDistance(float distance, float damageMultiplie @ModifyVariable(method = "handleFallDamage", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.handleFallDamage(FF)V", shift = At.Shift.AFTER), ordinal = 1) private float hookHandleFallDamageMultiplier(float distance, float damageMultiplier) { return fallData[1]; - } + } @Inject(method = "handleFallDamage", at = @At("HEAD"), cancellable = true) private void hookHandleFallDamageCancel(float distance, float damageMultiplier, CallbackInfo info) { LivingEntity entity = (LivingEntity) (Object) this; fallData = EntityEvents.onLivingFall(entity, distance, damageMultiplier); + if (fallData == null) { info.cancel(); } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index 77eecf79..d1111579 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -39,8 +39,8 @@ @Mixin(PlayerEntity.class) public class MixinPlayerEntity { - @Shadow - public PlayerAbilities abilities; + @Shadow + public PlayerAbilities abilities; @Inject(method = "interact", at = @At("HEAD"), cancellable = true) private void hookInteractEntity(Entity entity, Hand hand, CallbackInfoReturnable callback) { @@ -104,14 +104,11 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage } } - @Inject(method = "handleFallDamage", at = @At("RETURN"), cancellable = true) - private void hookHandleFallDamage(float distance, float damageMultiplier, CallbackInfo info) { - if (!abilities.allowFlying) { - info.cancel(); - return; + @Inject(method = "handleFallDamage", at = @At("RETURN")) + private void hookHandleFallDamage(float distance, float damageMultiplier) { + if (abilities.allowFlying) { + PlayerEntity player = (PlayerEntity) (Object) this; + EntityEvents.onPlayerFall(player, distance, damageMultiplier); } - - PlayerEntity player = (PlayerEntity) (Object) this; - EntityEvents.onPlayerFall(player, distance, damageMultiplier); } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index a043e90f..fe09a1d6 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -23,20 +23,20 @@ /** * LivingFallEvent is fired when an Entity is set to be falling. - * + * *

This event is fired whenever an Entity is set to fall in - * {@link LivingEvent#fall(float, float)}. - * - * For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.

- * + * {@link LivingEvent#fall(float, float)}.

+ * + *

For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.

+ * *

This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.

- * + * *

{@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.

- * + * *

This event is cancellable. * If this event is cancelled, the Entity does not fall.

- * - * This event is fired on the {@link MinecraftForge#EVENT_BUS}. + * + *

This event is fired on the {@link MinecraftForge#EVENT_BUS}.

*/ public class LivingFallEvent extends LivingEvent { private float distance; From b3f5d4c5b74e54c8b05ca1c5a86cb6c26feff8f2 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Fri, 31 Jan 2020 23:29:21 +1000 Subject: [PATCH 08/13] Renaming & Javadoc --- .../com/patchworkmc/impl/event/entity/EntityEvents.java | 2 +- .../patchworkmc/mixin/event/entity/MixinPlayerEntity.java | 2 +- .../event/entity/living/LivingFallEvent.java | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java index 639cf2ec..c0be3744 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java @@ -94,7 +94,7 @@ public static float[] onLivingFall(LivingEntity entity, float distance, float da return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; } - public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) { + public static void onFlyablePlayerFall(PlayerEntity player, float distance, float damageMultiplier) { MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index d1111579..56de0016 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -108,7 +108,7 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage private void hookHandleFallDamage(float distance, float damageMultiplier) { if (abilities.allowFlying) { PlayerEntity player = (PlayerEntity) (Object) this; - EntityEvents.onPlayerFall(player, distance, damageMultiplier); + EntityEvents.onFlyablePlayerFall(player, distance, damageMultiplier); } } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index fe09a1d6..9e1e6cf7 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -22,10 +22,10 @@ import net.minecraft.entity.LivingEntity; /** - * LivingFallEvent is fired when an Entity is set to be falling. + * LivingFallEvent is fired when a {@link LivingEntity} is set to be falling. * - *

This event is fired whenever an Entity is set to fall in - * {@link LivingEvent#fall(float, float)}.

+ *

This event is fired whenever a {@link LivingEntity} is set to fall in + * {@link LivingEntity#fall(float, float)}.

* *

For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.

* @@ -34,7 +34,7 @@ *

{@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.

* *

This event is cancellable. - * If this event is cancelled, the Entity does not fall.

+ * If this event is cancelled, the Entity does not take fall damage.

* *

This event is fired on the {@link MinecraftForge#EVENT_BUS}.

*/ From 3f94397a3cc955018488f18244a8fec5f3c0fe38 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 11 Feb 2020 11:10:00 +1000 Subject: [PATCH 09/13] Nitpicks --- .../patchworkmc/impl/event/entity/EntityEvents.java | 2 +- .../mixin/event/entity/MixinPlayerEntity.java | 2 +- .../event/entity/living/LivingFallEvent.java | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java index 639cf2ec..c0be3744 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java @@ -94,7 +94,7 @@ public static float[] onLivingFall(LivingEntity entity, float distance, float da return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; } - public static void onPlayerFall(PlayerEntity player, float distance, float damageMultiplier) { + public static void onFlyablePlayerFall(PlayerEntity player, float distance, float damageMultiplier) { MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); } diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index d1111579..56de0016 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -108,7 +108,7 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage private void hookHandleFallDamage(float distance, float damageMultiplier) { if (abilities.allowFlying) { PlayerEntity player = (PlayerEntity) (Object) this; - EntityEvents.onPlayerFall(player, distance, damageMultiplier); + EntityEvents.onFlyablePlayerFall(player, distance, damageMultiplier); } } } diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index fe09a1d6..a753dac2 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -22,19 +22,19 @@ import net.minecraft.entity.LivingEntity; /** - * LivingFallEvent is fired when an Entity is set to be falling. + * LivingFallEvent is fired when a {@link LivingEntity} is set to be falling. * - *

This event is fired whenever an Entity is set to fall in - * {@link LivingEvent#fall(float, float)}.

+ *

This event is fired whenever a {@link LivingEntity} is set to fall in + * {@link LivingEntity#fall(float, float)}.

* *

For players that are able to fly, {@link net.minecraftforge.event.entity.player.PlayerFlyableFallEvent} will be fired instead.

* *

This event is fired via {@link com.patchworkmc.impl.event.entity.EntityEvents#onLivingFall(LivingEntity, float, float)}.

* - *

{@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.

+ *

{@link #distance} contains the distance the {@link LivingEntity} is to fall. If this event is cancelled, this value is set to 0.0F.

* *

This event is cancellable. - * If this event is cancelled, the Entity does not fall.

+ * If this event is cancelled, the {@link LivingEntity} does not take fall damage.

* *

This event is fired on the {@link MinecraftForge#EVENT_BUS}.

*/ From 4de41b8bfdf0decb8bf42b1c64b20bf9f3b37ed7 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Fri, 14 Feb 2020 17:42:50 +1000 Subject: [PATCH 10/13] Fix license dates. --- .../net/minecraftforge/event/entity/living/LivingFallEvent.java | 2 +- .../event/entity/player/PlayerFlyableFallEvent.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index a753dac2..b6539d07 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -1,6 +1,6 @@ /* * Minecraft Forge, Patchwork Project - * Copyright (c) 2016-2019, 2019 + * Copyright (c) 2016-2020, 2020 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java index a17bb217..13d994f5 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/player/PlayerFlyableFallEvent.java @@ -1,6 +1,6 @@ /* * Minecraft Forge, Patchwork Project - * Copyright (c) 2016-2019, 2019 + * Copyright (c) 2016-2020, 2019-2020 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public From 568c5bad7aea71b34ba2ef17767bb3ffb7cac53a Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Fri, 14 Feb 2020 20:30:29 +1000 Subject: [PATCH 11/13] LivingFallEvent license 2019-2020 --- .../net/minecraftforge/event/entity/living/LivingFallEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java index b6539d07..a6b91e48 100644 --- a/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java +++ b/patchwork-events-entity/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java @@ -1,6 +1,6 @@ /* * Minecraft Forge, Patchwork Project - * Copyright (c) 2016-2020, 2020 + * Copyright (c) 2016-2020, 2019-2020 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public From 5460dee88505046561f036c9b5ac949807bcdaa2 Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Mon, 17 Feb 2020 10:10:41 +1000 Subject: [PATCH 12/13] Oops. Missed a few merge conflicts. --- .../java/com/patchworkmc/impl/event/entity/EntityEvents.java | 5 ++--- .../patchworkmc/mixin/event/entity/MixinPlayerEntity.java | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java index d80a2016..cbcf225c 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/impl/event/entity/EntityEvents.java @@ -95,7 +95,6 @@ public static float onLivingHurt(LivingEntity entity, DamageSource src, float da return MinecraftForge.EVENT_BUS.post(event) ? 0 : event.getAmount(); } -<<<<<<< HEAD public static float[] onLivingFall(LivingEntity entity, float distance, float damageMultiplier) { LivingFallEvent event = new LivingFallEvent(entity, distance, damageMultiplier); return MinecraftForge.EVENT_BUS.post(event) ? null : new float[]{ event.getDistance(), event.getDamageMultiplier() }; @@ -103,11 +102,11 @@ public static float[] onLivingFall(LivingEntity entity, float distance, float da public static void onFlyablePlayerFall(PlayerEntity player, float distance, float damageMultiplier) { MinecraftForge.EVENT_BUS.post(new PlayerFlyableFallEvent(player, distance, damageMultiplier)); -======= + } + public static float onLivingDamage(LivingEntity entity, DamageSource src, float damage) { LivingDamageEvent event = new LivingDamageEvent(entity, src, damage); return MinecraftForge.EVENT_BUS.post(event) ? 0 : event.getAmount(); ->>>>>>> upstream/master } public static Result canEntitySpawn(MobEntity entity, IWorld world, double x, double y, double z, MobSpawnerLogic spawner, SpawnType spawnType) { diff --git a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java index 80dbe06b..c1397dba 100644 --- a/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java +++ b/patchwork-events-entity/src/main/java/com/patchworkmc/mixin/event/entity/MixinPlayerEntity.java @@ -104,20 +104,19 @@ private void hookApplyDamageForHurtEventCancel(DamageSource source, float damage } } -<<<<<<< HEAD @Inject(method = "handleFallDamage", at = @At("RETURN")) private void hookHandleFallDamage(float distance, float damageMultiplier) { if (abilities.allowFlying) { PlayerEntity player = (PlayerEntity) (Object) this; EntityEvents.onFlyablePlayerFall(player, distance, damageMultiplier); } -======= + } + // No shift, because we are specifically not modifying the value for this function call. @ModifyVariable(method = "applyDamage", argsOnly = true, at = @At(value = "INVOKE", target = "net/minecraft/entity/player/PlayerEntity.setAbsorptionAmount (F)V", ordinal = 0)) private float hookApplyDamageForDamageEvent(float damage, DamageSource source) { LivingEntity entity = (LivingEntity) (Object) this; return EntityEvents.onLivingDamage(entity, source, damage); ->>>>>>> upstream/master } } From 14e807e0275afb51c354f0ba9502488c0d335beb Mon Sep 17 00:00:00 2001 From: IceCryptonym Date: Tue, 18 Feb 2020 07:48:26 +1000 Subject: [PATCH 13/13] Removed .vscode and restored .gitignore --- .gitignore | 36 +++++++++++++++++++++ patchwork-events-entity/.vscode/launch.json | 27 ---------------- 2 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 .gitignore delete mode 100644 patchwork-events-entity/.vscode/launch.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b3be07d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Gradle +.gradle + +# Eclipse +.checkstyle +.classpath +.metadata +.settings +.project +*.launch +.recommenders + +# Intellij/Idea +.factorypath +.idea +*.iml +*.ipr +*.iws + +# Build artifacts +bin/ +build/ +jars/ +out/ +classes/ + +# Debug artifacts +run +*.log + +# Windows +*.db +$RECYCLE.BIN/ + +# Mac +.DS_Store diff --git a/patchwork-events-entity/.vscode/launch.json b/patchwork-events-entity/.vscode/launch.json deleted file mode 100644 index f98a7a9f..00000000 --- a/patchwork-events-entity/.vscode/launch.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "Minecraft Client", - "request": "launch", - "cwd": "${workspaceFolder}/run", - "console": "internalConsole", - "stopOnEntry": false, - "mainClass": "net.fabricmc.devlaunchinjector.Main", - "vmArgs": "-Dfabric.dli.config\u003d/home/archy/Development/patchwork-api/.gradle/loom-cache/launch.cfg -Dfabric.dli.env\u003dclient -Dfabric.dli.main\u003dnet.fabricmc.loader.launch.knot.KnotClient", - "args": "" - }, - { - "type": "java", - "name": "Minecraft Server", - "request": "launch", - "cwd": "${workspaceFolder}/run", - "console": "internalConsole", - "stopOnEntry": false, - "mainClass": "net.fabricmc.devlaunchinjector.Main", - "vmArgs": "-Dfabric.dli.config\u003d/home/archy/Development/patchwork-api/.gradle/loom-cache/launch.cfg -Dfabric.dli.env\u003dserver -Dfabric.dli.main\u003dnet.fabricmc.loader.launch.knot.KnotServer", - "args": "" - } - ] -} \ No newline at end of file