From c2a27d13298d22c147f45d6a175f308e3064e7c2 Mon Sep 17 00:00:00 2001 From: alpha Date: Sun, 10 Dec 2023 19:20:16 -0600 Subject: [PATCH 1/4] Use proper even for Struck By lighting --- .../entity/events/EntityEvents.java | 17 ++++++++++---- .../events/EntityStruckByLightningEvent.java | 22 +++++++++++++++++++ .../mixin/common/LightningBoltMixin.java | 6 ++++- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java index 670f3c8ce..6dc3de756 100644 --- a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java @@ -71,6 +71,10 @@ public Entity getEntity() { e.onEntityEnterSection(entity, packedOldPos, packedNewPos); }); + /** + * Will be removed in 1.20.2 and the new method will be renamed back to "STRUCK_BY_LIGHTING" + */ + @Deprecated(forRemoval = true) public static final Event STRUCK_BY_LIGHTING = EventFactory.createArrayBacked(LightingStrike.class, callbacks -> (entity, lightningBolt) -> { for (LightingStrike callback : callbacks) if (callback.onEntityStruckByLightning(entity, lightningBolt)) @@ -78,10 +82,10 @@ public Entity getEntity() { return false; }); - @Override - public void sendEvent() { - - } + public static final Event ENTITY_STRUCK_BY_LIGHTING = EventFactory.createArrayBacked(NewLightingStrike.class, callbacks -> event -> { + for (NewLightingStrike callback : callbacks) + callback.onEntityStruckByLightning(event); + }); @FunctionalInterface public interface EnteringSection { @@ -108,6 +112,11 @@ public interface LightingStrike { boolean onEntityStruckByLightning(Entity entity, LightningBolt bolt); } + @FunctionalInterface + public interface NewLightingStrike { + void onEntityStruckByLightning(EntityStruckByLightningEvent event); + } + @FunctionalInterface public interface Teleport { void onTeleport(EntityTeleportEvent event); diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java new file mode 100644 index 000000000..3d2416eb6 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java @@ -0,0 +1,22 @@ +package io.github.fabricators_of_create.porting_lib.entity.events; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LightningBolt; + +public class EntityStruckByLightningEvent extends EntityEvents { + private final LightningBolt lightning; + + public EntityStruckByLightningEvent(Entity entity, LightningBolt lightning) { + super(entity); + this.lightning = lightning; + } + + public LightningBolt getLightning() { + return lightning; + } + + @Override + public void sendEvent() { + ENTITY_STRUCK_BY_LIGHTING.invoker().onEntityStruckByLightning(this); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LightningBoltMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LightningBoltMixin.java index 2dfcf83f7..c7c71e021 100644 --- a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LightningBoltMixin.java +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LightningBoltMixin.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.WrapWithCondition; import io.github.fabricators_of_create.porting_lib.entity.events.EntityEvents; +import io.github.fabricators_of_create.porting_lib.entity.events.EntityStruckByLightningEvent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LightningBolt; @@ -14,6 +15,9 @@ public class LightningBoltMixin { @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;thunderHit(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LightningBolt;)V")) private boolean shouldStrikeEntity(Entity entity, ServerLevel level, LightningBolt lightningBolt) { - return !EntityEvents.STRUCK_BY_LIGHTING.invoker().onEntityStruckByLightning(entity, lightningBolt); + var event = new EntityStruckByLightningEvent(entity, lightningBolt); + event.setCanceled(EntityEvents.STRUCK_BY_LIGHTING.invoker().onEntityStruckByLightning(entity, lightningBolt)); + event.sendEvent(); + return !event.isCanceled(); } } From d6239713db3529339de953c3a263841affe702fd Mon Sep 17 00:00:00 2001 From: alpha Date: Sun, 10 Dec 2023 19:23:40 -0600 Subject: [PATCH 2/4] Add javadoc to EntityStruckByLightningEvent --- .../entity/events/EntityStruckByLightningEvent.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java index 3d2416eb6..d1b64d425 100644 --- a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityStruckByLightningEvent.java @@ -3,6 +3,16 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LightningBolt; +/** + * EntityStruckByLightningEvent is fired when an Entity is about to be struck by lightening.
+ * This event is fired whenever an EntityLightningBolt is updated to strike an Entity in + * {@link LightningBolt#tick()}.
+ *
+ * {@link #lightning} contains the instance of EntityLightningBolt attempting to strike an entity.
+ *
+ * If this event is canceled, the Entity is not struck by the lightening.
+ *
+ **/ public class EntityStruckByLightningEvent extends EntityEvents { private final LightningBolt lightning; From 533760c3f5f99ef16250a623e87d03973c0b1bcf Mon Sep 17 00:00:00 2001 From: alpha Date: Mon, 11 Dec 2023 16:38:26 -0600 Subject: [PATCH 3/4] Add ProjectileImpactEvent and deprecate ProjectileImpactCallback --- .../entity/events/EntityEvents.java | 10 ++++ .../events/ProjectileImpactCallback.java | 5 ++ .../entity/events/ProjectileImpactEvent.java | 36 +++++++++++++++ .../mixin/common/AbstractArrowMixin.java | 46 +++++++++++++++++++ .../AbstractHurtingProjectileMixin.java | 20 ++++++++ .../common/FireworkRocketEntityMixin.java | 22 +++++++++ .../entity/mixin/common/FishingHookMixin.java | 24 ++++++++++ .../entity/mixin/common/LlamaSpitMixin.java | 22 +++++++++ .../mixin/common/ShulkerBulletMixin.java | 20 ++++++++ .../common/ThrowableProjectileMixin.java | 22 +++++++++ .../resources/porting_lib_entity.mixins.json | 7 +++ 11 files changed, 234 insertions(+) create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactEvent.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractArrowMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractHurtingProjectileMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FireworkRocketEntityMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FishingHookMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LlamaSpitMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ShulkerBulletMixin.java create mode 100644 entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ThrowableProjectileMixin.java diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java index 6dc3de756..947d1f965 100644 --- a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/EntityEvents.java @@ -87,6 +87,16 @@ public Entity getEntity() { callback.onEntityStruckByLightning(event); }); + public static final Event PROJECTILE_IMPACT = EventFactory.createArrayBacked(ProjectileImpact.class, callbacks -> event -> { + for (ProjectileImpact callback : callbacks) + callback.onProjectileImpact(event); + }); + + @FunctionalInterface + public interface ProjectileImpact { + void onProjectileImpact(ProjectileImpactEvent event); + } + @FunctionalInterface public interface EnteringSection { void onEntityEnterSection(Entity entity, long packedOldPos, long packedNewPos); diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactCallback.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactCallback.java index 07384d02b..2ea994b9c 100644 --- a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactCallback.java +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactCallback.java @@ -5,6 +5,11 @@ import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.phys.HitResult; +/** + * Will be removed in 1.20.2+ + * Use {@link ProjectileImpactEvent} instead. + */ +@Deprecated(forRemoval = true) public interface ProjectileImpactCallback { Event EVENT = EventFactory.createArrayBacked(ProjectileImpactCallback.class, callbacks -> (proj, hit) -> { for (ProjectileImpactCallback callback : callbacks) { diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactEvent.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactEvent.java new file mode 100644 index 000000000..2c3a06cdf --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/events/ProjectileImpactEvent.java @@ -0,0 +1,36 @@ +package io.github.fabricators_of_create.porting_lib.entity.events; + +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.phys.HitResult; + +/** + * This event is fired when a projectile entity impacts something.
+ * This event is fired for all vanilla projectiles by Porting Lib, + * custom projectiles should fire this event and check the result in a similar fashion. + * This event is cancelable. When canceled, the impact will not be processed and the projectile will continue flying. + * Killing or other handling of the entity after event cancellation is up to the modder. + */ +public class ProjectileImpactEvent extends EntityEvents { + private final HitResult ray; + private final Projectile projectile; + + public ProjectileImpactEvent(Projectile projectile, HitResult ray) { + super(projectile); + this.ray = ray; + this.projectile = projectile; + } + + public HitResult getRayTraceResult() { + return ray; + } + + public Projectile getProjectile() { + return projectile; + } + + @Override + public void sendEvent() { +// setCanceled(ProjectileImpactCallback.EVENT.invoker().onImpact(getProjectile(), getRayTraceResult())); ProjectileImpactCallback fires for all projectiles including none vanilla + PROJECTILE_IMPACT.invoker().onProjectileImpact(this); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractArrowMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractArrowMixin.java new file mode 100644 index 000000000..eb894fda7 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractArrowMixin.java @@ -0,0 +1,46 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Share; + +import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; + +import com.llamalad7.mixinextras.sugar.ref.LocalRef; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.projectile.AbstractArrow; + +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(AbstractArrow.class) +public abstract class AbstractArrowMixin extends Entity { + public AbstractArrowMixin(EntityType variant, Level world) { + super(variant, world); + } + + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(AbstractArrow arrow, HitResult result, @Share("event") LocalRef eventRef, @Share("state") LocalBooleanRef hasImpulseState) { + ProjectileImpactEvent event = new ProjectileImpactEvent(arrow, result); + event.sendEvent(); + eventRef.set(event); + hasImpulseState.set(this.hasImpulse); + return !event.isCanceled(); + } + + @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;getPierceLevel()B")) + private byte shouldBreak(AbstractArrow instance, Operation original, @Share("event") LocalRef eventRef, @Share("state") LocalBooleanRef hasImpulseState) { + if (eventRef.get().isCanceled()) { + this.hasImpulse = hasImpulseState.get(); + return 0; + } + return original.call(instance); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractHurtingProjectileMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractHurtingProjectileMixin.java new file mode 100644 index 000000000..ecca4952b --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/AbstractHurtingProjectileMixin.java @@ -0,0 +1,20 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.phys.HitResult; + +@Mixin(AbstractHurtingProjectile.class) +public class AbstractHurtingProjectileMixin { + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractHurtingProjectile;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(AbstractHurtingProjectile projectile, HitResult result) { + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FireworkRocketEntityMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FireworkRocketEntityMixin.java new file mode 100644 index 000000000..a7239e5c7 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FireworkRocketEntityMixin.java @@ -0,0 +1,22 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.FireworkRocketEntity; +import net.minecraft.world.phys.HitResult; + +@Mixin(FireworkRocketEntity.class) +public class FireworkRocketEntityMixin { + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/FireworkRocketEntity;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(FireworkRocketEntity projectile, HitResult result) { + if (result.getType() == HitResult.Type.MISS) + return true; + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FishingHookMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FishingHookMixin.java new file mode 100644 index 000000000..0933b4913 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/FishingHookMixin.java @@ -0,0 +1,24 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.entity.projectile.FishingHook; + +import net.minecraft.world.phys.HitResult; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(FishingHook.class) +public class FishingHookMixin { + @WrapWithCondition(method = "checkCollision", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/FishingHook;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(FishingHook projectile, HitResult result) { + if (result.getType() == HitResult.Type.MISS) + return true; + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LlamaSpitMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LlamaSpitMixin.java new file mode 100644 index 000000000..3adcc8215 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/LlamaSpitMixin.java @@ -0,0 +1,22 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.LlamaSpit; +import net.minecraft.world.phys.HitResult; + +@Mixin(LlamaSpit.class) +public class LlamaSpitMixin { + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/LlamaSpit;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(LlamaSpit projectile, HitResult result) { + if (result.getType() == HitResult.Type.MISS) + return true; // NeoForge prevents any misses here, however vanilla doesn't so we keep vanilla behavior + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ShulkerBulletMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ShulkerBulletMixin.java new file mode 100644 index 000000000..5f124f924 --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ShulkerBulletMixin.java @@ -0,0 +1,20 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.ShulkerBullet; +import net.minecraft.world.phys.HitResult; + +@Mixin(ShulkerBullet.class) +public class ShulkerBulletMixin { + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/ShulkerBullet;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(ShulkerBullet projectile, HitResult result) { + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ThrowableProjectileMixin.java b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ThrowableProjectileMixin.java new file mode 100644 index 000000000..7229d912f --- /dev/null +++ b/entity/src/main/java/io/github/fabricators_of_create/porting_lib/entity/mixin/common/ThrowableProjectileMixin.java @@ -0,0 +1,22 @@ +package io.github.fabricators_of_create.porting_lib.entity.mixin.common; + +import com.llamalad7.mixinextras.injector.WrapWithCondition; + +import io.github.fabricators_of_create.porting_lib.entity.events.ProjectileImpactEvent; +import net.minecraft.world.entity.projectile.ShulkerBullet; +import net.minecraft.world.entity.projectile.ThrowableProjectile; + +import net.minecraft.world.phys.HitResult; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ThrowableProjectile.class) +public class ThrowableProjectileMixin { + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/ThrowableProjectile;onHit(Lnet/minecraft/world/phys/HitResult;)V")) + private boolean onImpact(ThrowableProjectile projectile, HitResult result) { + ProjectileImpactEvent event = new ProjectileImpactEvent(projectile, result); + event.sendEvent(); + return !event.isCanceled(); + } +} diff --git a/entity/src/main/resources/porting_lib_entity.mixins.json b/entity/src/main/resources/porting_lib_entity.mixins.json index e1f560a90..880be297d 100644 --- a/entity/src/main/resources/porting_lib_entity.mixins.json +++ b/entity/src/main/resources/porting_lib_entity.mixins.json @@ -4,6 +4,8 @@ "package": "io.github.fabricators_of_create.porting_lib.entity.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "common.AbstractArrowMixin", + "common.AbstractHurtingProjectileMixin", "common.AbstractMinecartMixin", "common.BlockBehaviourMixin", "common.BundlePacketMixin", @@ -13,10 +15,13 @@ "common.EntityAccessor", "common.EntityMixin", "common.ExperienceOrbMixin", + "common.FireworkRocketEntityMixin", + "common.FishingHookMixin", "common.ItemMixin", "common.LevelMixin", "common.LightningBoltMixin", "common.LivingEntityMixin", + "common.LlamaSpitMixin", "common.MobEffectMixin", "common.MobMixin", "common.NaturalSpawnerMixin", @@ -32,9 +37,11 @@ "common.ServerLevelMixin", "common.ServerPlayerGameModeMixin", "common.ServerPlayerMixin", + "common.ShulkerBulletMixin", "common.SlimeMixin", "common.SpreadPlayersCommandMixin", "common.TeleportCommandMixin", + "common.ThrowableProjectileMixin", "common.ThrownEnderpearlMixin", "common.TransientEntitySectionManager$CallbackMixin" ], From 41c9aacb30f43e0993c63f1da4438e1943fc6697 Mon Sep 17 00:00:00 2001 From: alpha Date: Sat, 30 Dec 2023 12:21:02 -0600 Subject: [PATCH 4/4] deprecate getWorld and add getLevel --- .../porting_lib/event/common/BlockEvents.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/base/src/main/java/io/github/fabricators_of_create/porting_lib/event/common/BlockEvents.java b/base/src/main/java/io/github/fabricators_of_create/porting_lib/event/common/BlockEvents.java index 935b898fe..b985db7b6 100644 --- a/base/src/main/java/io/github/fabricators_of_create/porting_lib/event/common/BlockEvents.java +++ b/base/src/main/java/io/github/fabricators_of_create/porting_lib/event/common/BlockEvents.java @@ -60,18 +60,24 @@ public interface AfterPlace { void afterPlace(BlockPlaceContext ctx); } - private final LevelAccessor world; + private final LevelAccessor level; private final BlockPos pos; private final BlockState state; public BlockEvents(LevelAccessor world, BlockPos pos, BlockState state) { this.pos = pos; - this.world = world; + this.level = world; this.state = state; } + public LevelAccessor getLevel() + { + return level; + } + + @Deprecated(forRemoval = true) public LevelAccessor getWorld() { - return world; + return level; } public BlockPos getPos()