diff --git a/luminol-server/minecraft-patches/features/0052-Leaves-Revert-raid-changes.patch b/luminol-server/minecraft-patches/features/0052-Leaves-Revert-raid-changes.patch index a250913..0c33fc8 100644 --- a/luminol-server/minecraft-patches/features/0052-Leaves-Revert-raid-changes.patch +++ b/luminol-server/minecraft-patches/features/0052-Leaves-Revert-raid-changes.patch @@ -21,44 +21,83 @@ index 80f17f33f670018240c854df589cf90cdeab6e70..8672757a4d5fb5c247599782fece6b8d if (raidAt == null || raidAt.getRaidOmenLevel() < raidAt.getMaxRaidOmenLevel()) { serverPlayer.addEffect(new MobEffectInstance(MobEffects.RAID_OMEN, 600, amplifier)); diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java -index 2f45befbb50645f1bfb5961ad725f3670ff0d592..59cdf1e5166ae67a0dc8c7cb4028db7f1e450d46 100644 +index 2f45befbb50645f1bfb5961ad725f3670ff0d592..4e2ec7f7946a70b676393f090c5ce6219314c3da 100644 --- a/net/minecraft/world/entity/raid/Raid.java +++ b/net/minecraft/world/entity/raid/Raid.java -@@ -288,6 +288,24 @@ public class Raid { +@@ -109,6 +109,12 @@ public class Raid { + private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry PDC_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry(); + public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(PDC_TYPE_REGISTRY); + // Paper end ++ // Luminol Start - Raid revert ++ private boolean flagForceWin = false; ++ private boolean flag274911 = false; ++ private int freshTick = 0; ++ private int retryTimes = 0; ++ // Luminol End - Raid revert + + // Folia start - make raids thread-safe + public boolean ownsRaid() { +@@ -270,7 +276,36 @@ public class Raid { + } + + public void tick() { +- if (!this.isStopped()) { ++ // Luminol Start - Raid revert ++ if (this.flag274911) { ++ if (this.freshTick == 20) { ++ if (this.waveSpawnPos.isPresent() && !this.level.isPositionEntityTicking(this.waveSpawnPos.get())) { ++ this.waveSpawnPos = this.getValidSpawnPos(); ++ } ++ ++ BlockPos blockPos = this.waveSpawnPos.orElseGet(() -> this.findRandomSpawnPos(20)); ++ if (blockPos != null && retryTimes < 3) { ++ this.started = true; ++ this.spawnGroup(blockPos); ++ this.retryTimes = 0; ++ } else if (retryTimes == 3) { ++ this.waveSpawnPos = Optional.empty(); ++ this.groupsSpawned++; ++ this.retryTimes = 0; ++ } else { ++ this.retryTimes++; ++ } ++ if (!this.hasMoreWaves()) { ++ this.flag274911 = false; ++ this.flagForceWin = true; ++ } ++ this.freshTick = 0; ++ } else { ++ this.freshTick++; ++ } ++ return; ++ } ++ if (!this.isStopped() || this.flagForceWin) { // Luminol End - Raid revert + if (this.status == Raid.RaidStatus.ONGOING) { + boolean flag = this.active; + this.active = this.level.hasChunkAt(this.center); +@@ -288,6 +323,12 @@ public class Raid { return; } + // Luminol Start - Raid revert -+ boolean flagForceWin = false; -+ if (me.earthme.luminol.config.modules.misc.RaidChangesConfig.revert_274911) { -+ if (this.waveSpawnPos.isPresent() && this.center.distSqr(this.waveSpawnPos.get()) >= 12544) { -+ while (this.hasMoreWaves()) { -+ BlockPos blockPos = this.waveSpawnPos.orElseGet(() -> this.findRandomSpawnPos(20)); -+ if (blockPos != null) { -+ this.started = true; -+ this.spawnGroup(blockPos); -+ } else { -+ break; -+ } -+ } -+ flagForceWin = true; -+ } ++ if (me.earthme.luminol.config.modules.misc.RaidChangesConfig.revert_274911 && this.waveSpawnPos.isPresent() && this.center.distSqr(this.waveSpawnPos.get()) >= 12544) { ++ this.flag274911 = true; + } + // Luminol End - Raid revert + if (!this.level.isVillage(this.center)) { this.moveRaidCenterToNearbyVillageSection(); } -@@ -379,7 +397,7 @@ public class Raid { +@@ -379,7 +420,7 @@ public class Raid { } } - if (this.isStarted() && !this.hasMoreWaves() && totalRaidersAlive == 0) { -+ if (flagForceWin || (this.isStarted() && !this.hasMoreWaves() && totalRaidersAlive == 0)) { ++ if (this.flagForceWin || (this.isStarted() && !this.hasMoreWaves() && totalRaidersAlive == 0)) { // Luminol - Raid revert if (this.postRaidTicks < 40) { this.postRaidTicks++; } else { -@@ -674,7 +692,7 @@ public class Raid { +@@ -674,7 +715,7 @@ public class Raid { int i2 = this.center.getX() + Mth.floor(Mth.cos(f2) * 32.0F * f) + this.level.random.nextInt(3) * Mth.floor(f); int i3 = this.center.getZ() + Mth.floor(Mth.sin(f2) * 32.0F * f) + this.level.random.nextInt(3) * Mth.floor(f); int height = this.level.getHeight(Heightmap.Types.WORLD_SURFACE, i2, i3); 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 index 5a0a479..d89ed90 100644 --- 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 @@ -1,6 +1,6 @@ --- /dev/null +++ b/src/main/java/me/earthme/luminol/config/modules/misc/RaidChangesConfig.java -@@ -1,0 +_,51 @@ +@@ -1,0 +_,52 @@ +package me.earthme.luminol.config.modules.misc; + +import me.earthme.luminol.config.ConfigInfo; @@ -22,7 +22,8 @@ + + @ConfigInfo(baseName = "bad-omen-infinite", comments = + """ -+ Enable bad omen effect infinite time""") ++ Enable bad omen effect infinite time ++ --- this config is not old version's function""") + public static boolean infinite = false; + + @ConfigInfo(baseName = "skip-height-check", comments =