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