Skip to content

Commit fde2344

Browse files
committed
Downgrade to 1.20.6
Includes bad omen trigger fix (Bukkit bug)
1 parent 502a6dd commit fde2344

File tree

5 files changed

+78
-6
lines changed

5 files changed

+78
-6
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
group = "com.solarrabbit"
1010
version = "1.11.7"
1111
description = "LargeRaids"
12-
val mcVersion = "1.21.1"
12+
val mcVersion = "1.20.6"
1313

1414
java {
1515
// Configure the java toolchain. This allows gradle to auto-provision JDK 21 on systems that only have JDK 8 installed for example.

src/main/java/com/solarrabbit/largeraids/LargeRaids.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public final class LargeRaids extends JavaPlugin {
5555
private TriggerManager triggerManager;
5656
private VillageManager villageManager;
5757

58-
private static final String VERSION = "1.21.1";
58+
private static final String VERSION = "1.20.6";
5959

6060
@Override
6161
public void onEnable() {
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.solarrabbit.largeraids.trigger.omen;
2+
3+
import com.solarrabbit.largeraids.LargeRaids;
4+
import com.solarrabbit.largeraids.trigger.Trigger;
5+
6+
import org.bukkit.entity.Player;
7+
import org.bukkit.event.EventHandler;
8+
import org.bukkit.event.entity.EntityPotionEffectEvent;
9+
import org.bukkit.event.entity.EntityPotionEffectEvent.Cause;
10+
import org.bukkit.potion.PotionEffect;
11+
import org.bukkit.potion.PotionEffectType;
12+
13+
public class KillCaptainListener extends Trigger {
14+
private static final int DEFAULT_EFFECT_DURATION = 100 * 60 * 20;
15+
private int prevAmplifier;
16+
17+
public KillCaptainListener(LargeRaids plugin) {
18+
super(plugin);
19+
prevAmplifier = -1;
20+
}
21+
22+
/**
23+
* Handles event where server intends to apply/increase players' omen levels on
24+
* patrol captain kills.
25+
*
26+
* @param evt event described above
27+
*/
28+
@EventHandler
29+
public void onOmenIncrease(EntityPotionEffectEvent evt) {
30+
PotionEffectType type = evt.getModifiedType();
31+
if (type == null || !type.equals(PotionEffectType.BAD_OMEN))
32+
return;
33+
PotionEffect effect = evt.getOldEffect();
34+
switch (evt.getAction()) {
35+
case REMOVED:
36+
if (evt.getCause() != Cause.UNKNOWN)
37+
return;
38+
prevAmplifier = effect == null ? -1 : effect.getAmplifier();
39+
break;
40+
case ADDED:
41+
if (evt.getCause() != Cause.PATROL_CAPTAIN) // Could be added by commands or the plugin itself
42+
return;
43+
if (evt.getNewEffect().getAmplifier() == 0) // Ignore newly applied effect
44+
return;
45+
evt.setCancelled(true);
46+
Player killer = (Player) evt.getEntity();
47+
int maxAllowed = plugin.getTriggerConfig().getOmenConfig().getMaxLevel();
48+
killer.addPotionEffect(
49+
new PotionEffect(PotionEffectType.BAD_OMEN, DEFAULT_EFFECT_DURATION,
50+
Math.min(maxAllowed - 1, prevAmplifier + 1)));
51+
break;
52+
default:
53+
break;
54+
}
55+
}
56+
57+
@Override
58+
public void unregisterListener() {
59+
EntityPotionEffectEvent.getHandlerList().unregister(this);
60+
}
61+
62+
}

src/main/java/com/solarrabbit/largeraids/trigger/omen/VillageAbsorbOmenListener.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.solarrabbit.largeraids.raid.LargeRaid;
88
import com.solarrabbit.largeraids.trigger.Trigger;
99

10+
import org.bukkit.Bukkit;
1011
import org.bukkit.entity.Player;
1112
import org.bukkit.event.EventHandler;
1213
import org.bukkit.event.entity.EntityPotionEffectEvent;
@@ -17,8 +18,12 @@
1718
import org.bukkit.potion.PotionEffectType;
1819

1920
public class VillageAbsorbOmenListener extends Trigger {
21+
private final KillCaptainListener killCaptainListener;
22+
2023
public VillageAbsorbOmenListener(LargeRaids plugin) {
2124
super(plugin);
25+
killCaptainListener = new KillCaptainListener(plugin);
26+
Bukkit.getPluginManager().registerEvents(killCaptainListener, plugin);
2227
}
2328

2429
/**
@@ -32,15 +37,19 @@ public void onVanillaRaidCreation(RaidTriggerEvent evt) {
3237
return;
3338
evt.setCancelled(true);
3439
Player player = evt.getPlayer();
35-
int amplifier = player.getPotionEffect(PotionEffectType.RAID_OMEN).getAmplifier();
40+
int amplifier = player.getPotionEffect(PotionEffectType.BAD_OMEN).getAmplifier();
3641
triggerRaid(player, player.getLocation(), amplifier + 1);
42+
43+
// Bukkit is supposed to remove this effect after the event is cancelled,
44+
// but it removes RAID_OMEN only, which is probably a bug.
45+
player.removePotionEffect(PotionEffectType.BAD_OMEN);
3746
}
3847

3948
@EventHandler
4049
public void onEffectRemoval(EntityPotionEffectEvent evt) {
4150
PotionEffectType type = evt.getModifiedType();
42-
if (type == null || !type.equals(PotionEffectType.RAID_OMEN) || evt.getAction() != Action.REMOVED
43-
|| evt.getCause() != Cause.EXPIRATION)
51+
if (type == null || !type.equals(PotionEffectType.BAD_OMEN) || evt.getAction() != Action.REMOVED
52+
|| evt.getCause() != Cause.UNKNOWN)
4453
return;
4554
Set<LargeRaid> affectedLargeRaids = plugin.getRaidManager().currentRaids.stream()
4655
.filter(LargeRaid::releaseOmen).collect(Collectors.toSet());
@@ -56,6 +65,7 @@ public void onEffectRemoval(EntityPotionEffectEvent evt) {
5665
public void unregisterListener() {
5766
RaidTriggerEvent.getHandlerList().unregister(this);
5867
EntityPotionEffectEvent.getHandlerList().unregister(this);
68+
killCaptainListener.unregisterListener();
5969
}
6070

6171
private class MultipleLargeRaidReleaseOmenException extends RuntimeException {

src/main/java/com/solarrabbit/largeraids/versioned/nms/RaiderPathfindToTargetGoal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void tick() {
7474
this.changed = false;
7575
}
7676
if (!this.mob.isPathFinding()) {
77-
Vec3 posTowards = targetPos != null ? targetPos.getBottomCenter()
77+
Vec3 posTowards = targetPos != null ? Vec3.atBottomCenterOf(targetPos)
7878
: DefaultRandomPos.getPosTowards(this.mob, 15, 4, Vec3.atBottomCenterOf(
7979
currentRaid.getCenter()), (float) (Math.PI / 2));
8080
if (posTowards != null) {

0 commit comments

Comments
 (0)