55 lines
3.2 KiB
Diff
55 lines
3.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
|
|
Date: Fri, 15 Aug 2025 02:29:30 +0800
|
|
Subject: [PATCH] Compatibility fix for Raid Revert and Cross Region Damage
|
|
Trace
|
|
|
|
|
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
|
index 88d532d11c29bd8cfe5b6b02847d960b07cf0a38..fa6ed83a69aafee57195f1b512481c401ade7b09 100644
|
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -1240,6 +1240,29 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
|
}
|
|
}
|
|
|
|
+ // Lophine Start - raid revert adapt Cross Region Damage trace
|
|
+ public boolean addEffect(MobEffectInstance effectInstance, EntityPotionEffectEvent.Cause cause, boolean fireEvent, boolean async) {
|
|
+ if (!async || ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(this)) {
|
|
+ return addEffect(effectInstance, this, cause, fireEvent);
|
|
+ } else if (fun.bm.lophine.config.modules.experiment.EntityDamageSourceTraceConfig.enabled) {
|
|
+ postToAddEffect(effectInstance, this, cause, fireEvent);
|
|
+ return true;
|
|
+ }
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ private void postToAddEffect(MobEffectInstance effectInstance, @Nullable Entity entity, EntityPotionEffectEvent.Cause cause, boolean fireEvent) {
|
|
+ if (entity != null)
|
|
+ entity.getBukkitEntity().taskScheduler.schedule((Entity nmsEntity) -> {
|
|
+ try {
|
|
+ addEffect(effectInstance, nmsEntity, cause, fireEvent);
|
|
+ } catch (Throwable ex) {
|
|
+ LOGGER.error(ex.getMessage(), ex);
|
|
+ }
|
|
+ }, null, 1L );
|
|
+ }
|
|
+ // Lophine End - raid revert adapt Cross Region Damage trace
|
|
+
|
|
public boolean canBeAffected(MobEffectInstance effectInstance) {
|
|
if (this.getType().is(EntityTypeTags.IMMUNE_TO_INFESTED)) {
|
|
return !effectInstance.is(MobEffects.INFESTED);
|
|
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
|
|
index 2b7894a4104d4cb237746a3e66d4368b6f8f3c1e..03e3290367790add702a5856aaff3be465ea548c 100644
|
|
--- a/net/minecraft/world/entity/raid/Raider.java
|
|
+++ b/net/minecraft/world/entity/raid/Raider.java
|
|
@@ -157,7 +157,7 @@ public abstract class Raider extends PatrollingMonster {
|
|
net.minecraft.world.effect.MobEffectInstance mobeffect1 = new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.BAD_OMEN, 120000, i, false, false, true);
|
|
|
|
if (serverLevel.getGameRules().get(net.minecraft.world.level.gamerules.GameRules.RAIDS)) {
|
|
- entityhuman.addEffect(mobeffect1, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.PATROL_CAPTAIN); // CraftBukkit
|
|
+ entityhuman.addEffect(mobeffect1, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.PATROL_CAPTAIN, true, fun.bm.lophine.config.modules.experiment.EntityDamageSourceTraceConfig.enabled); // Lophine - raid revert adapt Cross Region Damage trace
|
|
}
|
|
this.setPatrolLeader(false);
|
|
}
|