From 16a5f7413f8a09072b5cd46944fe0f1163118193 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sun, 26 Feb 2023 11:28:57 +0800 Subject: [PATCH] Update forge to 40.2.1 --- .../common/mixin/core/world/entity/MobMixin.java | 13 ++++++++++--- .../entity/ai/behavior/StartAttackingMixin.java | 7 +++++++ build.gradle | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java index 60f4eea5..87772940 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java @@ -21,6 +21,7 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.event.entity.living.LivingChangeTargetEvent; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.entity.CraftLivingEntity; import org.bukkit.craftbukkit.v.event.CraftEventFactory; @@ -135,9 +136,15 @@ public abstract class MobMixin extends LivingEntityMixin implements MobEntityBri livingEntity = null; } } - this.target = livingEntity; - ForgeHooks.onLivingSetAttackTarget((Mob) (Object) this, this.target); - arclight$targetSuccess = true; + var changeTargetEvent = ForgeHooks.onLivingChangeTarget((Mob) (Object) this, livingEntity, LivingChangeTargetEvent.LivingTargetType.MOB_TARGET); + if (changeTargetEvent.isCanceled()) { + this.target = changeTargetEvent.getNewTarget(); + // noinspection removal + ForgeHooks.onLivingSetAttackTarget((Mob) (Object) this, this.target); + arclight$targetSuccess = true; + } else { + arclight$targetSuccess = false; + } } public boolean setTarget(LivingEntity livingEntity, EntityTargetEvent.TargetReason reason, boolean fireEvent) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/ai/behavior/StartAttackingMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/ai/behavior/StartAttackingMixin.java index 9c879011..3133c1cc 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/ai/behavior/StartAttackingMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/ai/behavior/StartAttackingMixin.java @@ -25,7 +25,14 @@ public class StartAttackingMixin { return; } livingEntity = ((event.getTarget() != null) ? ((CraftLivingEntity) event.getTarget()).getHandle() : null); + var changeTargetEvent = net.minecraftforge.common.ForgeHooks.onLivingChangeTarget(mob, livingEntity, net.minecraftforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.BEHAVIOR_TARGET); + if (changeTargetEvent.isCanceled()) { + return; + } + livingEntity = changeTargetEvent.getNewTarget(); mob.getBrain().setMemory(MemoryModuleType.ATTACK_TARGET, livingEntity); mob.getBrain().eraseMemory(MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE); + // noinspection removal + net.minecraftforge.common.ForgeHooks.onLivingSetAttackTarget(mob, livingEntity, net.minecraftforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.BEHAVIOR_TARGET); } } diff --git a/build.gradle b/build.gradle index e8960eab..7f28d2dd 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ allprojects { ext { agpVersion = '1.23' minecraftVersion = '1.18.2' - forgeVersion = '40.1.80' + forgeVersion = '40.2.1' apiVersion = '1.4.0' toolsVersion = '1.3.+' mixinVersion = '0.8.5'