mirror of
https://github.com/LeavesMC/Leaves.git
synced 2025-12-19 14:59:32 +00:00
99 lines
5.3 KiB
Diff
99 lines
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: huanli233 <392352840@qq.com>
|
|
Date: Wed, 23 Oct 2024 23:10:48 +0800
|
|
Subject: [PATCH] Revert raid changes
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/effect/BadOmenMobEffect.java b/src/main/java/net/minecraft/world/effect/BadOmenMobEffect.java
|
|
index e33e8db5f24437081d2026e66c13256aa3893a15..07cdc52ad0aa3c246e1769c3dda3c17bb9a10e8b 100644
|
|
--- a/src/main/java/net/minecraft/world/effect/BadOmenMobEffect.java
|
|
+++ b/src/main/java/net/minecraft/world/effect/BadOmenMobEffect.java
|
|
@@ -22,6 +22,11 @@ class BadOmenMobEffect extends MobEffect {
|
|
&& !serverPlayer.isSpectator()
|
|
&& world.getDifficulty() != Difficulty.PEACEFUL
|
|
&& world.isVillage(serverPlayer.blockPosition())) {
|
|
+ // Leaves start - Revert raid changes
|
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.raid.allowBadOmenTriggerRaid) {
|
|
+ return world.getRaids().createOrExtendRaid(serverPlayer, serverPlayer.blockPosition()) != null;
|
|
+ }
|
|
+ // Leaves end - Revert raid changes
|
|
Raid raid = world.getRaidAt(serverPlayer.blockPosition());
|
|
if (raid == null || raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel()) {
|
|
serverPlayer.addEffect(new MobEffectInstance(MobEffects.RAID_OMEN, 600, amplifier));
|
|
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
index 9b911254b24bc77930c518a9c61916983ba72e3c..124bfe881356fcee25e8d66c18c918a4c31bafa4 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
@@ -17,8 +17,11 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|
import net.minecraft.network.syncher.SynchedEntityData;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.sounds.SoundEvent;
|
|
+import net.minecraft.util.Mth;
|
|
import net.minecraft.world.DifficultyInstance;
|
|
import net.minecraft.world.damagesource.DamageSource;
|
|
+import net.minecraft.world.effect.MobEffectInstance;
|
|
+import net.minecraft.world.effect.MobEffects;
|
|
import net.minecraft.world.entity.Entity;
|
|
import net.minecraft.world.entity.EntitySpawnReason;
|
|
import net.minecraft.world.entity.EntityType;
|
|
@@ -32,10 +35,13 @@ import net.minecraft.world.entity.ai.targeting.TargetingConditions;
|
|
import net.minecraft.world.entity.ai.util.DefaultRandomPos;
|
|
import net.minecraft.world.entity.ai.village.poi.PoiManager;
|
|
import net.minecraft.world.entity.ai.village.poi.PoiTypes;
|
|
+import net.minecraft.world.entity.animal.Wolf;
|
|
import net.minecraft.world.entity.item.ItemEntity;
|
|
import net.minecraft.world.entity.monster.AbstractIllager;
|
|
import net.minecraft.world.entity.monster.PatrollingMonster;
|
|
+import net.minecraft.world.entity.player.Player;
|
|
import net.minecraft.world.item.ItemStack;
|
|
+import net.minecraft.world.level.GameRules;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.level.ServerLevelAccessor;
|
|
import net.minecraft.world.level.pathfinder.Path;
|
|
@@ -134,6 +140,45 @@ public abstract class Raider extends PatrollingMonster {
|
|
|
|
raid.removeFromRaid(this, false);
|
|
}
|
|
+
|
|
+ // Leaves start - Revert raid changes
|
|
+ if (this.level() instanceof ServerLevel serverLevel) {
|
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.raid.giveBadOmenWhenKillPatrolLeader && this.isPatrolLeader() && raid == null && serverLevel.getRaidAt(this.blockPosition()) == null) {
|
|
+ ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
|
|
+ Player entityhuman = null;
|
|
+
|
|
+ if (entity instanceof Player) {
|
|
+ entityhuman = (Player) entity;
|
|
+ } else if (entity instanceof Wolf) {
|
|
+ Wolf entitywolf = (Wolf) entity;
|
|
+ LivingEntity entityliving = entitywolf.getOwner();
|
|
+
|
|
+ if (entitywolf.isTame() && entityliving instanceof Player) {
|
|
+ entityhuman = (Player) entityliving;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (!itemstack.isEmpty() && ItemStack.matches(itemstack, Raid.getOminousBannerInstance(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))) && entityhuman != null) {
|
|
+ MobEffectInstance mobeffect = entityhuman.getEffect(MobEffects.BAD_OMEN);
|
|
+ int i = 1;
|
|
+
|
|
+ if (mobeffect != null) {
|
|
+ i += mobeffect.getAmplifier();
|
|
+ entityhuman.removeEffectNoUpdate(MobEffects.BAD_OMEN);
|
|
+ } else {
|
|
+ --i;
|
|
+ }
|
|
+
|
|
+ i = Mth.clamp(i, 0, 4);
|
|
+ MobEffectInstance mobeffect1 = new MobEffectInstance(MobEffects.BAD_OMEN, 120000, i, false, false, true);
|
|
+
|
|
+ if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_DISABLE_RAIDS)) {
|
|
+ entityhuman.addEffect(mobeffect1, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.PATROL_CAPTAIN); // CraftBukkit
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // Leaves end - Revert raid changes
|
|
}
|
|
|
|
super.die(damageSource);
|