diff --git a/luminol-server/minecraft-patches/features/0042-Leaves-Revert-raid-changes.patch b/luminol-server/minecraft-patches/features/0042-Leaves-Revert-raid-changes.patch new file mode 100644 index 0000000..282c432 --- /dev/null +++ b/luminol-server/minecraft-patches/features/0042-Leaves-Revert-raid-changes.patch @@ -0,0 +1,70 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Suisuroru +Date: Thu, 20 Feb 2025 23:56:44 +0800 +Subject: [PATCH] Leaves-Revert-raid-changes + + +diff --git a/net/minecraft/world/effect/BadOmenMobEffect.java b/net/minecraft/world/effect/BadOmenMobEffect.java +index 80f17f33f670018240c854df589cf90cdeab6e70..7976b9ae6688b9a07b2ad19d1af3670fe06a0b63 100644 +--- a/net/minecraft/world/effect/BadOmenMobEffect.java ++++ b/net/minecraft/world/effect/BadOmenMobEffect.java +@@ -22,6 +22,11 @@ class BadOmenMobEffect extends MobEffect { + && !serverPlayer.isSpectator() + && level.getDifficulty() != Difficulty.PEACEFUL + && level.isVillage(serverPlayer.blockPosition())) { ++ // Leaves start - Revert raid changes ++ if (me.earthme.luminol.config.modules.misc.RaidChangesConfig.trigger) { ++ return level.getRaids().createOrExtendRaid(serverPlayer, serverPlayer.blockPosition()) != null; ++ } ++ // Leaves end - Revert raid changes + Raid raidAt = level.getRaidAt(serverPlayer.blockPosition()); + if (raidAt == null || raidAt.getRaidOmenLevel() < raidAt.getMaxRaidOmenLevel()) { + serverPlayer.addEffect(new MobEffectInstance(MobEffects.RAID_OMEN, 600, amplifier)); +diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java +index 7c385baae81b9a987c0e1e4deb017884600331bc..c2afe945d6a9780ba5f8ac5d6f0b4b2d692fdd51 100644 +--- a/net/minecraft/world/entity/raid/Raider.java ++++ b/net/minecraft/world/entity/raid/Raider.java +@@ -125,6 +125,43 @@ public abstract class Raider extends PatrollingMonster { + + currentRaid.removeFromRaid(this, false); + } ++ ++ // Leaves start - Revert raid changes ++ if (this.level() instanceof ServerLevel serverLevel) { ++ if (me.earthme.luminol.config.modules.misc.RaidChangesConfig.effect && raid == null && serverLevel.getRaidAt(this.blockPosition()) == null) { ++ ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); ++ net.minecraft.world.entity.player.Player entityhuman = null; ++ if (entity instanceof net.minecraft.world.entity.player.Player player) { ++ entityhuman = player; ++ } else if (entity instanceof net.minecraft.world.entity.animal.Wolf wolf) { ++ LivingEntity entityliving = wolf.getOwner(); ++ if (wolf.isTame() && entityliving instanceof net.minecraft.world.entity.player.Player player) { ++ entityhuman = player; ++ } ++ } ++ ++ if (entityhuman != null && !itemstack.isEmpty() && this.isCaptain()) { ++ net.minecraft.world.effect.MobEffectInstance mobeffect = entityhuman.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); ++ int i = 1; ++ ++ if (mobeffect != null) { ++ i += mobeffect.getAmplifier(); ++ entityhuman.removeEffectNoUpdate(net.minecraft.world.effect.MobEffects.BAD_OMEN); ++ } else { ++ --i; ++ } ++ ++ i = net.minecraft.util.Mth.clamp(i, 0, 4); ++ 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().getBoolean(net.minecraft.world.level.GameRules.RULE_DISABLE_RAIDS)) { ++ entityhuman.addEffect(mobeffect1, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.PATROL_CAPTAIN); // CraftBukkit ++ } ++ this.setPatrolLeader(false); ++ } ++ } ++ } ++ // Leaves end - Revert raid changes + } + + super.die(cause); diff --git a/luminol-server/paper-patches/files/src/main/java/me/earthme/luminol/config/modules/misc/RaidChangesConfig.java.patch b/luminol-server/paper-patches/files/src/main/java/me/earthme/luminol/config/modules/misc/RaidChangesConfig.java.patch new file mode 100644 index 0000000..f5ab506 --- /dev/null +++ b/luminol-server/paper-patches/files/src/main/java/me/earthme/luminol/config/modules/misc/RaidChangesConfig.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/src/main/java/me/earthme/luminol/config/modules/misc/RaidChangesConfig.java +@@ -1,0 +_,23 @@ ++package me.earthme.luminol.config.modules.misc; ++ ++import me.earthme.luminol.config.ConfigInfo; ++import me.earthme.luminol.config.EnumConfigCategory; ++import me.earthme.luminol.config.IConfigModule; ++ ++public class RaidChangesConfig implements IConfigModule { ++ @ConfigInfo(baseName = "allow-bad-omen-trigger-raid") ++ public static boolean trigger = false; ++ ++ @ConfigInfo(baseName = "give-bad-omen-when-kill-patrol-leader") ++ public static boolean effect = false;; ++ ++ @Override ++ public EnumConfigCategory getCategory() { ++ return EnumConfigCategory.MISC; ++ } ++ ++ @Override ++ public String getBaseName() { ++ return "revert-raid-changes"; ++ } ++}